不要拍摄我只是这里的信使,但我有一些看起来像这样的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
谢谢!
答案 0 :(得分:17)
感谢Phil和Alexandre的建议,这是我工作的代码
<?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>
答案 1 :(得分:10)
这是一个基本的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>
首先,模板匹配=“/”是您的入口点。 apply-templates是一个xslt指令,它告诉xslt处理器在上下文中应用节点的模板。在这种情况下,您的根节点“XMLSnippet”。
for-each select =“data / stuff”应该是自解释的,以及select =“@ value”的值,除了@用于选择属性。
祝你好运。我建议你阅读这本书XSLT 2.0。一本关于XSLT的好书。