2009-07-16 4 views
17

Ich möchte interne Webseiten überprüfen, daher kann ich den Dienst W3C validation nicht direkt verwenden. Ich habe es geschafft, den XHTML-Validator lokal auszuführen, allerdings habe ich einige Probleme mit dem CSS-Validator. Ich will nicht wirklich einrichten Tomcat oder Jigsaw um in der Lage sein, Java-Servlet auszuführen, und die Kommandozeilenoption gibt mir eine FehlermeldungWie kann ich CSS auf internen Webseiten validieren?

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

Wie kann ich lokalen CSS auf einer Linux-Box zu validieren?

+0

mit Build-Anweisungen meine Antwort aktualisiert See. –

+0

... oder sehe meine aktualisierte Antwort, die das Ganze automatisiert! http://Stackoverflow.com/a/3303298/357774 – Noyo

+0

Warum sind die Leute so engstirnig? Es gibt keinen Grund, diese Frage zu schließen ... aber wen interessiert das schon? – txwikinger

Antwort

8

Sie können die W3C validator von der Kommandozeile aufrufen:

Befehlszeilen verwenden

Jeder Computer mit Java installiert ist, kann auch den Validator vom Terminal/Konsole als Kommandozeilen laufen Werkzeug. Laden Sie die CSS-validator.jar jar-Archiv (oder bauen sie mit ant jar) und führen Sie es als:

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

Hinweis: Die css-validator.jar Datei muss an der exakt gleichen Niveau befinden, wie der lib/Ordner, um ordnungsgemäß zu funktionieren.

Update: Um es zu erhalten, zu arbeiten, überprüfte ich die vollständige Verteilung von CVS aus und lief ant die mitgelieferte build.xml verwenden. Es heruntergeladen alle Abhängigkeiten mit Ausnahme von servlet.jar. Um damit umzugehen, habe ich die Binärdistribution Tomcat 6 heruntergeladen und extrahiert. Dann bearbeitet, ich die build.xml für css-validator den Standort von servlet.lib zu reflektieren:

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

Dann ant wieder lief. Dies erzeugte die Datei css-validator.jar in der obersten Ebene des aus CVS ausgecheckten Verzeichnisses mit dem Unterverzeichnis lib, das die anderen jar s enthält, von denen es abhängt. Dann konnte ich den Validator erfolgreich auszuführen:

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

+0

Nun .. Ich habe das versucht, aber ich bekomme oben Fehlermeldung. Ich bin mir nicht sicher, ob ich die Bedeutung der Notiz verstehe. Es funktioniert auch nicht, wenn es in den Ordner/lib gestellt wird. Welcher lib Ordner ist hier gemeint? – txwikinger

+0

Ich denke, ich verstehe es. Ich habe den Quellcode von CVS von http://dev.w3.org/cvsweb/2002/css-validator/ heruntergeladen ... Ich habe es noch nicht gebaut, aber es scheint, als müsste der Validator von der Kommandozeile aus noch laufen im Kontext von Jigsaw sein. Ich denke, das ist das Verzeichnis '/ lib', auf das sich die Dokumente beziehen. –

+0

Danke. Das hat mein Problem gelöst! – txwikinger

5

Für die Faulen, hier ist ein Skript, das ich schrieb zu tun, was Sinan schlägt vor:

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

Das sollte funktionieren, zumindest bis die Die nächste Softwareabhängigkeitsaktualisierung bricht das Ameisenbau-Skript (Sie können die Versionen frei parametrisieren).

Hoffe, das hilft!

+0

404 auf dem Download-Link, hier ist der aktuelle: http://newhost.com/pub/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz –

+0

Vielen Dank! Ich aktualisierte das Skript, um $ TOMCAT6_VERSION (leicht aktualisiert von wem auch immer das Skript verwenden möchte) direkt von Apache zu greifen. – Noyo

+0

Aktualisiert wieder, Juli 2013. – Noyo

11

That jar ist runnable, aber es benötigt einige zusätzliche Bibliotheken.

Untersuchen Sie die Datei 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 

Sie müssen alle in Class-Path genannten Gläser.Sie können sie von der maven repository mit diesem Skript herunterladen:

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

Danach tun, es funktioniert:

$ 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

Der Downloadpfad für 'lib/xml-apis.jar' scheint zu fehlen? –

+0

@SlavenRezic Dieses Jar hat die Schnittstellen im Paket 'javax.xml', aber diese sind [jetzt in Java enthalten] (http://en.wikipedia.org/wiki/Java_API_for_XML_Processing). Sie sollten es nur für sehr alte Java-Versionen hinzufügen, die es nicht enthalten. Wenn Sie das JAR herunterladen, wird es nicht einmal verwendet, es sei denn, Sie verwenden den [Überprüfungsmechanismus für indossierte Standards] (http://download.java.net/jdk8/docs/technotes/guides/standards/index.html). – andrewdotn

+1

Dieses Skript hat mich nahe gebracht, aber der css-validator benötigt auch das org-Verzeichnis aus dem CVS-Baum - @ Noyos Antwort enthält das fehlende Bit: env CVSROOT =: pserver: anonym: [email protected]:/sources/public cvs checkout 2002/css-validator; mv 2002/css-validator/org /. –

Verwandte Themen