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

If you want to test if an element has a sibling following it, you can use the sensibly named "following-sibling" xpath expression:

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

Note that this will test if there is any following-sibling. If you only wanted to test for mapNode elements, you could do this

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

However, this would also be true also in the following case, because following-sibling will look at all following siblings:

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

If you therefore want to check the most immediately following sibling was a mapNode element, you would do this:

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

@reneの回答に加えて、following-sibling任意の内部から軸を使用することもでき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 に答える