如何使用xslt
从下面的xml中获取第一次x次出现以下是xml示例
<document>
<line>
<name>MAR111</name>
<value>1</value>
</line>
<line>
<name>MAR111</name>
<value>3</value>
</line>
<line>
<name>MEA111</name>
<value>1</value>
</line>
<line>
<name>MPR111</name>
<value>1</value>
</line>
<line>
<name>MEA111</name>
<value>4</value>
</line>
<line>
<name>MPR111</name>
<value>2</value>
</line>
</document>
例如,如果我想要前3次出现,结果应为
<document>
<line>
<name>MAR111</name>
<value>1</value>
</line>
<line>
<name>MAR111</name>
<value>3</value>
</line>
<line>
<name>MEA111</name>
<value>1</value>
</line>
</document>
提前致谢。
答案 0 :(得分:0)
您可以测试postition()
...
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="document">
<xsl:copy>
<xsl:apply-templates select="@*|line[3 >= position()]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
使用强>:
/*/line[not(position() > $x)]
其中$x
必须是包含要选择的“第一”元素的所需数量的变量。
或者,$x
可以替换为所需的数字本身。
请注意:
这个问题是一个纯粹的XPath问题,因此有一个纯XPath解决方案 - 根本不需要XSLT。