Я пытаюсь объединить файлы XML, используя XSL. Я искал подсказки на stackoverflow, google и в других местах. Я нашел похожие вопросы или темы, но ничего, что точно соответствует тому, что я пытаюсь сделать.
Я пытался использовать то, что могу почерпнуть из этих источников, но, похоже, не могу получить желаемый результат. Так что ... S / O для быстрой консультации!
Вот мой текущий подход:
Входной файл1.xml
<?xml version="1.0" encoding="UTF-8"?>
<protocol>
<message_exchanges>
<message_exchange id="1"/>
<message_exchange id="2"/>
</message_exchanges>
<message_types>
<message_type id="1"/>
<message_type id="2"/>
<message_type id="3"/>
</message_types>
</protocol>
Входной файл2.xml
<?xml version="1.0" encoding="UTF-8"?>
<protocol>
<message_exchanges>
<message_exchange id="3"/>
<message_exchange id="4"/>
</message_exchanges>
<message_types>
<message_type id="4"/>
<message_type id="5"/>
<message_type id="6"/>
</message_types>
</protocol>
Ввод index.xml
<?xml version="1.0" encoding="UTF-8"?>
<index>
<component>file1.xml</component>
<component>file2.xml</component>
</index>
combine.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:template match="index">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="component">
<xsl:apply-templates select="document(.)"/>
</xsl:template>
.....help me fix / finish this file
</xsl:stylesheet>
desired_result.xml
<?xml version="1.0" encoding="UTF-8"?>
<protocol>
<message_exchanges>
<message_exchange id="1"/>
<message_exchange id="2"/>
<message_exchange id="3"/>
<message_exchange id="4"/>
</message_exchanges>
<message_types>
<message_type id="1"/>
<message_type id="2"/>
<message_type id="3"/>
<message_type id="4"/>
<message_type id="5"/>
<message_type id="6"/>
</message_types>
</protocol>
1000 бонусных баллов, если вы можете помочь мне добавить атрибут на лету:
<message_type id="1" src="file1.xml"/>
<message_type id="4" src="file2.xml"/>
Я загружаю и применяю XSL-файл к индексному XML-файлу, используя PHP-XSLTProcessor, поэтому я могу загрузить имена исходных файлов в процессор в качестве параметра, если это будет полезно / проще сделать, добавив атрибут src
.
Спасибо! Дайте мне знать, если я смогу что-то прояснить.
Самая полезная ссылка, которую я нашел, и основа моего нынешнего подхода