我想像这样转换节点:
<Element>
<Type>Type1</Type>
<Quantity>q1</Quantity>
</Element>
(类型节点值来自枚举)到:
<Element>
<Type1>q1</Type1>
</Element>
仅在两个节点都存在的情况下。否则,如果节点<Quantity>
不存在,但节点<LastDate>
存在,则该节点:
<Element>
<Type>Date</Type>
<LastDate>date string</LastDate>
</Element>
变成:
<Element>
<Date>date string</Date>
</Element>
所以新节点的名字总是取自<Type>
node的值,但它的值可能来自父<Element>
节点的不同子节点(当它们存在时)。包含该值的子节点与该<Type>
节点一起在最终输出中被删除。
我在 Linq to XML C# 代码中这样做没有问题。但是,由于这种转换可以应用于几个不同的节点,因此我的程序的命令行输入,指定哪些节点受到影响以及如何受到影响,变得复杂。
相比之下,xslt 具有为简单转换进行自我记录的附加价值。