输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<TEST ID="1" DATA="DATE"/>
<TEST/>
<TEST2 ID="3" COLUMN="VALUE"/>
</dataset>
期望的输出:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<TEST ID="1" DATA="DATE"/>
<TEST2 ID="3" COLUMN="VALUE"/>
</dataset>
当前应用的XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*[not(child::node())]"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
当前输出:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
</dataset>
在结果中实现没有空'<TEST/>'
节点的输出可能是应用的条件。
答案 0 :(得分:3)
检查以下代码
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>
答案 1 :(得分:3)
如果要保留具有子节点或属性的元素,请更改此:
<xsl:template match="*[not(child::node())]"/>
为:
<xsl:template match="*[not(node() or @*)]"/>
请注意,child
是默认轴,因此可以省略child::
。