Xslt 如何使用xsl从给定的xml中获取第一个x引用
如何使用xslt从下面的xml中获取行元素的第一个x引用 下面是一个示例xmlXslt 如何使用xsl从给定的xml中获取第一个x引用,xslt,xpath,Xslt,Xpath,如何使用xslt从下面的xml中获取行元素的第一个x引用 下面是一个示例xml <document> <line> <name>MAR111</name> <value>1</value> </line> <line> <name>MAR111</name> <value>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>
<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>
MAR111
1.
MAR111
3.
MEA111
1.
MPR111
1.
MEA111
4.
MPR111
2.
例如,如果我想要前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>
MAR111
1.
MAR111
3.
MEA111
1.
提前感谢。您可以测试
位置()
<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>
使用:
/*/line[not(position() > $x)]
其中,$x
必须是一个包含所需数量的要选择的“第一”元素的变量
或者,$x
可以替换为所需的数字本身
注意事项:
/*/line[not(position() > $x)]
这个问题是一个纯粹的XPath问题,因此有一个纯粹的XPath解决方案——XSLT根本没有必要