Примечание: это не дубликат Merge 2 XML files based on attribute values using XSLT? , но расширение для него. Учитывая следующие входные файлыОбъединить 2 файла XML (включая атрибуты узлов) на основе значений атрибутов с использованием XSLT
file1.xml
<config>
<state version="10">
<root value="100" group="5">
<leaf number = "2"/>
</root>
<root value="101" group="6" overrideAttr="oldval">
<leaf number = "3"/>
</root>
</state>
</config>
file2.xml
<config>
<state version="10">
<root value="100" group="5">
<leaf number = "6"/>
</root>
<root value="101" group="6" overrideAttr="newval" addtionalAttr="hello">
<leaf number = "4"/>
</root>
</state>
</config>
Я хотел бы иметь эту output.xml
<config>
<state version="10">
<root value="100" group="5">
<leaf number = "2"/>
<leaf number = "6"/>
</root>
<root value="101" group="6" overrideAttr="newval" addtionalAttr="hello">
<leaf number = "3"/>
<leaf number = "4"/>
</root>
</state>
</config>
Нужные расширений
- атрибуты (например, overrideAttr) на «тот же узел» (например, корневой элемент со значением = «101» и группа = «6») должны быть перезаписаны
- новых атрибутов (например, addtionalAttr) должна быть добавлена
это может быть достигнуты по xsl?
** 1. ** Что определяет «тот же» узел? - ** 2. ** Укажите, используете ли XSLT 1.0 или 2.0. –
> 1.Что определяет «тот же» узел? см. «Решение» вышеупомянутой темы > 2. Укажите, используете ли XSLT 1.0 или 2.0 независимо от javax.xml.transform.Поддержка TransformerFactory – Clemens