【发布时间】:2021-04-24 09:26:23
【问题描述】:
专家,我需要编写 XSLT 1.0 代码来消除 XML 中具有空字段的记录。
输入:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ns0:Accounts xmlns:ns0="urn:text.com:accounts">
<Recordset>
<Record>
<FIELD1>123</FIELD1>
<FIELD2/>
<FIELD3/>
<FIELD4>2020</FIELD4>
<FIELD5/>
</Record>
<Record>
<FIELD1/>
<FIELD2/>
<FIELD3/>
<FIELD4/>
<FIELD5/>
</Record>
<Record>
<FIELD1>89</FIELD1>
<FIELD2>098</FIELD2>
<FIELD3/>
<FIELD4>678</FIELD4>
<FIELD5>NEW</FIELD5>
<FIELD6/>
</Record>
<Record>
<FIELD1/>
<FIELD2/>
<FIELD3/>
<FIELD4/>
<FIELD5/>
</Record>
<Record>
<FIELD1/>
<FIELD2/>
<FIELD3/>
<FIELD4/>
<FIELD5/>
</Record>
</Recordset>
</ns0:Accounts>
** 所需输出:**
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ns0:Accounts xmlns:ns0="urn:text.com:accounts">
<Recordset>
<Record>
<FIELD1>123</FIELD1>
<FIELD2/>
<FIELD3/>
<FIELD4>2020</FIELD4>
<FIELD5/>
</Record>
<Record>
<FIELD1>89</FIELD1>
<FIELD2>098</FIELD2>
<FIELD3/>
<FIELD4>678</FIELD4>
<FIELD5>NEW</FIELD5>
<FIELD6/>
</Record>
</Recordset>
</ns0:Accounts>
** 我试过的 XSLT:**
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates
select="node()[boolean(normalize-space())]
|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
此 XSLT 删除所有记录中的空字段,但我的要求是删除具有所有空字段的记录。如果记录包含一个具有某个值的字段,那么我们需要保持该记录不变。请支持..
【问题讨论】:
标签: xslt xslt-1.0 xslt-grouping