社区;
我在这里尝试过很多帖子来解决这个问题。我一直没有去。 感谢任何帮助。
我有以下XMl:
<SD>
<I>
<B>
<A>SomeData</A>
<Is>
<Id/>
<Id/>
<Id/>
<Id/>
<Id/>
<Id/>
</Is>
</B>
<S>
<D></D>
</S>
<D>
.....
</D>
</I>
</SD>
如果I / S / D为空或空白,我需要删除。 因此,如果I / S / D为空,我应该只有
<SD>
</SD>
我已经尝试但是我没有得到理想的结果。
非常感谢任何帮助。
答案 0 :(得分:1)
在评论中,您有这个匹配的模板
<xsl:template match="I[not(descendant::S/D='')]"/>
但这会匹配我元素,其中 S / D 不为空,这与您想要做的相反。你能做的就是这个
<xsl:template match="I[not(S/D!='')]"/>
这将匹配空的 S / D 元素,以及根本没有这样的元素的情况。
这是完整的XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="I[not(S/D!='')]"/>
</xsl:stylesheet>
使用时,输出以下内容
<SD></SD>