2016-03-24 35 views
0

我已经XML文件重复的节点根元素添加到重复节点在XML文件中,但没有根元素,如下所示:使用XSL

<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不formatte d正确:

The markup in the document following the root element must be well-formed. 

我知道Input应该有根元素。但有没有办法根据XSL为没有root的重复元素设置根元素?

回答

0

您的输入不是格式良好的XML文档,这就是您遇到此错误的原因。但是,它可以被看作是一个节点集。

取决于所使用的XSLT处理器,您可能因此能够以某种方式将节点集作为参数传递,但是没有“标准方式”来实现这一点。

但是,将输入文档包装到某个元素并在之后进行处理可能比较简单,例如, concat <root> +文件内容+ </root>转换为临时文件并将其用作转换的输入。