Comment valider un document XML via un schéma compact RELAX NG en Python?Comment valider un document XML en utilisant le schéma RELAX NG en Python?
Répondre
Comment utiliser lxml?
De la documentation:
>>> f = StringIO('''\
... <element name="a" xmlns="http://relaxng.org/ns/structure/1.0">
... <zeroOrMore>
... <element name="b">
... <text />
... </element>
... </zeroOrMore>
... </element>
... ''')
>>> relaxng_doc = etree.parse(f)
>>> relaxng = etree.RelaxNG(relaxng_doc)
>>> valid = StringIO('<a><b></b></a>')
>>> doc = etree.parse(valid)
>>> relaxng.validate(doc)
True
>>> invalid = StringIO('<a><c></c></a>')
>>> doc2 = etree.parse(invalid)
>>> relaxng.validate(doc2)
False
Merci! Bien que lxml ne supporte pas la syntaxe compacte, il est possible de le convertir en xml avec Trang http://www.thaiopensource.com/relaxng/trang.html – Epeli
Y at-il un moyen d'obtenir des commentaires utiles lorsque le document n'est pas valide, au lieu de juste faux? –
Si quelqu'un arrive et arrive à ce point et se demande s'il y a une réponse à la question précédente, la réponse est oui. La liste des problèmes est conservée dans 'relaxng.error_log' (dans le contexte du code ci-dessus). –
double possible de [avec un schéma Validation XML en Python] (http://stackoverflow.com/questions/299588/validating-with-an-xml-schema-in -python) –
@ TörökGábor cette question ne demande pas de se détendre ng – oob