我的输入 XML 如下,
<OUTPUT-AREA><TIME-CD>A</TIME-CD>
<ID-G>
<Table-ID-T>
<AT-ID-T>YYYX</AT-ID-T>
<AT-ID-T/>
<AT-ID-T/>
</Table-ID-T>
</ID-G>
</OUTPUT-AREA>
我的输出 XML 应该是这样的,
<OUTPUT-AREA>
<TIME-CD>A</TIME-CD>
<ID-G>
<Table-ID-T>
<AT-ID-T>YYYX</AT-ID-T>
</Table-ID-T>
</ID-G>
</OUTPUT-AREA>
我只想删除具有空值的子元素。在上面的示例中,我只想删除<AT-ID-T>
具有空值的元素。
但不应删除 Table-ID-T 或 ID-G。
这里的一个挑战是,假设如果所有子元素都有空值,那么至少一个子元素应该保留在 Table 或数组中。
例如,输入 XML 是
<OUTPUT-AREA>
<TIME-CD>A</TIME-CD>
<ID-G>
<Table-ID-T>
<AT-ID-T/>
<AT-ID-T/>
<AT-ID-T/>
</Table-ID-T>
</ID-G>
</OUTPUT-AREA>
那么输出应该是这样的,
<OUTPUT-AREA>
<TIME-CD>A</TIME-CD>
<ID-G>
<Table-ID-T>
<AT-ID-T/>
</Table-ID-T>
</ID-G>
</OUTPUT-AREA>
请为我提供一个符合要求的合适 XSLT。
请在我尝试过的 XSLT 下面找到,
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://ACORD.org/Standards/Life/2">
<xsl:output encoding="UTF-8" indent="no" omit-xml-declaration="no"/>
<xsl:template match="/">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="*">
<xsl:if test=".!=''">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:if>
</xsl:template>
在应用上述 XSLT 时,删除了所有具有空值的元素。但我只需要删除子元素。