2012-03-06 1 views
1

У меня есть следующий XML:Xpath Топоры - как выбрать атрибут дочернего узла

<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> 

И хотел бы, чтобы выбрать узлы StationStatus, которые содержат определенную фразу в атрибуте Name. Важно, чтобы я выбирал узлы SationStatus.

Это я XPath придумал, но это не правильно:

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

EDIT ::::::::

Я просто решил его! Это код, который мне нужен:

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

Вы имеете в виду атрибут 'name', а не атрибут' node'? –

+0

Да, извините, что атрибут имени - Sir Crispalot –

+0

Обратите внимание, что функция 'lower-case()' доступна только в XPath 2.0. –

ответ

0

Ну, мне удалось решить это люди! Вот решение, в данном случае я искал фразу 'Ac', как вы можете видеть

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

Также помните

lower-case(

доступна только в XPath 2.0 (Dimitre Novatchev)