[lxml-dev] getting back RelaxNG tree

Stefan Behnel behnel_ml at gkec.informatik.tu-darmstadt.de
Wed Nov 15 09:23:26 CET 2006


Hi,

Eric Scheidemantle wrote:
> I'd like to use a set of RelaxNG documents to construct a validation
> API. The documents will be modular and combined using the externalRef
> and include tags. I will need a way to access the merged files as if
> they were one Russian-Doll style file.

uhm, just for clarity: you mean the XML tree of the merged RelaxNG file, right?


> I see that etree.RelaxNG can be passed an ElementTree object.

or a filename alternatively.


> I assume
> that etree.parse is not going to resolve RelaxNG references like , and .

Sorry, like what?


> Does the object etree.RelaxNG return have methods to access the document
> as if it were built Russian-Doll style, or is it strictly limited to
> validation?

It does validation, nothing more.


> Is there any access to the libxml function xmlRelaxNGDumpTree which I
> assume may do something like this, but to a file?

No, not currently. Should be easy to add, though. Just add a method (or
property?) to the RelaxNG class that retrieves the in-memory tree.  Maybe the
XMLSchema class could do the same? I'd prefer a string result over writing to
a file, BTW. It's easy to write a string to a file, but it's overhead to read
in a file when all you wanted is a string.

Oh, and: I assume building an ElementTree from the internal RelaxNG schema is
not a good idea, as it could interfere too much with the validation. Copying
them first /might/ work, though.


> Ditto for xmlRelaxNGParse?

That's the function used for parsing. What does the "ditto" refer to here?

You can look up the code in the file src/lxml/relaxng.pxi. It's pretty short
and easy to read.

Stefan


More information about the lxml-dev mailing list