【发布时间】:2015-02-23 08:32:29
【问题描述】:
XSL 的初学者。我正在尝试将 2 个 XML 文档转换为一个新的 XML 文档。我似乎无法将标签打印到新文档中。只有元素的内容在打印。
XML
<books>
<book>
<name>Cat in the Hat</name>
<author>Me</name>
...
...
</book>
...
...
</book>
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method = "xml" indent = "yes" />
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:element name="books">
<xsl:template match="books">
<xsl:element name="book">
<xsl:for-each select="book">
<xsl:element name="name"><xsl:value-of select="name"/></xsl:element>
<xsl:element name="author"><xsl:value-of select="author"/></xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:element>
</xsl:stylesheet>
输出到 XML 文件 戴帽子的猫 我
我需要的输出是:
<books>
<book>
<name>Cat in the Hat</name>
<author>Me</author>
</book>
</books>
我做错了什么?
【问题讨论】:
-
您能否将您期望的输出显示为实际的 XML,而不是文本表示,好吗?此外,您是否只是想在输出中为每本书显示
name和author,而在book元素之前忽略任何其他标签?谢谢! -
您是否使用 XSLT 处理器运行此程序?错误消息应该很容易理解。
xsl:element不能是顶级元素。 -
我已经添加了预期的输出......这与现在@TimC 的输入相同。
-
@MathiasMüller 是的,它已经通过 Eclipse 使用 XSLT 处理器运行。即使我删除了顶级元素,我仍然得到相同的输出。我只是不确定如何让标签显示。
标签: xml xslt xslt-1.0 xslt-2.0