Я хочу заменить некоторые узлы XML-файла эквивалентными узлами другого XML-файла. Поскольку это было бы недостаточно сложно, я хочу, чтобы идентификатор, используемый для сравнения, был значением некоторого дочернего элемента.
«Старый» XML выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Documents>
<Document id="001">
<Tags>
<Tag id="document_id">someIDfilename.pdf</Tag>
<Tag id="document_type">Type A</Tag>
<Tag id="document_text">A very important document of course.</Tag>
<Tags>
</Document>
<Document id="018">
<Tags>
<Tag id="document_id">someOtherIDfilename.pdf</Tag>
<Tag id="document_type">Type B</Tag>
<Tag id="document_text">Another very important document.</Tag>
<Tags>
</Document>
</Documents>
</Root>
Второй документ должен быть заменен эквивалентом следующего XML, при этом идентификатор, который я должен использовать, является значением document_id (поскольку «id» узла документа иногда перезаписывается или изменяется):
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Documents>
<Document id="014">
<Tags>
<Tag id="document_id">someOtherIDfilename.pdf</Tag>
<Tag id="document_type">Type B</Tag>
<Tag id="document_text">The oh so important new document text.</Tag>
<Tags>
</Document>
</Documents>
</Root>
Ожидается, что результат будет выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Documents>
<Document id="001">
<Tags>
<Tag id="document_id">someIDfilename.pdf</Tag>
<Tag id="document_type">Type A</Tag>
<Tag id="document_text">A very important document of course.</Tag>
<Tags>
</Document>
<Document id="018">
<Tags>
<Tag id="document_id">someOtherIDfilename.pdf</Tag>
<Tag id="document_type">Type B</Tag>
<Tag id="document_text">The oh so important new document text.</Tag>
<Tags>
</Document>
</Documents>
</Root>
Q1: возможно ли это с помощью XSLT? Или я должен использовать Java/DOM?
Q2: Если Q1==да: кто-нибудь может решить это здесь?
Лучший! Филипп
id
в желаемом результате имеет значение018
, а не014
из второго документа, из которого вы сказали, что хотите взять замену? - person Martin Honnen   schedule 26.03.2014