使用XSLT删除空的attritbutes节点

时间:2018-05-25 09:39:07

标签: xml xslt null

我正在尝试删除在我的代码

下面有空值的xml节点
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="node()|@*" >
    <xsl:copy>
         <xsl:apply-templates select="@*[.!='']" />
         <xsl:apply-templates select="node()" />
    </xsl:copy>
</xsl:template>

输入:

<Test><id value=""></id><name value="Test"></name></Test>

输出:

<Test><id /><name value="Test" /></Test>

预期产出:

<Test><name value="Test" /></Test>

此处<id\>标记应移除。请提出遗漏的地方。 请帮我解决上述问题。

1 个答案:

答案 0 :(得分:1)

您的脚本只会跳过空属性,而不是整个包含 元件。

如果您想跳过整个元素至少有一个空属性, 使用空模板,匹配这些元素:

<xsl:template match="*[@* = '']"/>

和普通的身份模板

要省略空行,这些行留在这些“已删除”元素的位置, 您可以在脚本中添加<xsl:strip-space elements="*"/>

相关问题