6

下面给出了示例 XML。

<mapNode>
      <mapNode>...</mapNode>
      <mapNode>...</mapNode>-----I am here at 2
      <mapNode>...</mapNode>
      <mapNode>...</mapNode>
</mapNode>
<mapNode>
      <mapNode>...</mapNode>
      <mapNode>...</mapNode>
</mapNode>

我想知道位置 3 是否存在。请帮我。

提前致谢。

4

3 回答 3

20

如果你想测试一个元素后面是否有兄弟,你可以使用命名为“following-sibling”的xpath表达式:

<xsl:if test="following-sibling::*" />

请注意,这将测试是否有任何后续兄弟。如果您只想测试mapNode元素,您可以这样做

<xsl:if test="following-sibling::mapNode" />

但是,在以下情况下也是如此,因为 following-sibling 将查看所有以下兄弟姐妹:

<mapNode> 
   <mapNode>...</mapNode> 
   <mapNode>...</mapNode>-----I am here at 2 
   <differentNode>...</differentNode> 
   <mapNode>...</mapNode> 
</mapNode>

因此,如果您想检查紧随其后的兄弟元素是mapNode元素,您可以这样做:

<xsl:if test="following-sibling::*[1][self::mapNode]" />
于 2012-09-24T11:55:22.783 回答
2

除了@rene's answer之外,您还可以following-sibling在 any 中使用轴mapNode

<xsl:template match="mapNode">
    <xsl:if test="count(following-sibling::mapNode)>0">
    <!-- has a successor -->
    </xsl:if>
</xsl:template>
于 2012-09-24T11:49:10.747 回答
0

不知道您已经拥有什么,但假设您有一个模板来选择顶级 mapNode,您可以使用count来找出当前节点下有多少 mapNode:

   <xsl:template match="/root/mapNode">
      <xsl:if test="count(mapNode)>2">
        more than two mapNodes
      </xsl:if>
    </xsl:template>
于 2012-09-24T11:41:23.430 回答