我有这样的XML:
<?xml version="1.0" encoding="UTF-8"?>
<Info>
<Type>A</Type>
<Cycle>
<Code>A</Code>
<CycleNumber>63-1</CycleNumber>
<CycleDate>2014-10-15T00:00:00</CycleDate>
<CycleNetAmount>2400.00</CycleNetAmount>
<CycleTaxAmount>432.00</CycleTaxAmount>
<CycleTotalAmount>2832.00</CycleTotalAmount>
<CyclePayableAmountAsText/>
</Cycle>
<Cycle>
<Code>B</Code>
<CycleNumber>63-1</CycleNumber>
<CycleDate>2014-10-15T00:00:00</CycleDate>
<CycleNetAmount>400.00</CycleNetAmount>
<CycleTaxAmount>72.00</CycleTaxAmount>
<CycleTotalAmount>472.00</CycleTotalAmount>
<CyclePayableAmountAsText/>
</Cycle>
</Info>
如果Info / Type = A,我想删除Code = B的Cycle块。 如果Info / Type = B,我想删除Code = A的循环块。
有人可以帮忙吗?
答案 0 :(得分:1)
要在XSLT中“删除节点”,您希望复制除这些节点之外的所有内容。所以:从标识样式表开始(像往常一样),然后添加与要排除但不产生输出的节点匹配的模板。
在这种情况下,您要丢弃的元素可以描述为“任何循环,使其Code子元素的值与/ Info / Type元素的值匹配”,直接转换为
match="Cycle[Code=/Info/Type]"
还有其他方法可以一如既往地以不同的效率表达它......但这可能是最简单的解决方案。