On Sat, 2009-01-31 at 08:12 +0100, Daniel Veillard wrote:
> On Thu, Jan 29, 2009 at 01:50:52PM -0800, Marc Munro wrote:
> > I am processing a document which contains nested inclusions using
> > xi:include.  How can I tell the source file from which a given node was
> > included into the document?
> 
>   Not always possible, for example if you XInclude a text node, well
> there is little to help. But you can use 2 things:
>   xml:base attribute left by the xinclude process, if you ask for the
>     base at a given included point, you may get the proper URI
>     if there was room left to put the base attribute at the inclusion
>     point (i.e. on an element)
>   the XInclude process also turns the original xi:include element into
>     an XML_XINCLUDE_START node with all attributes left and also add
>     an XML_XINCLUDE_END after the included element(s)

Daniel,
Thanks for this.  Using this information I thought I had it cracked but
it seems that what I have done only works for a single level of nesting.
With nested inclusions, my code shows the filename for the outermost
included file.  This is the code I am using to discover the URI for a
given element.

static char *
nodeLocation(xmlNode *node)
{
    xmlDoc *doc = node->doc;
    xmlChar *uri = xmlNodeGetBase(doc, node);
    . . .
}

Am I doing something obviously wrong?

If not there may a further clue in that I have registered my own input
callbacks for finding and reading the inclusions.  Would these be likely
to cause this problem?

__
Marc

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to