LINQ to XML取代XSLT吗?

Jer*_*y E 3 xslt linq-to-xml

您是否可以在XSLT中执行任何无法在LINQ to XML中完成的操作?学习XSLT仍然很重要吗?你何时会选择一个而不是另一个?

Pav*_*aev 5

您是否可以在XSLT中执行任何无法在Linq to XML中执行的操作?

不,因为LINQ to XML是图灵完整编程语言使用的API,并且涵盖了比XSLT文档模型更多的XML Infoset(例如,您可以完全控制L2X中文本和CDATA节点之间的差异).

学习XSLT仍然很重要吗?

取决于你在做什么.从广义上讲,是的.

你何时会选择一个而不是另一个?

当您需要进行转换时,XSLT通常更好 - 即输入和输出都是XML.这有很多原因.首先,XSLT模式匹配通常比嵌套?:在L2X查询中更简洁,并且更具可读性.您还可以使用*设置默认规则(例如"复制所有内容"或"处理子项但不生成输出"),然后为需要以特殊方式处理的特定节点添加规则 - 因此您不需要像在L2X中那样为文档中的每个节点级别编写显式循环/理解.最后,XPath也比L2X查询更简洁(至少在C#中),所以如果你做了很多非平凡的查询,它在XSLT中可能会更短,更易读.

当您需要快速查询某个值或节点的文档时,L2X通常更好.这里的主要优点是运行时开销较少(需要解析XPath,L2X查询不需要),而且您不需要乱用XmlNamespaceManager其他错误 - 简化了API以编写单表达式查询.同样,拥有嵌套from循环并let使其更接近XQuery领域.

当您需要文档的就地更新时,L2X也是唯一的选择,当您只需要替换文档中的一些值时可能会更好,并且就地更新是一个选项 - 因为XSLT不允许你以任何方式触摸输入.