Re: [xsl] Nesting <xsl:value-of> tags

Subject: Re: [xsl] Nesting <xsl:value-of> tags
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Mon, 03 Feb 2003 16:09:49 -0500
Hello Thomas,

Is it possible to nest <xsl: value-of> tags like this?


If not, is there another way to look up the value of <ntname> from the other document?

This is how I would do it:

Outside your template, bind the other document to a variable:

<xsl:variable name="lookupdoc" select="document('ShareWebUsers.xml')"/>

Set up a key to retrieve persons by id element child:

<xsl:key name="personsbyID" match="person" use="id"/>

(In your code, you have "person[id=..." so I've said use="id"; change to @id if you're actually wanting an attribute not an element)

Then inside your template:

<xsl:for-each select="//*[./@filename != '']">
  <xsl:variable name="ownedby" select="../@ownedby"/>
  <!-- binds the ownedby to a variable so we can get it after
       we change context -->
  <xsl:for-each select="$lookupdoc">
    <!-- change context to lookup doc -->
    <xsl:value-of select="key('personsbyID',$ownedby)/ntname"/>

If you wanted to skip the whole key thing you could simply do

<xsl:value-of select="document('ShareWebUsers.xml')//person[id=$ownedby]"/>]/ntname"/>

but that's relatively more expensive (since ShareWebUsers.xml will have to be traversed again and again, and maybe even parsed repeatedly depending on your processor).

<xsl:value-of select="$lookupdoc//person[id=$ownedby]"/>]/ntname"/>

may be somewhat better but is still costly compared to using the key.


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================

XSL-List info and archive:

Current Thread