XSLT 按位置省略元素?

XSLT to omit elements by position?

我的 XML 看起来是这样的:

<A>
 <B>2345</B>
 <B>4444</B>
 <B>1234</B>
</A>

应该提取第三个元素,转换后的 XML 看起来是这样的:

<A>
 <B>1234</B>
</A>

我只能使用 XSLT 1.0。 如何检查元素的某个位置?

使用:

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

  <xsl:template match="A">
    <xsl:copy>
      <xsl:copy-of select="B[3]"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

假设您有一个身份转换来支持“推”模型,您可以通过仅将模板应用于第三个 B...

<xsl:template match="A">
    <xsl:copy>
        <xsl:apply-templates select="B[3]"/>
    </xsl:copy>
</xsl:template>

或匹配 B 个不在第三个位置的元素并且不进一步处理它们...

<xsl:template match="B[not(position()=3)]"/>

后者的例子:http://xsltfiddle.liberty-development.net/eieFzZN/1