不要开枪 我只是这里的信使,但我有一些看起来像这样的 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 的好书。