Я пытаюсь преобразовать данный XML с помощью xslt. Предостережение заключается в том, что мне пришлось бы удалить родительский узел, если данный дочерний узел отсутствует. Я сделал несколько шаблонов, но я застрял. Любая помощь будет оценена по достоинству.Удалить родительский узел, если дочерний узел пуст
Входной XML:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<item>
<value>
<item>
<value>ABC</value>
<key>test1</key>
</item>
<item>
<value>XYZ</value>
<key>test2</key>
</item>
<item>
<value></value>
<key>test3</key>
</item>
</value>
</item>
<item>
<value />
<key>test4</key>
</item>
<item>
<value>PQR</value>
<key>test5</key>
</item>
</main>
Ожидаемые результаты:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<item>
<value>
<item>
<value>ABC</value>
<key>test1</key>
</item>
<item>
<value>XYZ</value>
<key>test2</key>
</item>
</value>
</item>
<item>
<value>PQR</value>
<key>test5</key>
</item>
</main>
Проблема, если я использовать шаблон, соответствующий, например,
<xsl:template match="item[not(value)]"/>
как указано в deleting the parent node if child node is not present in xml using xslt, тогда он полностью удаляет все, так как основной/элемент/значение также пуст.
Мне нужно удалить, если элемент пуст, но только если элемент не имеет дочернего элемента.
Кроме того, если значение для ключа test1 и test2 пустое, элемент верхнего уровня также должен быть исключен из вывода. – Ady211