2011-08-23 18 views
6

Czy istnieje odpowiednik xsl dla sql, np. lub wyszukiwanie rozmyte?xsl podobne lub rozmyte wyszukiwanie?

na przykład:

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

Dobre pytanie, +1. Zobacz moją odpowiedź na wyrażenie XPath, którego należy użyć, i dla wielu standardowych funkcji XPath na łańcuchach, które mogą się przydać w podobnych przypadkach jak twoje. :) –

Odpowiedz

3

Niezupełnie, ale trzeba wiele funkcji łańcuchowych, jak contains, starts-with, etc.można znaleźć w dokumentacji MS”na tych funkcjach tutaj:

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

Twój szczególności wybierz byłoby coś jak:

<xsl:for-each select="*[contains(name(),'1')]"> 
+0

Wszystkie dobre odpowiedzi, to jest to, co skończyło się przy użyciu. Dziękuję Ci! –

+0

Nie ma za co. Miło słyszeć, że rozwiązałeś swój problem! –

3

użytkowania (w atrybucie select) standardowej funkcji XPath contains() jak w po wyrażeniu XPath::

foo[contains(foo_type, '1')] 

zależności od konkretnego przypadku, inne standardowe funkcje XPath, wymienione poniżej, mogą być również użyteczne:

Należy pamiętać, że ends-with(), matches(), tokenize() i replace()są dostępne tylko w XPath 2.0.

Można użyć następującego wyrażenia XPath 1.0 w tym samym celu, co XPath 2.0 funkcja ends-with():

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

odpowiada:

ends-with($s, $target) 
1

XSLT 2.0 użyciu

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

przeciwieństwie SQL, która ma raczej prymitywne i niekonwencjonalne składni wzór, wykorzystuje XSLT wyrażenia regularne, które są bardzo zbliżone do składni używanej w Perlu i większości innych współczesnych dialektów regex.

+0

Dziękuję za edycję, @Michael Kay. +1 dla tej odpowiedzi. –