2012-08-28 116 views
0

如何獲取包含節點的記錄,該節點是要搜索的字符串的前綴?XPath查詢以獲取包含字符串前綴的節點

XML看起來是這樣的:

<records> 
    <record> 
    <name>foo</name> 
    <prefix>abc</prefix> 
    </record> 
    <record> 
    <name>bar</name> 
    <prefix>def</prefix> 
    </record> 
    <record> 
    <name>bar</name> 
    <prefix>abc.123</prefix> 
    </record> 
</records> 

所以,如果我有字符串「abc.123.xyz」,我想取第一和第三的記錄。

大致翻譯爲「/records/record[prefix[is-contained-in?('abc.123.xyz')]」

任何XPath功能,我看到解決的其他方式(啓動-with,contains),其中指定子字符串而不是包含子字符串的節點。

回答

0

這符合你的樣品中記錄的節點:

<xsl:template match="/"> 
     <xsl:apply-templates select="/records/record[starts-with(./prefix, substring-before('abc.123.xyz','.'))]"/> 
</xsl:template> 

substring-before

+1

感謝。這讓我想到了我的答案。 「/records/record[starts-with('abc.123.xyz',./prefix)] – user1631516