Добавить корневой элемент к повторяющимся узлам в файле XML с использованием XSL
У меня в XML-файле есть повторяющиеся узлы, но у меня нет корневого элемента, как показано ниже:
<my-element>AAA</my-element>
<my-element>BBB</my-element>
<my-element>CCC</my-element>
Я хочу сгенерировать XML с помощью root следующим образом:
<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.
Я знаю, что вход должен иметь корневой элемент. Но есть ли способ установить корневой элемент для повторяющихся элементов без рута, используя XSL?
1 ответ
Ваш ввод не является правильно сформированным XML-документом, поэтому вы получаете эту ошибку. Тем не менее, это можно рассматривать как набор узлов.
В зависимости от используемого процессора XSLT вы можете каким-то образом передать набор узлов в качестве параметра, но для этого не существует "стандартного" способа.
Однако, вероятно, проще просто обернуть входной документ в некоторый элемент и обработать его позже, например, concat <root>
+ файл-контент + </root>
во временный файл и использовать его в качестве входных данных для преобразования.