<a></a>
ノード値がわかっている XML からすべてのタグの出現を削除したいと考えています。
たとえば、XML には複数の が含まれており<a>123</a>
、ノードの値が一致する場合は123
、すべてのノードを XML から削除する必要があります。
XSLT コードについて教えてください。
入力 XML :
<z>
<b>
<a>123</a>
<c>
<a>123</a>
<d>text</d>
</c>
<e>
<f>xyz></f>
<a>123</a>
</e>
</b>
<f>
<a>345</a>
</f>
<g>
<a>123</a>
<h>
<a>123</a>
<i></i>
</h>
</g>
</z>
期待される出力:
<z>
<b>
<c>
<d>text</d>
</c>
<e>
<f>xyz></f>
</e>
</b>
<f>
<a>345</a>
</f>
<g>
<h>
<i/>
</h>
</g>
</z>
コードを次のように使用しました
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes" encoding="UTF-8" omit-xml-declaration="yes" />
<xsl:template match="node()|@*" >
<xsl:copy >
<xsl:apply-templates select="node()|@*" />
</xsl:copy >
</xsl:template >
<xsl:template match="z/b/a|z/b/c/a|z/b/e/a|z/g/a|z/g/h/a" />
</xsl:stylesheet >
ただし、入力 XML が異なる場合があるため、パスのハードコーディングが常に機能するとは限りません。
ノードの値を「123」としてチェックし、それらのノードのみを削除するための一般的なコードを提案してください。
前もって感謝します。