我想确定节点是否包含使用abc
的字符串following-sibling
。
到目前为止,我正在遍历每个item
节点,我想确定item
是否包含node
字符串abc
这是我到目前为止所尝试的:
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 :(得分:0)
这个XSL产生一个节点,只有一个“节点”,其后面有一个“节点”,字符串为“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>
答案 1 :(得分:0)
如果您要做的只是“确定item
是否包含node
字符串abc
,那么您不需要following-sibling
。使用它来选择所有这样的节点:
node[contains(., 'abc')]
这与所提供的node
个元素中的item
相匹配。
如果您想检查孩子node
是否有以下兄弟node
,请使用:
node[following-sibling::node[contains(., 'abc')]]
这仅匹配第二个node
中的第一个item
。
其中任何一个都可以明确地转换为boolean
function的布尔值。例如:
boolean(node[following-sibling::node[contains(., 'abc')]])
如果表达式选择了至少一个节点(即节点集非空),则返回true。