2016-03-24 5 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. 

入力はルート要素を持つ必要があります。しかし、XSLを使用してルートなしで繰り返し要素のルート要素を設定する方法はありますか?

答えて

0

あなたの入力は整形式のXML文書ではないため、このエラーが発生します。しかし、それはノードセットとして見ることができます。

使用するXSLTプロセッサによっては、どういうわけかノードセットをパラメータとして渡すことができますが、それを行うための「標準的な方法」はありません。

しかし、入力ドキュメントをいくつかの要素にラップし、後でこれを処理する方が簡単かもしれません。 concat <root> + file-content + </root>を一時ファイルに挿入し、それを変換の入力として使用します。