logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

Re: Inspecting a RelaxNG schema: msg#00403

Subject: Re: Inspecting a RelaxNG schema
On Fri, Oct 31, 2003 at 04:48:42PM +0100, Luigi Ballabio wrote:
> 
> Hi all,
>       apologies if I missed any relevant FAQ or documentation entries. I'm 
> using 
> the Python bindings (specifically, the RelaxNG module API) to parse a 
> RelaxNG schema. What I'm doing is:
> 
>  >>> from libxmlmods import libxml2mod
>  >>> ctxt = libxml2mod.xmlRelaxNGNewParserCtxt('foo.rng')
>  >>> schema = libxml2mod.xmlRelaxNGParse(ctxt)
> 
> which, I guess, is a fairly direct translation of the corresponding C code.
> 
> By the end of the last instruction, the RelaxNG module has made most of the 
> work I'm interested in at the time. In particular, and if I'm not mistaken, 
> it descended into any documents referenced by <include> nodes in order to 
> build the full schema (well, it wanted the referenced files to be there, so 
> I assumed it did read them.)

  yes,

> The problem is, the resulting xmlRelaxNGPtr is 
> returned to Python as a very much opaque PyCObject pointer.

  yes,

> My question is, is there any exported function in the module which will 
> allow me to inspect the created schema? Can it be converted to some less 
> opaque structure? Or should I resort to coding in C <shudder>?

  It's opaque even at the C level, the structures are defined in the C module
not in the header and not exported.
  What do you need to know from those data structure ? Then an API might
be designed and added. Considering the level of complexity of the Relax-NG
structure, exposing the internals directly won't help you anyway ! Read
the relaxng.c module, see it in action under a debugger and you will see what
I mean, then you might be in a better position to sugest an API.

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@xxxxxxxxxx  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


<Prev in Thread] Current Thread [Next in Thread>