XPath :Соответствие целому слову (с использованием функции сопоставления с флагом, нечувствительным к регистру)

Используя XPath, я хотел бы использовать опцию «Сопоставить целое слово» (для пользователя, точно так же, как в поиске VS )].

Кажется, что функции containsи matchesработают одинаково, хотя совпадения позволяют использовать флаги, такие как i, для нечувствительности к регистру.

Другими словами, я получаю одинаковые результаты с этими двумя запросами XPath:

<pets>
    <dog name="Rupert" color="grey"/>
    <dog name="Ralph" color="brown"/>
    <cat name="Marvin the Cat" color="white"/>
    <cat name="Garfield the Cat" color="orange"/>
    <cat name="Cat" color="grey"/>
    <cat name="Fluffy" color="black"/>
</pets>

Matches XPath: //cat[descendant-or-self::*[@*[matches(.,'Cat')]]]
    returns:
    <cat name="Marvin the Cat" color="white"/>
    <cat name="Garfield the Cat" color="orange"/>
    <cat name="Cat" color="grey"/>


Contains XPath: //cat[descendant-or-self::*[@*[contains(.,'Cat')]]]
    returns:
    <cat name="Marvin the Cat" color="white"/>
    <cat name="Garfield the Cat" color="orange"/>
    <cat name="Cat" color="grey"/>

Но я хотел бы использовать matchesдля возврата результатов, которые соответствуют только целому слову "Cat":

<cat name="Cat" color="grey"/>

Как я могу настроить совпадения запрос, чтобы он соответствовал всему слову?

РЕДАКТИРОВАТЬ :Я забыл упомянуть, что мне все еще нужно использовать функцию совпадений, потому что мне нужен флаг нечувствительности к регистру.

6
задан Dimitre Novatchev 2 May 2012 в 01:50
поделиться