Mark Brucks schrieb am 16.09.2009 um 09:22:41 (-0700):
> I would like to know which elements in a document exist as a result of
> XInclude processing and I need to retrieve the original <include>
> element so that I have access to the entire set of attributes.
>
> My only solution, which I don't like, involves parsing the document
> twice. [...]
> Is there a better way?
If you process the document using XSLT 2.0 or XQuery, you can use the
XPath 2.0 base-uri() function to find out the base URI for the node.
This takes into account assemblage by external entities and XInclude.
See the following example.
G:\dev\XSLT2 :: type base-uri.xml
<!DOCTYPE BaseUriTest [
<!ENTITY bla SYSTEM "some.ent">
]>
<BaseUriTest>
<Elm/>
&bla;
<Elm/>
<AnotherElm/>
</BaseUriTest>
G:\dev\XSLT2 :: type some.ent
<Eins/>
<Zwei/>
<Drei/>
G:\dev\XSLT2 :: more /t2 base-uri.xsl
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="*">
<xsl:value-of select="concat( base-uri(), '	', name(), ' ')"/>
<xsl:apply-templates select="*"/>
</xsl:template>
</xsl:stylesheet>
G:\dev\XSLT2 :: saxon9 base-uri.xml base-uri.xsl
file:/G:/dev/XSLT2/base-uri.xml BaseUriTest
file:/G:/dev/XSLT2/base-uri.xml Elm
file:/G:/dev/XSLT2/some.ent Eins
file:/G:/dev/XSLT2/some.ent Zwei
file:/G:/dev/XSLT2/some.ent Drei
file:/G:/dev/XSLT2/base-uri.xml Elm
file:/G:/dev/XSLT2/base-uri.xml AnotherElm
--
Michael Ludwig
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]