XSLT - 遍历所有子节点



不要开枪 我只是这里的信使,但我有一些看起来像这样的 xml

<XMLSnippet>
    <data>
        <stuff value="stuff" />
        <stuff value="more stuff" />
        <stuff value="even more stuff" />
        <widget value="you expected stuff didn't you" />
        <stuff value="great, we've got stuff again" />
    </data>
</XMLSnippet>

我想遍历所有data子节点并输出以下内容

stuff
more stuff
even more stuff
you expected stuff didn't you
great, we've got stuff again

如果重要的话,我只能使用 XSLT 1.0

谢谢!

感谢菲尔和亚历山大的建议,这是我工作的代码

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/XMLSnippet">
       <xsl:for-each select="data/*">
          <xsl:value-of select="@value" />
       </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>

这是一个基本的 XSLT 问题,所以我假设你对 xsl 几乎没有经验。您需要了解 xslt 如何处理超出本文范围的 XML 文档。尽管如此,这应该可以让您入门。请注意,有几种方法可以获得您想要的输出,这只是其中之一:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="XMLSnippet">
    <xsl:for-each select="data/stuff">
        <xsl:value-of select="@value"/>
    </xsl:for-each>
</xsl:template>

对于初学者来说,模板 match="/" 是您的入口点。应用模板是一个 xslt 指令,它告诉 xslt 处理器在上下文中应用节点的模板。在本例中,您的根节点"XMLSnippet"。

for-each select="data/stuff" 应该是不言自明的,以及 value-of select="@value",除了 @ 用于选择属性。

祝你好运。我建议你读一读这本书 XSLT 2.0。一本关于 XSLT 的好书。

相关内容

  • 没有找到相关文章

最新更新