XSLT - 删除空节点

时间:2016-10-31 20:54:58

标签: java xml xslt

我使用下面的xslt来删除命名空间。如何才能增强删除空标签?

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" />

    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>


</xsl:stylesheet>

1 个答案:

答案 0 :(得分:3)

您可以按如下方式删除所有空元素:

<xsl:template match="*[not(normalize-space())]"/>

此外,您的strip-namespaces模板不考虑属性,因此您可能需要按如下方式对其进行扩展:

<xsl:template match="*">
<xsl:element name="{local-name()}">
  <xsl:for-each select="@*">
    <xsl:attribute name="{local-name()}">
      <xsl:value-of select="."/>
    </xsl:attribute>
  </xsl:for-each>
  <xsl:apply-templates/>
</xsl:element>
</xsl:template>