Вот проблема, у меня неполный документ (docA), и я хотел бы вставить некоторый элемент xml в определенную позицию, определенную строкой xpath (в элементе doc elementList), чтобы получить полный документ (docB). *
Итак, в основном, учитывая документ docA:
<document>
<information type="person">
<id>string</id>
<customer>
<customerID>abc</customerID>
<externalID>2</externalID>
<person>
<gender>M</gender>
<firstName>John</firstName>
<!-- here should be a middle name -->
<lastName>Doe</lastName>
<birthdate>2011-05-05</birthdate>
</person>
<!-- more elements... -->
</customer>
<!-- more elements... -->
</information >
</document>
и elementList:
<newElementSet>
<element>
<name>Middle Name</name>
<path>/document/information/customer/person/middleName</path>
<value>Fitzgerald</value>
</element>
<!-- some more element could go there -->
</newElementSet>
выходной документ должен быть:
<document>
<information type="private">
<id>string</id>
<customer>
<customerID>abc</customerID>
<externalID>2</externalID>
<person>
<gender>M</gender>
<firstName>John</firstName>
<middleName>Fitzgerald</middleName>
<lastName>Doe</lastName>
<birthdate>2011-05-05</birthdate>
</person>
<!-- more elements... -->
</customer>
<!-- more elements... -->
</information >
</document>
Как-нибудь это можно сделать в xslt? Я пытался использовать Xquery, но это не представляется возможным (не могу использовать обновление Xquery, поскольку оно еще не поддерживается).
Редактировать: я просто хочу уточнить, что это просто упрощенное изложение проблемы. В действительности, у нас есть больше элементов для добавления, и там значения будут фактически взяты из пользовательского ввода ...