我有一个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>
Run Code Online (Sandbox Code Playgroud)
我想删除例如所有空(在属性中没有值或值为0)的详细信息节点,并且仅当所有细节行都为空时,还删除详细信息收集节点.
我想保留表格,因为它偶尔会有我需要的属性数据.
我尝试过使用Xpath但是我的知识有限.
有人可以指点我正确的方向吗?
谢谢
在XSLT中,从一个复制未更改内容的标识模板开始:
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
然后为要删除的节点添加空模板规则.
"我想删除所有细节节点"
那会是
<xsl:template match="Detail"/>
Run Code Online (Sandbox Code Playgroud)
在您修改的问题中:
如果属性为空或0,我想删除所有细节线,例如,如果Detail textbox198 =""
变成了
<xsl:template match="Detail[@*[not(. = '' or . = 0)]]"/>
Run Code Online (Sandbox Code Playgroud)
"并且只有当所有细节线都为空时,还要删除详细信息收集节点."
使用相同的"空"定义,即可
<xsl:template match="Detail_Collection[not(Detail[@*[not(. = '' or . = 0)]])]"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |