[英]Remove empty nodes with no attributes from XML using XSLT
输入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/>'
节点的情况下实现输出的可能条件是什么?
检查以下代码
<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()='']"/>
如果要保留具有子节点或属性的元素,请更改此设置:
<xsl:template match="*[not(child::node())]"/>
至:
<xsl:template match="*[not(node() or @*)]"/>
请注意, child
是默认轴,因此可以省略child::
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.