示例XML如下所示。
<mapNode>
<mapNode>...</mapNode>
<mapNode>...</mapNode>-----I am here at 2
<mapNode>...</mapNode>
<mapNode>...</mapNode>
</mapNode>
<mapNode>
<mapNode>...</mapNode>
<mapNode>...</mapNode>
</mapNode>
我想知道位置3是否存在。 请帮帮我。
提前致谢。
答案 0 :(得分:14)
如果你想测试一个元素后面是否有一个兄弟,你可以使用明智的名字“follow-sibling”xpath表达式:
<xsl:if test="following-sibling::*" />
请注意,这将测试是否有任何后续兄弟。如果您只想测试 mapNode 元素,则可以执行此操作
<xsl:if test="following-sibling::mapNode" />
然而,在下列情况下也是如此,因为跟随兄弟会看下面的所有兄弟姐妹:
<mapNode>
<mapNode>...</mapNode>
<mapNode>...</mapNode>-----I am here at 2
<differentNode>...</differentNode>
<mapNode>...</mapNode>
</mapNode>
如果你想在兄弟之后立即检查 mapNode 元素,你可以这样做:
<xsl:if test="following-sibling::*[1][self::mapNode]" />
答案 1 :(得分:1)
除了@rene的回答,您还可以使用following-sibling
内的mapNode
轴:
<xsl:template match="mapNode">
<xsl:if test="count(following-sibling::mapNode)>0">
<!-- has a successor -->
</xsl:if>
</xsl:template>
答案 2 :(得分:0)
不知道你已经拥有什么,但假设你有一个模板来选择一个顶层mapNode,你可以使用count来找出当前节点下有多少个mapNodes:
<xsl:template match="/root/mapNode">
<xsl:if test="count(mapNode)>2">
more than two mapNodes
</xsl:if>
</xsl:template>