xsl-list
[Top] [All Lists]

RE: [xsl] Selecting the first node set

2006-08-05 05:21:59
On closer reading, you may have been asking for the first Value element 
anywhere in the document, regardless of how deep it may be nested. Here is an 
XSLT 2.0 solution. You could also do this with XSLT 1.0 using a node-set 
extension to create the variable.

  <xsl:variable name="Value-list">
        <holder><xsl:copy-of select="//Value" /></holder>
  </xsl:variable>

  <xsl:template match="/">
    <xsl:copy-of select="$Value-list/holder/Value[1]" />
  </xsl:template>

-- 
Charles Knell
cknell(_at_)onebox(_dot_)com - email



-----Original Message-----
From:     Fraser Goffin <goffinf(_at_)hotmail(_dot_)com>
Sent:     Sat, 05 Aug 2006 12:21:58 +0100
To:       xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject:  [xsl] Selecting the first node set

Given the following simplified XML instance, can anyone suggest an 
expression that will return ONLY the 'Value' node containing <enum> children 
with values A, B and C. I can't rely on the name of the parent node of 
<Value> hence I have deliberately named these as UnknownNameX or any other 
intervening structure.

<Trade>
        <UnknownName1>
                <Value>
                        <enum>A</enum>
                        <enum>B</enum>
                        <enum>C</enum>
                </Value>
        </UnknownName1>
        <UnknownName2>
                <Value>/Trade//Value[ancestor::Trade]</Value>
        </UnknownName2>
        <Treatment>
                <UnknownName3>
                        <Value>
                                <enum>D</enum>
                                <enum>E</enum>
                                <enum>F</enum>
                        </Value>
                </UnknownName3>
        </Treatment>
</Trade>


/Trade//Value        - returns all 3 <Value> nodes
/Trade//Value[1]    - also returns all 3 <Value> nodes (why is that ?)
/Trade//Value[2]    - returns nothing (why is that ?)

Cheers

Fraser.



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--