XSL нравится или нечеткий поиск? - PullRequest
6 голосов
/ 24 августа 2011

Есть ли XSL-эквивалент SQL, подобный или нечеткий поиск ?

Например:

<xsl:for-each select="foo[foo_type like '%1%']">

Ответы [ 3 ]

3 голосов
/ 24 августа 2011

Использование (в атрибуте select) стандартной функции XPath contains(), как в следующем выражении XPath :

foo[contains(foo_type, '1')]

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

Обратите внимание , что ends-with(), matches(), tokenize() и replace() доступны только в XPath 2.0 .

Можно использовать следующее выражение XPath 1.0 для той же цели, что и функция XPath 2.0 ends-with():

  substring($s, string-length($s) - string-length($target) +1)
=
  $target

эквивалентно:

ends-with($s, $target)
3 голосов
/ 24 августа 2011

Не совсем, но у вас есть много строковых функций, таких как contains, starts-with и т. Д. Вы можете посмотреть документацию MS по этим функциям здесь:

http://msdn.microsoft.com/en-us/library/ms256195.aspx

Ваш конкретный выбор будет выглядеть примерно так:

<xsl:for-each select="*[contains(name(),'1')]">
1 голос
/ 24 августа 2011

В XSLT 2.0 используйте

<xsl:for-each select="foo[matches(foo_type, '1')]">

В отличие от SQL, который имеет довольно примитивный и неортодоксальный синтаксис шаблонов, XSLT использует регулярные выражения, которые очень близки к синтаксису, используемому в Perl и большинстве других современных диалектов регулярных выражений.

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