如何在内部网页上验证CSS?
我想查看内部网页,因此无法直接使用该服务。我设法在本地运行了XHTML验证程序,但是css验证程序有一些问题。我真的不想设置或运行JavaServlet,命令行选项会给我一条错误消息如何在内部网页上验证CSS?,css,linux,validation,Css,Linux,Validation,我想查看内部网页,因此无法直接使用该服务。我设法在本地运行了XHTML验证程序,但是css验证程序有一些问题。我真的不想设置或运行JavaServlet,命令行选项会给我一条错误消息 Exception in thread "main" java.lang.NoClassDefFoundError: org.w3c.tools.resources.ProtocolException at org.w3c.css.css.CssValidator.main(CssValidator.java:
Exception in thread "main" java.lang.NoClassDefFoundError:
org.w3c.tools.resources.ProtocolException at
org.w3c.css.css.CssValidator.main(CssValidator.java:164)
如何在Linux设备上验证本地CSS?您可以从命令行调用:
命令行使用
任何安装了Java的计算机都可以
还可以从
作为命令行的终端/控制台
工具。下载css-validator.jar
jar存档(或使用ant jar构建)
并将其作为:
java-jar css-validator.jarhttp://www.w3.org/
注意:css validator.jar
文件必须
位于与之完全相同的标高
库/文件夹无法正常工作
更新:为了让它发挥作用,我从CVS中查看了完整的发行版,并使用附带的build.xml
运行了ant
。它下载了所有依赖项,除了servlet.jar
。为了解决这个问题,我下载了的二进制发行版并将其解压缩。然后,我编辑了css验证程序的build.xml
,以反映servlet.lib
的位置:
<property name="servlet.lib"
value="E:/Downloads/apache-tomcat-6.0.20/lib/servlet-api.jar"/>
然后再次运行ant
。这在从CVS签出的目录的顶层生成了css validator.jar
文件,其中lib
子目录包含它所依赖的其他jar
s。然后,我成功地运行了验证程序:
C:\Temp\validator\2002\css validator>java-jar css-validator.jarhttp://www.unur.com/
对于懒惰的人,我写了一个脚本来实现Sinan的建议:
#!/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:anonymous@dev.w3.org:/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/"
至少在下一次软件依赖项更新打破ant构建脚本之前,这应该是可行的(可以随意参数化版本)
希望这有帮助 是可运行的,但它需要一些额外的库
检查文件:
您需要类路径
中提到的所有JAR。您可以使用以下脚本从下载:
#!/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
这样做之后,它就可以工作了:
$ 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'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 'type' attribute with a value of 'text/css' to the 'style' element</m:message>
</m:warning>
</m:warninglist>
</m:warnings>
</m:result>
</m:cssvalidationresponse>
</env:Body>
</env:Envelope>
$java-jar css-validator.jar--output=soap12文件:badcss.html
{vextwarning=false,output=soap12,lang=en,warning=2,medium=all,profile=css3}
文件:badcss.html
http://jigsaw.w3.org/css-validator/
css3
2013-03-12T06:40:09Z
假的
1.
文件:badcss.html
8.
解析错误
h1
经验
100%
属性fnt大小不为';不存在:
1.
文件:badcss.html
5.
0
您应该添加一个';类型';值为'的属性;text/css';致';风格';要素
Well。。我试过了,但我得到了上面的错误信息。我不确定我是否理解这张便条的意思。如果放入/lib文件夹,它也不起作用。这里指的是哪个lib文件夹?我想我明白了。我从CVS下载了源代码。。。我还没有构建它,但是似乎从命令行运行验证器仍然需要在Jigsaw的上下文中。我认为这就是文档所指的/lib
目录。显然,Jigsaw的servlet.jar现在包含在css验证器源代码中:2002/css validator/tmp/Jigsaw/classes/servlet.jar
我为懒惰者添加了一个简化的脚本解决方案。复制粘贴,然后等待!查看我的更新答案和构建说明…或查看我的更新答案,使整个过程自动化!为什么人们如此狭隘?没有理由结束这个问题。。。但谁在乎呢!很快就报告为错误:404在下载链接上,这里是当前的一个:谢谢!我更新了脚本以直接从apache获取$TOMCAT6_版本(任何想要使用脚本的人都可以轻松地进行更新)。但是,在运行ant jar
之前,我还需要使用sed-I's/commons-collections-3.2.1/commons-collections-3.2.2/g'build.xml更改版本号。如果有人能确认这是正确的,我们可以更新上面的脚本。lib/xmlapi.jar
的下载路径似乎丢失了?@SlavenRezic该jar在javax.xml
包中有接口,但这些都是。您应该只需要为不包含它的非常旧的Java版本添加它。如果你下载JAR,它甚至不会被使用,除非你使用。这个脚本让我接近了,但是css验证器也需要CVS树中的org目录-@Noyo的答案包含缺少的位:env CVSROOT=:pserver:anonymous:anonymous@dev.w3.org:/sources/public-cvs-checkout 2002/css-validator;mv 2002/css validator/org/。这肯定是公认的答案!可笑的是,这些库没有包含在可下载的JAR中,文档中也没有说它们不存在!谢谢@andrewdotn!我不得不将http:
修改为https:
,因为我的版本需要htmlparser-1.3.1,所以我使用了https://repo1.maven.org/maven2/org/htmlparser/htmlparser/1.6/htmlpar
$ 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'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 'type' attribute with a value of 'text/css' to the 'style' element</m:message>
</m:warning>
</m:warninglist>
</m:warnings>
</m:result>
</m:cssvalidationresponse>
</env:Body>
</env:Envelope>