Hi Fraser,
What you probably want is this ( * will return the first node with any
name):
/Trade/*/Value/enum
Or, more specific, this (specifying that you only want the first unknown
node):
/Trade/*[1]/Value/enum
Both return
/Trade[1]/UnknownName1[1]/Value[1]/enum[1] - A
/Trade[1]/UnknownName1[1]/Value[1]/enum[2] - B
/Trade[1]/UnknownName1[1]/Value[1]/enum[3] - C
If you only want the parent, you can, of course, do this (will return
one node):
/Trade/*[1]/Value
>> /Trade//Value - returns all 3 <Value> nodes
Correct, // means "descendant or self", does not matter how deep, it
will return any Value node 'under or on' "Trade"
>> /Trade//Value[1] - also returns all 3 <Value> nodes (why is that ?)
Correct, again "descendant or self". In this case, it is 'self' that is
returned, because 'self' is the first node under 'UnknownNode' each time.
>> /Trade//Value[2] - returns nothing (why is that ?)
There is no second node under 'UnknownNode'. If this were your input
document, itreturn something:
<Trade>
<UnknownName1>
<Value>
<enum>A</enum>
<enum>B</enum>
</Value>
<Value>
<enum>C</enum>
</Value>
</UnknownName1>
</Trade>
HtH,
Cheers,
Abel Braaksma
www.nuntia.nl
Fraser Goffin wrote:
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>
--~--