如何使用 XSLT 跳过列表中的第一种元素?

发布于 2024-10-24 07:29:50 字数 570 浏览 1 评论 0原文

我有一个注释列表,如下所示:

<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>

我需要列出外部注释,但跳过第一个外部注释。更糟糕的是,我不能总是保证内部注释的存在,因此我不一定知道第一个外部注释的位置。所以我想我需要找到第一个外部注释的位置,并将其存储在变量中,然后在测试中使用它。但不太确定如何使用变量来做到这一点?

I've got a list of notes, something like this:

<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>

I need to list the External notes, but skip the first external note. What's worse is that I can't always gaurantee the presence of an Internal note, so I don't necessarily know the position of the first External note. So I guess I need to find the position of the first external note, and store that in a variable then use that in the test. But not really sure how to do that with a variable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

请远离我 2024-10-31 07:29:51

所以我想我需要找到这个位置
第一个外部注释,并存储
然后在变量中使用它
测试。

不,您可以使用 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>

So I guess I need to find the position
of the first external note, and store
that in a variable then use that in
the test.

No. You can work with position(). How about:

<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>
深居我梦 2024-10-31 07:29:51

选择包含 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

Select the second <Note> that contains an External type:

<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>

Which outputs the following when applied to your example XML:

Even More stuff
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文