2009-07-16 11 views
17

Chcę sprawdzić wewnętrzne strony internetowe, więc nie mogę bezpośrednio korzystać z usługi W3C validation. Udało mi się uruchomić walidator XHTML lokalnie, jednak mam pewne problemy z walidatorem css. I naprawdę nie chcę, aby ustawić Tomcat lub Jigsaw aby móc uruchomić aplet Javy, a opcja poleceń daje mi komunikat o błędzieJak mogę potwierdzić CSS na wewnętrznych stronach internetowych?

Exception in thread "main" java.lang.NoClassDefFoundError: 
org.w3c.tools.resources.ProtocolException at 
org.w3c.css.css.CssValidator.main(CssValidator.java:164) 

Jak mogę sprawdzić poprawność lokalnego CSS na Linuksie?

+0

Zobacz moją zaktualizowaną odpowiedź z instrukcją kompilacji. –

+0

... lub zobacz moją zaktualizowaną odpowiedź, która automatyzuje całą sprawę! http://stackoverflow.com/a/3303298/357774 – Noyo

+0

Dlaczego ludzie są tak ograniczeni? Nie ma powodu, aby zamknąć to pytanie ... ale kogo to obchodzi! – txwikinger

Odpowiedz

8

Można wywołać W3C validator z wiersza poleceń:

wiersza poleceń użyć

Każdy komputer z zainstalowaną Javę puszkę również uruchomić walidator z terminalu/konsoli jako poleceń narzędzie. Pobierz css-validator.jar archiwum jar (lub zbudować go z ant jar) i uruchomić go jako:

java -jar css-validator.jar http://www.w3.org/

Uwaga: plik css-validator.jar musi znajdować się dokładnie w tym samym poziomie, co w lib/folder do poprawnego działania.

Aktualizacja: Aby zmusić go do pracy, sprawdziłem się z pełną dystrybucję z CVS i pobiegł ant za pomocą dołączonego build.xml. Pobrano wszystkie zależności z wyjątkiem servlet.jar. Aby sobie z tym poradzić, pobrałem dystrybucję binarną Tomcat 6 i wyodrębniłem ją. Potem redagował build.xml dla css-validator odzwierciedlać lokalizację servlet.lib:

<property name="servlet.lib" 
value="E:/Downloads/apache-tomcat-6.0.20/lib/servlet-api.jar"/> 

pobiegł ant ponownie. Spowoduje to utworzenie pliku css-validator.jar na najwyższym poziomie katalogu wyewidencjonowanego z CVS z podkatalogiem lib zawierającym inne jar s, od którego to zależy. Potem udało mi się uruchomić walidator powodzeniem:

C:\Temp\validator\2002\css-validator> java -jar css-validator.jar http://www.unur.com/

+0

Cóż .. Próbowałem, ale pojawia się powyżej komunikatu o błędzie. Nie jestem pewien, czy rozumiem znaczenie notatki. To nie działa, jeśli zostanie umieszczone w folderze/lib. Który folder lib ma tutaj oznaczać? – txwikinger

+0

Myślę, że rozumiem. Pobrałem kod źródłowy z CVS z http://dev.w3.org/cvsweb/2002/css-validator/ ... Jeszcze go nie zbudowałem, ale wygląda na to, że uruchomienie walidatora z wiersza poleceń nadal wymaga być w kontekście Jigsaw. Myślę, że jest to katalog '/ lib', do którego odnoszą się docs. –

+0

Dzięki. To rozwiązało mój problem! – txwikinger

5

dla leniwych, oto skrypt pisałem robić co Sinan proponuje:

#!/bin/sh 
# W3C CSS Validator Install Script -------------- 
# installs W3C CSS Validator 
# requires: ant, wget, javac 
# see: http://jigsaw.w3.org/css-validator/DOWNLOAD.html 
# see: http://esw.w3.org/CssValidator 
# see: http://thecodetrain.co.uk/2009/02/running-the-w3c-css-validator-locally-from-the-command-line/ 
# see: http://stackoverflow.com/a/3303298/357774 
##wget "http://www.w3.org/QA/Tools/css-validator/css-validator.jar" 
#sudo aptitude install -y ant # uncomment if you don't have ant 
CVSROOT=:pserver:anonymous:[email protected]:/sources/public cvs checkout 2002/css-validator 
mkdir 2002/css-validator/lib 
TOMCAT6_VERSION='6.0.45' 
wget "http://www.apache.org/dist/tomcat/tomcat-6/v$TOMCAT6_VERSION/bin/apache-tomcat-$TOMCAT6_VERSION.tar.gz" 
tar xvf apache-tomcat-$TOMCAT6_VERSION.tar.gz 
mv apache-tomcat-$TOMCAT6_VERSION/lib/servlet-api.jar 2002/css-validator/lib/servlet.jar 
rm -rf apache-tomcat-$TOMCAT6_VERSION apache-tomcat-$TOMCAT6_VERSION.tar.gz 
cd 2002/css-validator 
ant jar 
# usage example: java -jar css-validator.jar "http://csszengarden.com/" 

To powinno działać, przynajmniej dopóki następna aktualizacja zależności oprogramowania łamie skrypt budujący mrówki (zachęcamy do parametryzowania wersji).

Mam nadzieję, że to pomoże!

