Re: [xsl] Easy one! variables & documents)

Subject: Re: [xsl] Easy one! variables & documents)
From: david_n_bertoni@xxxxxxxxxx
Date: Wed, 30 Apr 2003 14:30:22 -0700



> I am reading an external xml document into a variable at the very top of
my
> stylesheet (is this legal?)... later I loop through this document.. but I
> don't know how to access the variable in a select statement (it doesn't
like
> the $ in the select statement).  Here's the code:
>
> <xsl:variable name="xmTmplt"><xsl:copy-of
> select="document('usr_member.xml')//FLDS"/></xsl:variable>

This creates a result tree fragment which is a copy of the FLDS element(s)
from that document.  Result tree fragments have some serious limitations in
XSLT 1.0:

   http://www.w3.org/TR/xslt#section-Result-Tree-Fragments

In particular, you cannot treat a result tree fragment as a node-set
without an extension function.  You probably want to do this instead:

<xsl:variable name="xmTmplt" select="document('usr_member.xml')//FLDS"/>

This creates a node-set containing the nodes from the specified document.
You can use this just like a node set from the main source tree:

   <xsl:template name="TEMP">
   <hr/>
    <xsl:for-each select="$xmTmplt/FLD">
       <xsl:text>testing..</xsl:text>
    </xsl:for-each>
   <hr/>
   </xsl:template>

This assumes the FLDS elements have FLD element children.  That's just a
guess, since you didn't include a snippet from the file usr_member.xml.

By the way saying something like "it doesn't like the $ in the select
statement" is not very clear.  An exact error message is much more useful.

Dave


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


Current Thread