【问题标题】:What's the difference between XSL Pattern and XPath in syntax?XSL Pattern 和 XPath 在语法上有什么区别?
【发布时间】:2010-01-20 08:15:47
【问题描述】:

我正在更新代码以使用 MSXML3.0 中的 MSXML6.0。 但是,我注意到,对于 MSXML3.0,默认的“SelectionLanguage”是“XSL Pattern”,而 MSXML6.0 只支持 XPath。 我担心此更改会在查询语法中引入差异。

谁能列出这两种语法的区别?

【问题讨论】:

    标签: xpath xslt


    【解决方案1】:

    让我绊倒的一件事是选择节点集中的第一个节点。例如,我们一直在使用 MSXML 3.0(它使用 XSLPattern)并且有这样的查询:

    /root/book[0]
    

    这个查询应该选择第一本书。这适用于 XSLPattern。但是对于 XPath,这是正确的:

    /root/book[1]
    

    所以当我切换到使用正确 XPath 的 MSXML 6.0 时,所有带有“[0]”的查询都停止工作了。

    更新: 我刚刚发现这个链接更多地讨论了 XSLPattern 和 XPath:

    MSDN 杂志:MSXML 3.0 支持 XPath 1.0、XSLT 1.0、XDR 和 SAX2

    http://msdn.microsoft.com/en-us/magazine/cc302348.aspx

    更新 #2:

    这是关于 XSLT 的 W3C 规范,其中包括 XSL 模式:

    http://www.w3.org/TR/1998/WD-xsl-19981216.html#AEN376

    更新 #3

    这是另一篇描述我上面提到的同一件事的帖子:

    http://www.eggheadcafe.com/software/aspnet/29579789/xml-parsing.aspx

    【讨论】:

      【解决方案2】:

      如果我没记错的话,XSL 模式是一种类似于 XPath 的选择语言,但在 XPath 标准化(甚至可能创建)之前由 Microsoft 实现。我认为任何人都不再有任何记录 XSL 模式的东西了。您基本上可以忘记它并专注于 XPath。它具有相同的目的,但受到支持和标准化。

      【讨论】:

        【解决方案3】:

        XSL 模式似乎是 WD-XSL 的一部分,“工作草案 XSL”,这意味着早于 XSL 建议 (1999) 的版本,与最终的 1.0 版本有很大不同。

        微软有relevant info on "XSL Patterns"。以下是 XPath 1.0 APIs 部分的引述:

        MSXML 2.0 提供对 XSL 模式的支持,它是 XPath 1.0 的前身。 XML 寻址语言的概念被引入最初的 W3C XSL 工作草案 (http://www.w3.org/TR/1998/WD-xsl-19981216.html) 并称为 XSL 模式。 MSXML 2.0 实现了原始 XSL 规范中描述的 XSL 模式语言,但有一些小例外。

        MSXML 3.0 提供对旧版 XSL 模式语法以及 XPath 1.0 的支持。

        【讨论】:

          【解决方案4】:

          根据我的经验,XPath 更容易理解。如果可以的话,我会像避免瘟疫一样避免 XSL。但是您是对的,语法非常不同,因此如果您想从 XSL 切换到 XPath,您还有一些工作要做。我无法轻易解释这些差异,但本教程应该让您对 XPath 的含义有所了解:

          http://www.w3schools.com/XPath/xpath_examples.asp

          【讨论】:

          • XSL 模式与 XSL 不同。 XSL 模式非常晦涩
          猜你喜欢
          • 2010-10-18
          • 1970-01-01
          • 1970-01-01
          • 2016-06-07
          • 2021-04-23
          • 1970-01-01
          相关资源
          最近更新 更多