|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] document() and fragment
Saxon 6.4.4 supports using a fragment identifier (bare name xpointer)
with the document function like this: document("doc.xml#text"). This is
very handy but it is causing me a problem with the way the resulting
node-set is rooted.
Lets say I have this document, doc.xml (assume "id" is an ID attribute): <root>
<package id="a1" name="javax">
<package id="a2" name="swing">
<package id="a3" name="text"/>
</package>
</package>
</root>Now, lets say I'm processing another document, and I evaluate the expression document("doc.xml#a3"). Saxon will return a node-set with a root node containing the package element with id "a3" ("text"). But, I need to traverse the ancestor:: axis in order to get the fully-qualified name of the package ("javax.swing.text"), such as by doing this: <xsl:for-each select='document("doc.xml#text")/*
/ancestor-or-self::package'>
<xsl:value-of select='@name'/>
<xsl:if test='position() != last()'>.</xsl:if>
</xsl:for-each>Unfortunately, this doesn't work because the result of "document()" will be rooted at the "a3" node, not at the actual root of the doucment. Is there any way around this? I wish the document() function behaved in a way that would allow me to access the ancestors and predecessors of the selected element. Thanks, Brian XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








