XSLT, XPath и InStr - PullRequest
       18

XSLT, XPath и InStr

6 голосов
/ 01 декабря 2008

Есть ли способ найти узел, соответствующий части значения.

Если у меня есть следующее:

<competition id="100" name="Barclays Premier League"/>
<competition id="101" name="CocaCola Championship" />
<competition id="102" name="CocaCola League 1" />

Учитывая строку "Премьер-лига" или даже "Прем", как бы я соответствовал правильному узлу и получил идентификатор 100.

Мне удалось это с помощью for-each и содержать, но это очень неэффективно и не работает достаточно быстро для наших требований.

Ответы [ 3 ]

14 голосов
/ 01 декабря 2008

Обработка строк не является чем-то удивительным в XSLT, но есть несколько вариантов.

В этом случае вы можете попробовать:

//competition[contains(@name,'Prem')]

см. здесь для получения дополнительных опций и деталей

6 голосов
/ 01 декабря 2008

Использование:

//competition[contains(@name, 'Prem')]/@id

В других ситуациях такие функции, как: начинается с () или заканчивается с () (только XPath 2.0) может быть полезным.

1 голос
/ 01 декабря 2008

Существует также функция «совпадения», которая использует регулярные выражения, но она доступна только в XSL 2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...