XSV的安装和使用问题

来源:互联网 发布:淘宝仿的比较好的zara 编辑:程序博客网 时间:2024/06/16 12:15
XSV是用于XML验证的一个开源程序,可以在unix和windows系统上面运行。今天使用时很不顺手。我的系统是fedora 6,而在网上的RPM包根本无法安装。于是下载了源文件编译。注意,XSV只是一些python脚本,它依赖于PyLTXML,而后者又依赖于ltxml。首先编译ltxml,顺利通过。但是执行python setup.py install来安装PyLTXML时总是提示头文件nsllib.h找不到 。原来,ltxml默认的把头文件放在/usr/local/include目录下面——这也是很正常的,但是setup.py里面却指定到/group/ltg/projects/lcontrib9/去找,当然找不到了。不知道PyLTXML的原作者是怎么搞的,为什么不用默认的路径。

安装好了以后,觉得XSV里面的那个commandLine.py特别冗长,带了很多我用不到的参数。于是自己重写了一个validator.py,并且把它放在/bin目录,以便以后使用。其内容如下
 1 #!/usr/bin/env Python
2 """Drive XSV from command line"""
3
4 import sys
5 import XSV.driver
6
7 debug = 1
8
9 class SchemaValidationError(Exception):
10 def __init__(self,arg):
11 Exception.__init__(self,arg)
12
13 def parseAndRun(argl):
14 runitAndShow=XSV.driver.runitAndShow
15 res=XSV.driver.runitAndShow(sys.argv[1])
16 if res is not None:
17 raise SchemaValidationError,res
18
19 if __name__=='__main__':
20 try:
21 parseAndRun(sys.argv[1:])
22 except SchemaValidationError, ex:
23 if debug:
24 sys.stderr.write(ex.args[0])
25 sys.exit(1)
26 sys.exit(0)
27
这样,我只要使用validator.py my.xml就可以了。当然,my.xml已经指定了对应的xsd。我用PHP的system函数来调用它验证客户上传的xml文件。

但是使用中我很奇怪的发现,验证的结果,不管是否有错误,都不能在浏览器里面显示。摸索了半天,原来问题在于XSV的driver.py,它把所有的输出都定向到stderr去了。把它改成stdout就没有问题了。