немного борется, чтобы заставить следующее работать: я пытаюсь объединить переведенные узлы, но поскольку иногда между наборами узлов существуют незначительные различия, я не могу сделать это только с завязанными глазами и требуется ручная проверка. Тем не менее, в то же время мне нравится сохранять мою жизнь простой, поэтому я хочу автоматизировать фронт настолько, насколько это возможно. Ниже приводится пример:объединяет узел только в том случае, если все атрибуты равны
Фактические файлы могут содержать 30 языков и сотни узлов, поэтому пример выше очень упрощен.
То, что я хочу достичь на примере, заключается в объединении английского и французского языков, поскольку они имеют равное количество элементов, и все атрибуты также равны. Французский должен оставаться таким, потому что не все атрибуты соответствуют, голландский должен оставаться таким же, как и количество элементов, которые не совпадают.
Так вывод должен выглядеть следующим образом:
<root>
<!-- French has the same amount of elements, and a full sequential match of attributes, so we can merge -->
<chapter>
<string class="l1">
<local xml:lang="en">Some English here</local>
<local xml:lang="fr">Some English translated to French here</local>
</string>
<string class="p">
<local xml:lang="en">Some other English here</local>
<local xml:lang="fr">Some other English translated to French here</local>
</string>
<string class="p">
<local xml:lang="en">and some English here</local>
<local xml:lang="fr">and some English translated to French here</local>
</string>
<string class="p">
<local xml:lang="en">Some English here</local>
<local xml:lang="fr">Some English translated to French here</local>
</string>
</chapter>
<!-- German has same amount of elements, but different tag sequence, so we leave it for manual review -->
<chapter>
<string class="l1"><local xml:lang="de">Some English translated to German here</local></string>
<string class="p"><local xml:lang="de">Some other English translated to German here</local></string>
<string class="another_class"><local xml:lang="de">and some English translated to German here</local></string>
<string class="p"><local xml:lang="de">Some English translated to German here</local></string>
</chapter>
<!-- Dutch has same same tag sequence but less elements, so we leave it for manual review-->
<chapter>
<string class="l1"><local xml:lang="nl">Some English translated to Dutch here</local></string>
<string class="p"><local xml:lang="nl">Some other English translated to Dutch here</local></string>
<string class="p"><local xml:lang="nl">and some English translated to Dutch here<br/>Some English translated to Dutch here</local></string>
</chapter>
</root>
английский всегда мастер ссылки, так что я уже могу исключить nodesets, которые разностной размера, используя английский язык nodecount как сравнение, просто не имеют ни малейшего представления о как проверить, равны ли все значения атрибутов.
Любые советы? (с использованием xslt2)
Спасибо!
Dimitre, вы сделали какое-то редактирование, которое, как я думаю, больше не приводит к требуемому результату, поскольку ' ' будет копировать дочерние элементы в настоящее время сгруппированные элементы 'chapter' на выходе (т. е. элементы' string'), в то время как вы, вероятно, хотите ' ' скопировать элементы 'chapter'. –
@MartinHonnen: Спасибо, что заметили это - исправлено. –
Спасибо, оба! @Martin: Я окончательно использовал решение Dimitres, так как это позволило мне использовать его также с «вложенными главами» после некоторой модификации. Довольно уверен, что это возможно и с вашим, но просто не знало, как использовать переменные в правильном порядке. – Wokoman