XSV的安装和使用问题

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就没有问题了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值