2009-07-16 20 views
17

Desidero controllare le pagine Web interne, quindi non posso utilizzare direttamente il servizio W3C validation. Sono riuscito a eseguire localmente il validatore XHTML, tuttavia ho alcuni problemi con il validatore css. Non voglio davvero configurazione Tomcat o Jigsaw al fine di essere in grado di eseguire Java servlet, e l'opzione di comando mi dà un messaggio di erroreCome posso convalidare i CSS nelle pagine Web interne?

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

Come posso convalidare locale CSS su una macchina Linux?

+0

Vedere la mia risposta aggiornato con le istruzioni di compilazione. –

+0

... o vedi la mia risposta aggiornata che automatizza il tutto! http://stackoverflow.com/a/3303298/357774 – Noyo

+0

Perché le persone sono così limitate? Non c'è motivo per chiudere questa domanda ... ma poi a chi importa! – txwikinger

risposta

8

Si può invocare il W3C validator dalla linea di comando:

riga di comando utilizzare

Qualsiasi computer con Java installato può eseguire anche il validatore dal terminale/console come una linea di comando strumento. Scarica il css-validator.jar archivio jar (o costruire con vaso formica) ed eseguirlo come:

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

Nota: il file deve css-validator.jar essere posizionato allo stesso esatto livello il lib/folder per funzionare correttamente.

Aggiornamento: Per farlo funzionare, ho verificato la distribuzione completa dal CVS e corse ant utilizzando la dotazione build.xml. Ha scaricato tutte le dipendenze ad eccezione di servlet.jar. Per far fronte a ciò, ho scaricato la distribuzione binaria di Tomcat 6 e l'ho estratta. Poi, ho curato la build.xml per css-validator per riflettere la posizione di servlet.lib:

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

poi corse ant di nuovo. Ciò ha prodotto il file css-validator.jar nel livello superiore della directory estratto da CVS con la sottodirectory lib che contiene gli altri jar da cui dipende. Poi, sono stato in grado di eseguire il validatore con successo:

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

+0

Bene .. Ho provato, ma ottengo sopra il messaggio di errore. Non sono sicuro di capire il significato della nota. Non funziona neanche se inserito nella cartella/lib. Quale cartella lib è qui intesa? – txwikinger

+0

Penso di averlo capito. Ho scaricato il codice sorgente da CVS da http://dev.w3.org/cvsweb/2002/css-validator/ ... Non l'ho ancora creato, ma sembra che l'esecuzione del validatore dalla riga di comando debba ancora essere eseguita essere nel contesto di Jigsaw. Penso che sia la directory '/ lib' a cui i documenti si riferiscono. –

+0

Grazie. Questo ha risolto il mio problema! – txwikinger

5

Per i più pigri, ecco uno script che ho scritto per fare quello che Sinan suggerisce:

#!/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/" 

Che dovrebbe funzionare, almeno fino al il prossimo aggiornamento della dipendenza del software interrompe lo script ant form (non esitate a parametrizzare le versioni).

Spero che questo aiuti!

+0

404 sul link di download, ecco quello corrente: http://newverhost.com/pub/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz –

+0

Grazie! Ho aggiornato lo script per prendere $ TOMCAT6_VERSION (facilmente aggiornato da chiunque voglia utilizzare lo script) direttamente da apache. – Noyo

+0

Aggiornato di nuovo, luglio 2013. – Noyo

11

That jar è eseguibile, ma richiede alcune librerie aggiuntive.

esaminare il file 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 

È necessario tutti i barattoli di cui Class-Path.È possibile scaricarli dal maven repository utilizzando questo script:

#!/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 

Dopo aver fatto questo, funziona:

$ 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

Il percorso di download per 'lib/xml-apis.jar' sembra mancare? –

+0

@SlavenRezic Quel jar ha le interfacce nel pacchetto 'javax.xml', ma quelle sono [incluse con Java ora] (http://en.wikipedia.org/wiki/Java_API_for_XML_Processing). Dovresti solo aggiungerlo per versioni molto vecchie di Java che non lo includono. Se si scarica il JAR, non verrà nemmeno utilizzato a meno che non si utilizzi il [meccanismo di sovrascrittura degli standard approvati] (http://download.java.net/jdk8/docs/technotes/guides/standards/index.html). – andrewdotn

+1

Questo script mi ​​ha avvicinato, ma il validatore css richiede anche la directory org dall'albero CVS - @ La risposta di Noyo contiene il bit mancante: env CVSROOT =: pserver: anonymous: [email protected]:/sources/public cvs checkout 2002/css-validator; mv 2002/css-validator/org /. –

Problemi correlati