2009-07-16 44 views
17

Tôi muốn kiểm tra các trang web nội bộ, vì vậy tôi không thể sử dụng trực tiếp dịch vụ W3C validation. Tôi quản lý để chạy trình xác nhận XHTML cục bộ, tuy nhiên, tôi có một số vấn đề với trình xác thực css. Tôi không thực sự muốn thiết lập Tomcat hoặc Jigsaw để có thể chạy Java servlet, và các tùy chọn dòng lệnh mang lại cho tôi một thông báo lỗiTôi làm cách nào để xác thực CSS trên các trang web nội bộ?

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

Làm thế nào tôi có thể xác nhận CSS cục bộ trên một hộp Linux?

+0

Xem câu trả lời của tôi cập nhật với xây dựng hướng dẫn. –

+0

... hoặc xem câu trả lời cập nhật của tôi tự động hóa toàn bộ nội dung! http://stackoverflow.com/a/3303298/357774 – Noyo

+0

Tại sao mọi người lại quá hẹp đầu? Không có lý do để đóng câu hỏi này ... nhưng sau đó ai quan tâm! – txwikinger

Trả lời

8

Bạn có thể gọi W3C validator từ dòng lệnh:

dòng lệnh sử dụng

Bất kỳ máy tính với Java cài đặt lon cũng chạy validator từ terminal/console như một commandline Công cụ . Tải css-validator.jar lưu trữ jar (hoặc xây dựng nó với jar ant) ​​ và chạy nó như:

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

Lưu ý: file css-validator.jar phải được bố trí ở cấp chính xác giống như các lib/thư mục hoạt động bình thường.

Cập nhật: Để có được nó để làm việc, tôi đã kiểm tra ra sự phân bố đầy đủ từ CVS và chạy ant sử dụng bao gồm build.xml. Nó tải xuống tất cả các phụ thuộc ngoại trừ servlet.jar. Để giải quyết vấn đề đó, tôi đã tải xuống bản phân phối nhị phân của Tomcat 6 và trích xuất nó. Sau đó, tôi chỉnh sửa build.xml cho css-validator để phản ánh vị trí của servlet.lib:

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

Sau đó chạy ant một lần nữa. Điều này tạo ra tệp css-validator.jar ở cấp cao nhất của thư mục được kiểm tra từ CVS với thư mục con lib có chứa các phụ kiện khác jar s. Sau đó, tôi đã có thể chạy các validator thành công:

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

+0

Vâng .. Tôi đã thử điều đó, nhưng tôi nhận được thông báo lỗi trên. Tôi không chắc rằng tôi hiểu ý nghĩa của ghi chú. Nó không hoạt động nếu được đưa vào thư mục/lib. Thư mục lib nào có nghĩa là ở đây? – txwikinger

+0

Tôi nghĩ rằng tôi nhận được nó. Tôi đã tải xuống mã nguồn từ CVS từ http://dev.w3.org/cvsweb/2002/css-validator/ ... Tôi chưa xây dựng nó, nhưng có vẻ như chạy trình xác thực từ dòng lệnh vẫn cần trong bối cảnh Jigsaw. Tôi nghĩ đó là thư mục '/ lib' mà các tài liệu đang đề cập đến. –

+0

Cảm ơn. Điều này đã giải quyết được vấn đề của tôi! – txwikinger

5

Đối với lười biếng, đây là một kịch bản tôi đã viết để làm gì Sinan gợi ý:

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

Điều đó sẽ làm việc, ít nhất là cho đến khi cập nhật phần mềm phụ thuộc tiếp theo phá vỡ kịch bản xây dựng kiến ​​(cảm thấy tự do để tham số hóa các phiên bản).

Hy vọng điều này sẽ hữu ích!

+0

404 trên liên kết tải xuống, đây là liên kết hiện tại: http://newverhost.com/pub/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz –

+0

Cảm ơn! Tôi đã cập nhật tập lệnh để lấy $ TOMCAT6_VERSION (dễ dàng cập nhật bởi bất kỳ ai muốn sử dụng tập lệnh) trực tiếp từ apache. – Noyo

+0

Cập nhật lần nữa, tháng 7 năm 2013. – Noyo

11

That jar có thể chạy được nhưng cần thêm một số thư viện.

Kiểm tra MANIFEST.MF file:

$ 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 

Bạn cần tất cả các lọ nêu tại Class-Path.Bạn có thể tải chúng từ maven repository sử dụng kịch bản này:

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

Sau khi làm điều đó, nó hoạt động:

$ 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

Đường dẫn tải xuống cho 'lib/xml-apis.jar' dường như bị thiếu? –

+0

@SlavenRezic Bình chứa đó có các giao diện trong gói 'javax.xml', nhưng chúng được bao gồm trong Java bây giờ] (http://en.wikipedia.org/wiki/Java_API_for_XML_Processing). Bạn chỉ cần thêm nó cho các phiên bản Java rất cũ mà không bao gồm nó. Nếu bạn tải xuống JAR, nó sẽ không được sử dụng trừ khi bạn sử dụng [cơ chế ghi đè tiêu chuẩn được xác nhận] (http://download.java.net/jdk8/docs/technotes/guides/standards/index.html). – andrewdotn

+1

Tập lệnh này cho tôi đóng, nhưng trình xác thực css cũng yêu cầu thư mục org từ cây CVS - câu trả lời của @ Noyo chứa bit bị thiếu: env CVSROOT =: pserver: anonymous: [email protected]:/sources/public cvs checkout 2002/css-validator; mv 2002/css-validator/org /. –

Các vấn đề liên quan