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

Я знаю, что вход должен иметь корневой элемент. Но есть ли способ установить корневой элемент для повторных элементов без root с помощью XSL?

ответ

0

Ваш вход не является хорошо сформированным XML-документом, поэтому вы получаете эту ошибку. Однако это можно рассматривать как набор узлов.

В зависимости от используемого процессора XSLT вы можете каким-то образом передать набор узлов в качестве параметра, но этого не существует «стандартный способ».

Однако, возможно, проще просто обернуть входной документ в какой-то элемент и обработать его впоследствии, например. concat <root> + файл-контент + </root> во временный файл и использовать его как вход для преобразования.