抱歉,我在XPath中是真正的菜鸟。所以,这是我的问题。让我们假设我们有这样的结构...
<structure>
<item filter=0>1 do not display</item>
<item filter=1>2 display</item>
<item filter=1>3 display</item>
<item filter=0>4 do not display</item>
</structure>
如何应用过滤器structure[filter=1]
并从结果数据中仅选择第一个元素?
我想它会像structure[filter=1][position() = 1]
?
PS:请推荐在线xlst测试工具。
谢谢。
答案 0 :(得分:3)
你差不多自己做了。
/*/item[@filter = 1][1]
请看一下这个例子(仅为了清晰明确value-of
):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:value-of select="*/item[@filter = 1][1]"/>
</xsl:template>
</xsl:stylesheet>
对这个结构良好的输入结果:
<structure>
<item filter="0">1 do not display</item>
<item filter="1">2 display</item>
<item filter="1">3 display</item>
<item filter="0">4 do not display</item>
</structure>
将是2 display
。
要选择符合@filter=1
条件的所有项目,除了第一项,使用此xpath表达式:
/*/item[@filter = 1][position() > 1]