我的輸入XML是如下刪除在XML空的子元素,使用XSLT
<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 shoule像,
<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。
這裏的一個挑戰是,假設如果所有的子元素都有空值,那麼至少有一個子元素 保留在表或數組中。
例如,輸入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,所有這一切都空值移除的元素。但是我只需要刪除子元素。
等都不是代碼寫作服務。我們很樂意幫助您解決您遇到的任何問題,但您必須向我們展示您迄今爲止的嘗試。 – Matthew
@Mthethew對不起,我同意。我沒有追加我在第一篇文章中嘗試過的XSLT。我現在用我的XSLT更新了這篇文章。請查看 – Rajthilak