Вход: два xml-файла. Первый имеет несколько полей, которые содержат соответствующие значения, но весь узел фактически пуст. Данные для этого узла содержатся во втором XML-файле.XSL заменяет весь узел данными из другого XML-файла
Выход: первый XML-файл, содержащий недостающие значения, взятые из второго поставляемого XML-файла.
Методология: необходимо использовать XSL-файл для выполнения задачи ввода отсутствующих значений в первом xml из соответствующего узла во втором xml.
Пример:
Главная Input.xml
<?xml version="1.0" encoding="UTF-16"?>
<root>
<data> a </data>
<values>
<value>1</value>
<value>2</value>
</values>
<objects></objects>
</root>
Source_of_missing_info.xml
<?xml version="1.0" encoding="UTF-16"?>
<root>
<data> a </data>
<values>
<value>1</value>
<value>2</value>
</values>
<objects>
<object>Car</object>
<object>Train</object>
<object>Ship</object>
</objects>
</root>
Merger.xsl - это требуется.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:copy-of select="*"/>
</xsl:template>
<xsl:variable name="lookup" select="document('input_missing.xml')" />
<xsl:template match="objects">
<xsl:copy-of select="$lookup" />
<xsl:value-of select="text()" />
</xsl:template>
</xsl:stylesheet>
Ожидаемый результат:
<?xml version="1.0" encoding="UTF-16"?>
<root>
<data> a </data>
<values>
<value>1</value>
<value>2</value>
</values>
<objects>
<object>Car</object>
<object>Train</object>
<object>Ship</object>
</objects>
</root>
Можно ли достичь желаемого преобразования путем изменения выше Merger.xsl? Что является ключом к решению?
Это работает! Спасибо за документ ' ', я не смог найти эту синтаксическую опцию в любых примерах, которые я искал. –
teodron