我正在更新代码以使用MSXML3.0中的MSXML6.0。 但是,我注意到,对于MSXML3.0,默认的“SelectionLanguage”是“XSL Pattern”,而MSXML6.0只支持XPath。 我担心这种变化会在查询语法中引入差异。
有人可以列出这两种语法之间的语法差异吗?
答案 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的含义: