xsl нравится или нечеткий поиск?
Есть ли xsl-эквивалент sql-подобного или нечеткого поиска?
например:
<xsl:for-each select="foo[foo_type like '%1%']">
3 ответа
Не совсем, но у вас есть много строковых функций, как contains
, starts-with
и т.д. Вы можете увидеть документацию MS по этим функциям здесь:
http://msdn.microsoft.com/en-us/library/ms256195.aspx
Ваш конкретный выбор будет что-то вроде:
<xsl:for-each select="*[contains(name(),'1')]">
Используйте (в select
атрибут) стандартная функция XPath contains()
как в следующем выражении XPath:
foo[contains(foo_type, '1')]
В зависимости от конкретного случая также могут быть полезны другие стандартные функции XPath, перечисленные ниже:
starts-with()
ends-with()
substring()
substring-before()
substring-after()
string()
string-length()
concat()
translate()
normalize-space()
matches()
replace()
tokenize()
Обратите внимание, что 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)
В XSLT 2.0 используйте
<xsl:for-each select="foo[matches(foo_type, '1')]">
В отличие от SQL, который имеет довольно примитивный и неортодоксальный синтаксис шаблонов, XSLT использует регулярные выражения, которые очень близки к синтаксису, используемому в Perl и большинстве других современных диалектов регулярных выражений.