我有一份笔记清单,如下:
<Notes>
<Note>
<Type>Internal</Type>
<Value>STuff</Value>
</Note>
<Note>
<Type>External</Type>
<Value>Other stuff</Value>
</Note>
<Note>
<Type>External</Type>
<Value>Even More stuff</Value>
</Note>
</Notes>
我需要列出外部注释,但跳过第一个外部注释。更糟糕的是,我不能总是保证内部注释的存在,所以我不一定知道第一个外部注释的位置。所以我想我需要找到第一个外部音符的位置,并将其存储在变量中,然后在测试中使用它。但不确定如何用变量做到这一点?
答案 0 :(得分:1)
所以我想我需要找到这个位置 第一个外部笔记和商店 在变量中然后使用它 测试。
没有。您可以使用position()
。怎么样:
<xsl:template match="Notes">
<xsl:apply-templates select="Note[Type = 'External'][position() > 1]" />
</xsl:template>
<xsl:template match="Note[Type = 'External']">
<!-- now do something with that node -->
<xsl:copy-of select="." />
</xsl:template>
答案 1 :(得分:1)
选择包含<Note>
类型的第二个External
:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Notes/Note[Type='External'][position()>1]">
<xsl:apply-templates select="Value"/>
</xsl:template>
<!-- suppress -->
<xsl:template match="Note"/>
</xsl:stylesheet>
当应用于您的示例XML时,会输出以下内容:
Even More stuff