Re: [xml] Identifying the source file for an xi inclusion



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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]