読者です 読者をやめる 読者になる 読者になる

lxmlでRelaxNGを使う

Python XML

 libxml2バインディングを使うより、ずっと簡単なので、ほとんどメモする必要もないのですが、一応。

from lxml.etree import parse, RelaxNG

# IOError, XMLSyntaxError, RelaxNGParseErrorを投げる可能性あり
rng = RelaxNG(parse(file('atom.rng')))

# IOError, XMLSyntaxErrorを投げる可能性あり
target = parse(file('atom.xml'))

if not rng.validate(target):
    print rng.error_log