xsltを使用して特定のXMLを変換しようとしています。注意は、特定の子ノードが存在しない場合、親ノードを削除する必要があるということです。私はいくつかのテンプレートマッチングをしましたが、私は立ち往生しています。どんな助けもありがとう。子ノードが空の場合に親ノードを削除します。
入力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に記載されているとおり、main/item/valueも空であるため、すべてを完全に削除します。
私が必要とするのは、要素が空の場合は削除ですが、要素に子要素がない場合にのみ行います。
さらに、キーtest1とtest2の値が空の場合、トップレベルの項目要素も出力から除外する必要があります。 – Ady211