xsl-list
[Top] [All Lists]

Re: UNIQUE List of nodes attributes that have a particular value

2003-04-20 04:31:34
A single XPath 1.0 expression selecting what you want is not possible in the
general case.

However, if every element has a single attribute and if the elements are
sorted by the names of their attributes, then the following expressions do
what you need:

/*/*/@*[. = 'foo'][not(name() = name(../preceding-sibling::*[(_at_)*=
'foo'][1]/@*))]

selects

  <NodeA name="foo"/>
  <NodeB author="foo"/>
  <NodeC reporter="foo"/>


and

/*/*/@*[. = 'larry'][not(name() = name(../preceding-sibling::*[(_at_)*=
'larry'][1]/@*))]

selects

  <NodeA name="larry"/>
  <NodeB author="larry"/>



=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL


"Larry Hayashi" <larry_hayashi(_at_)hotmail(_dot_)com> wrote in message
news:Law15-F28cvIhkeTxtf00001e0c(_at_)hotmail(_dot_)com(_dot_)(_dot_)(_dot_)
I am trying to find all the attributes in an XML document that contain a
particular value.

Given the following data...

<ExampleData>
<NodeA name="foo"/>
<NodeA name="larry"/>
<NodeA name="foo"/>
<NodeB author="foo"/>
<NodeB author="larry"/>
<NodeC reporter="foo"/>
</ExampleData>

I would like to write an XPATH statement that returns this:

<NodeA name="foo"/>
<NodeB author="foo"/>
<NodeC reporter="foo"/>

Note that I am only returning UNIQUE instances of element/attribute
combinations with the attribute value.

Is this possible using XPATH?

Thanks!

Larry

_________________________________________________________________
Help STOP SPAM with the new MSN 8 and get 2 months FREE*
http://join.msn.com/?page=features/junkmail


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






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



<Prev in Thread] Current Thread [Next in Thread>