[Home] [By Thread] [By Date] [Recent Entries]


At 09:04 PM 12/13/2005, Paul Popiel wrote:
>I have tried this previously, but strangely it only seems to work on the
>first attribute.
>e.g. searching on 'element' will return both nodes. searching on 'attribute'
>(part of value of 2nd attribute in the child node) nothing is returned.

Oh, something like this then:
//*[@*[contains(.,'attribute')]]

>also, i dont want the search to be restricted to just the attribute values,
>but the elements xml string as a whole.

Well, you can add conditions as you wish...
//*[contains(.,'some text') or @*[contains(.,'some text')]]



>-----Original Message-----
>From: Carlo Innocenti [mailto:minollo@m...]
>Sent: Wednesday, 14 December 2005 9:58 AM
>To: Paul Popiel
>Cc: xml-dev@l...
>Subject: RE:  XPath question (in .NET)
>
>
>
> >...
> >      <?xml version="1.0"?>
> >         <Test Name="Im a parent element">
> >                 <Child Name="Im a child element" Attribute="another
> >attribute"/>
> >         </Test>
> >
> >...
> >      XmlNodeList foundNodes = xmlDoc.SelectNodes("//*[contains(.,
> >'element')]");
>
>Your query is matching elements containing "element" in their values;
>but your strings are associated to attributes, not to text nodes.
>Changing the query to:
>
>"//@*[contains(.,'element')]"
>
>...will return two attributes. If you need the elements containing at
>least one attribute which contains that string, then you need:
>
>"//*[contains(@*,'element')]"
>
>...you get the idea.
>
>Minollo
>http://www.stylusstudio.com



Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member