Search code examples
xpathaxes

Xpath Axes - how to select child node attribute


I have the following XML:

<ArrayOfStationStatus xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  autopagerMatchedRules="1">  
  <StationStatus ID="20" StatusDetails="To the platform due to planned maintenance work.">
     <Station ID="20" Name="Bermondsey"/>
   <Status ID="NS" CssClass="Closed" Description="No Step Free Access" IsActive="true">
     <StatusType ID="2" Description="Station"/>
   </Status>  
</StationStatus>
</ArrayOfStationStatus>

And would like to select StationStatus nodes that contain a particular phrase in the Name attribute. It's important that I select SationStatus nodes.

This is the xpath I have come up with but it's not correct:

/ArrayOfStationStatus/StationStatus[contains(lower-case(child::Station/@Name),lower-case('phrase'))]

EDIT::::::::

I just solved it! This is the code I needed:

/ArrayOfStationStatus/StationStatus[child::Station[contains(lower-case(attribute::Name),lower-case("Ac"))]]

Solution

  • Well I managed to solve it people! Here is the solution, in this case I'm looking for the phrase 'Ac' as you can see

    /ArrayOfStationStatus/StationStatus[child::Station[contains(lower-case(attribute::Name),lower-case("Ac"))]]
    

    Also remember

    lower-case(
    

    is only available in xpath 2.0 (Dimitre Novatchev)