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)]"/>
我的 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)]"/>