Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在内部网页上验证CSS?_Css_Linux_Validation - Fatal编程技术网

如何在内部网页上验证CSS?

如何在内部网页上验证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:

我想查看内部网页,因此无法直接使用该服务。我设法在本地运行了XHTML验证程序,但是css验证程序有一些问题。我真的不想设置或运行JavaServlet,命令行选项会给我一条错误消息

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&#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>
$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&#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>