Ich versuche, eine gegebene XML mit xslt zu transformieren. Der Vorbehalt ist, dass ich einen Elternknoten löschen müsste, wenn ein bestimmter Kindknoten nicht vorhanden ist. Ich habe ein Template Matching gemacht, aber ich stecke fest. Jede Hilfe wäre willkommen.Entfernen Sie den übergeordneten Knoten, wenn der untergeordnete Knoten leer ist.
Der Eingang 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>
Erwartete Ausgabe:
<?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>
Das Problem ist, wenn ich Vorlage passende z.B.
<xsl:template match="item[not(value)]"/>
wie in deleting the parent node if child node is not present in xml using xslt erwähnt, dann entfernt es vollständig alles wie Haupt/Element/Wert ist auch leer.
Was ich brauche, ist zu entfernen, wenn Element leer ist, aber nur tun, wenn Element kein Kindelement hat.
Wenn der Wert für key test1 und test2 leer ist, sollte das Element item der obersten Ebene ebenfalls von der Ausgabe ausgeschlossen werden. – Ady211