gpt4 book ai didi

xml - 使用XSLT删除空/不需要的节点

转载 作者:行者123 更新时间:2023-12-03 17:00:03 24 4
gpt4 key购买 nike

我有一个XML文件,其中包含许多我想使用XSLT清除的不需要/不需要的数据

这是带有空节点示例的一小段数据

<?xml version="1.0" encoding="utf-8"?>
<Report xsi:schemaLocation="xxx">
<Tablix3>
<Tablix13 Textbox1164="TAX SUMMARY" Textbox10="">
<table26 textbox155="code">
<Detail_Collection>
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
<Detail textbox198="" TaxText2="" textbox112="0" textbox114="0" textbox200="0" textbox202="0" textbox874="0" />
</Detail_Collection>
</table26>
<Tablix26>
<table24>
<Detail_Collection>
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
<Detail textbox208="" textbox209="" textbox210="0" />
</Detail_Collection>
</table24>
</Tablix26>
</Tablix13>
</Tablix3>
</Report>


例如,我想删除所有空的(属性中没有值或值为0的)明细节点,并且仅当所有明细行都为空时,才删除明细集合节点。

我希望将表保留在原位,因为它偶尔具有我需要的属性数据。

我曾尝试使用Xpath,但是由于我有限的知识而遇到困难。

有人能指出我正确的方向吗?

谢谢

最佳答案

在XSLT中,从一个身份模板开始,该模板将原样复制内容:

<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>


然后为要删除的节点添加空模板规则。


“例如,我想删除所有详细信息节点”


那将是

<xsl:template match="Detail"/>


在修改后的问题中:


如果属性为空或0,例如,我想删除所有明细行。如果详细信息textbox198 =“”


变成

<xsl:template match="Detail[@*[not(. = '' or . = 0)]]"/>



“并且仅当所有明细行均为空时,才删除明细收集节点。”


用“空”的相同定义,那就是

<xsl:template match="Detail_Collection[not(Detail[@*[not(. = '' or . = 0)]])]"/>

关于xml - 使用XSLT删除空/不需要的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19640277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com