我有XML文件有重复的节点,但没有根元素,如下所示:
<my-element>AAA</my-element>
<my-element>BBB</my-element>
<my-element>CCC</my-element>
我想用根生成如下所示的XML:
<my-root>
<my-element>AAA</my-element>
<my-element>BBB</my-element>
<my-element>CCC</my-element>
</my-root>
我输入了以下代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<my-root>
<xsl:for-each select="*">
<xsl:copy-of select="."/>
</xsl:for-each>
</my-root>
</xsl:stylesheet>
但我收到错误,因为XML格式不正确:
The markup in the document following the root element must be well-formed.
我知道Input应该有根元素。但是,有没有办法使用XSL为没有根的重复元素设置根元素?
您的输入不是一个格式良好的XML文档,这就是您出现此错误的原因。然而,它可以被看作是一个节点集。
因此,根据所使用的XSLT处理器,您可能能够以某种方式将节点集作为参数传入,但没有"标准方法"可以做到这一点。
然而,可能更简单的做法是将输入文档包装到某个元素中,然后进行处理,例如将<root>
+文件内容+</root>
连接到一个临时文件中,并将其用作转换的输入。