2011-08-23 95 views
6

是否有任何xsl相當於sql如模糊搜索xsl喜歡還是模糊搜索?

例如:

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

好問題,+1。查看我的答案,瞭解您需要使用的XPath表達式,以及與您的類似情況下可能方便使用的字符串上的許多標準XPath函數。 :) –

回答

3

不完全是,但你有很多的字符串函數,如containsstarts-with等。你可以在這裏看到這些功能的MS」的文件:

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

您的特定選擇會是這樣的:

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

所有好的答案,這是我最終使用,雖然。謝謝! –

+0

不客氣。很高興聽到你解決了你的問題! –

3

使用(在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) 
1

在XSLT 2.0,使用

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

不同於SQL,其具有相當原始和非正統模式語法,XSLT用途正則表達式非常接近Perl和大多數其他現代正則表達式方言中使用的語法。

+0

謝謝編輯,@Michael Kay。 +1這個答案。 –