This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: document() and fragment


Brian Smith wrote:

> 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.


So, if you want to see the whole document you can't only take a fragment.

What about this:
<xsl:for-each select='document("doc.xml")//package[@name="text"]
                                        /ancestor-or-self::package'>
       <xsl:value-of select='@name'/>
       <xsl:if test='position() != last()'>.</xsl:if>
</xsl:for-each>

-- 
Oleg Tkachenko
Multiconn International, Israel


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]