XSL Pattern和XPath在语法上有什么区别?

时间:2010-01-20 08:15:48

标签: xpath xslt

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

有人可以列出这两种语法之间的语法差异吗?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

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

/root/book[0]

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

/root/book[1]

因此,当我将我们转为使用正确XPath的MSXML 6.0时,所有带有“[0]”的查询都停止工作。

更新: 我刚刚找到了这个链接,它更多地讨论了XSLPattern和XPath:

MSDN Magazine: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 :(得分:1)

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

Microsoft拥有relevant info on "XSL Patterns"。以下是 XPath 1.0 API 部分的引用:

  

MSXML 2.0为XSL Patterns提供支持,XSL Patterns是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 Patterns语法以及XPath 1.0。

答案 3 :(得分:0)

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

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