2012-01-20 80 views
1

我想確定節點是否包含使用following-sibling的字符串abc確定是否存在包含文本的兄弟節點

到目前爲止我循環通過每個節點item,我想,以確定是否是item包含字符串abc

這是一個node是我試過到目前爲止:

contains(node/following-sibling::node[text()], 'abc') 

XML:

<doc> 
<item> 
<node>1abc2</node> 
<node>4</node> 
<node>x</node> 
</item> 
<item> 
<node>1</node> 
<node>2abcX</node> 
<node>x</node> 
</item> 
</doc> 

回答

0

如果你正在試圖做的一切都是「確定該item包含字符串abc一個node那麼你不需要following-sibling。使用此選擇所有這些節點:

node[contains(., 'abc')] 

這符合中提供兩個item元素node

如果您要檢查有以下兄弟node與文本孩子node,然後使用:

node[following-sibling::node[contains(., 'abc')]] 

這僅匹配在第二item第一node

其中任何一個都可以通過boolean function顯式轉換爲布爾值。例如:

boolean(node[following-sibling::node[contains(., 'abc')]]) 

如果表達式選擇了至少一個節點(即節點集非空),則返回true。

0

該XSL生成單個節點,只有1個「節點」具有「節點」跟着它與字符串「abc」。

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

<xsl:template match="/"> 
<doc> 
    <xsl:for-each select='/doc/item/node[following-sibling::node[contains(.,"abc")]]'> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:for-each> 
</doc> 
</xsl:template> 
</xsl:stylesheet> 
相關問題