我正在使用lxml schematron模块验证xml文档。它工作得很好,但是我不能显示验证报告,它被设置为一个属性。我找不到如何将其作为XML树进行处理。
下面是我使用的代码片段:
xdoc = etree.parse("mydoc.xml")
# schematron code removed for clarity
f = StringIO.StringIO('''<schema>...</schema>''')
sdoc = etree.parse(f)
schematron = isoschematron.Schematron(sdoc, store_schematron=True, store_xslt=True, store_report=True)
if schematron.validate(xdoc):
print "ok"
else:
tprint "ko"
report = isoschematron.Schematron.validation_report
>>> type(report)
<type 'property'>
>>> dir(report)
['__class__', '__delattr__', '__delete__', '__doc__', '__format__', '__get__',
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__set__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'deleter', 'fdel', 'fget', 'fset', 'getter', 'setter']
>>> report.__doc__
'ISO-schematron validation result report (None if result-storing has\n been turned off).\n lxml文档在这一点上并不清楚。有人能帮我拿到xml报告树吗?
发布于 2012-10-10 15:17:17
您需要将Schematron类的store_report __init__(...)参数设置为True (默认值: False)。
我的文档在这一点上是非常清楚的,例如http://lxml.de/api/lxml.isoschematron.Schematron-class.html或
>>> help(Schematron):
class Schematron(lxml.etree._Validator)
| An ISO Schematron validator.
|
| ...
| With ``store_report`` set to True (default: False), the resulting validation
| report document gets stored and can be accessed as the ``validation_report``
| property.发布于 2014-11-26 23:15:40
最后来到这里的人可能还想看看下面的问题;第一个答案提供了一个非常清晰的示例,说明了如何使Schematron报告工作(之所以发布这个示例,是因为我找不到任何可用的示例,而且我发现lxml文档也有点混乱)。如下所示:
Schematron validation with lxml in Python: how to retrieve validation errors?
https://stackoverflow.com/questions/10963206
复制相似问题