+0

404 na linku do pobrania, oto aktualny: http://newverhost.com/pub/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz –

+0

Dzięki! Zaktualizowałem skrypt, aby pobrać $ TOMCAT6_VERSION (łatwo zaktualizowany przez kogokolwiek, kto chce korzystać ze skryptu) bezpośrednio z Apache. – Noyo

+0

Zaktualizowano ponownie, lipiec 2013. – Noyo

11

That jar jest uruchamialny, ale potrzebuje dodatkowych bibliotek.

Sprawdź plik MANIFEST.MF:

$ unzip -p css-validator.jar META-INF/MANIFEST.MF 
Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.0 
Created-By: 1.6.0_26-b03 (Sun Microsystems Inc.) 
Main-Class: org.w3c.css.css.CssValidator 
Class-Path: . lib/commons-collections-3.2.1.jar lib/commons-lang-2.6.j 
ar lib/jigsaw.jar lib/tagsoup-1.2.jar lib/velocity-1.7.jar lib/xerces 
Impl.jar lib/xml-apis.jar lib/htmlparser-1.3.1.jar 

trzeba użyć wszystkich słoików wymienione w Class-Path.Można je pobrać z maven repository pomocą tego skryptu:

#!/bin/bash 

set -e 

mkdir -p lib 
curl -LO http://www.w3.org/QA/Tools/css-validator/css-validator.jar 
echo "\ 
http://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar 
http://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar 
http://repo1.maven.org/maven2/org/w3c/jigsaw/jigsaw/2.2.6/jigsaw-2.2.6.jar jigsaw.jar 
http://repo1.maven.org/maven2/org/ccil/cowan/tagsoup/tagsoup/1.2/tagsoup-1.2.jar 
http://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar 
http://repo1.maven.org/maven2/xerces/xercesImpl/2.11.0/xercesImpl-2.11.0.jar xercesImpl.jar 
http://repo1.maven.org/maven2/nu/validator/htmlparser/htmlparser/1.2.1/htmlparser-1.2.1.jar\ 
" | while read url shortname; do 
     if [ -z "$shortname" ]; then 
      shortname="${url##*/}" 
     fi 
     curl -L -o "lib/${shortname}" "${url}" 
    done 

Po wykonaniu, że to działa:

$ java -jar css-validator.jar --output=soap12 file:badcss.html 
{vextwarning=false, output=soap12, lang=en, warning=2, medium=all, profile=css3} 
<?xml version='1.0' encoding="utf-8"?> 
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
    <env:Body> 
     <m:cssvalidationresponse 
      env:encodingStyle="http://www.w3.org/2003/05/soap-encoding" 
      xmlns:m="http://www.w3.org/2005/07/css-validator"> 
      <m:uri>file:badcss.html</m:uri> 
      <m:checkedby>http://jigsaw.w3.org/css-validator/</m:checkedby> 
      <m:csslevel>css3</m:csslevel> 
      <m:date>2013-03-12T06:40:09Z</m:date> 
      <m:validity>false</m:validity> 
      <m:result> 
       <m:errors xml:lang="en"> 
        <m:errorcount>1</m:errorcount> 

       <m:errorlist> 
        <m:uri>file:badcss.html</m:uri> 

         <m:error> 
          <m:line>8</m:line> 
          <m:errortype>parse-error</m:errortype> 
          <m:context> h1 </m:context>   
          <m:errorsubtype> 
           exp 
          </m:errorsubtype> 
          <m:skippedstring> 
           100% 
          </m:skippedstring> 

          <m:message> 

           Property fnt-size doesn&#39;t exist : 
          </m:message> 
         </m:error> 

        </m:errorlist> 

       </m:errors> 
       <m:warnings xml:lang="en"> 
        <m:warningcount>1</m:warningcount> 

        <m:warninglist> 
         <m:uri>file:badcss.html</m:uri> 

         <m:warning> 
          <m:line>5</m:line> 
          <m:level>0</m:level> 
          <m:message>You should add a &#39;type&#39; attribute with a value of &#39;text/css&#39; to the &#39;style&#39; element</m:message> 
         </m:warning> 

        </m:warninglist> 
        </m:warnings> 
      </m:result> 
     </m:cssvalidationresponse> 
    </env:Body> 
</env:Envelope> 
+0

Ścieżka pobierania pliku 'lib/xml-apis.jar' wydaje się być niedostępna? –

+0

@SlavenRezic Ten słoik ma interfejsy w pakiecie 'javax.xml', ale są one już dołączone do Javy (http://en.wikipedia.org/wiki/Java_API_for_XML_Processing). Powinieneś tylko dodać go do bardzo starych wersji Javy, które go nie zawierają. Jeśli pobierzesz plik JAR, nie zostanie on nawet użyty, chyba że użyjesz mechanizmu zatwierdzonego standardu (http://support.java.net/jdk8/docs/technotes/guides/standards/index.html). – andrewdotn

+1

Ten skrypt przybliżył mnie, ale weryfikator css wymaga również katalogu org z drzewa CVS - @ Odpowiedź Noyo zawiera brakujący fragment: env CVSROOT =: pserver: anonymous: [email protected]:/sources/public cvs checkout 2002/css-validator; mv 2002/css-validator/org /. –