Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSL模式和XPath在语法上有什么区别?_Xpath_Xslt - Fatal编程技术网

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

XSL模式和XPath在语法上有什么区别?,xpath,xslt,Xpath,Xslt,我正在从MSXML3.0更新代码以使用MSXML6.0。 但是,我注意到,对于MSXML3.0,默认的SelectionLanguage是XSL模式,而MSXML6.0只支持XPath。 我担心这种更改会在查询语法中引入差异 有人能列出这两种语法之间的区别吗?根据我的经验,XPath更容易理解。如果可以的话,我会像瘟疫一样避免XSL。但是您是对的,语法非常不同,因此如果您想从XSL切换到XPath,您需要做一些工作。我无法轻松解释这些差异,但本教程应该让您了解XPath的含义: 如果我没记错的话

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


有人能列出这两种语法之间的区别吗?

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


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

有一件事让我大吃一惊,那就是选择了节点集中的第一个节点。例如,我们一直在使用MSXML 3.0,它使用XSLPattern并具有如下查询:

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

/root/book[1]
因此,当我切换到使用MSXML6.0(使用正确的XPath)时,所有带有[0]的查询都停止了工作

更新: 我刚刚找到了这个链接,它详细介绍了XSLPattern和XPath:

MSDN杂志:MSXML3.0支持XPath1.0、XSLT1.0、XDR和SAX2

更新2:

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

更新3

这里有另一篇文章描述了我上面提到的同样的事情:


XSL模式似乎是WD-XSL工作草案XSL的一部分,这意味着XSL建议1999之前的版本与最终的1.0版本有很大的不同

微软拥有这一优势。这里引用了XPath 1.0 API一节:

MSXML2.0提供了对XSL模式的支持,XSL模式是XPath1.0的前身。最初的W3CXSL工作草案中引入了XML寻址语言的概念http://www.w3.org/TR/1998/WD-xsl-19981216.html 并称之为XSL模式。MSXML2.0实现了原始XSL规范中描述的XSL模式语言,但有几个小的例外

MSXML3.0提供了对传统XSL模式语法以及XPath1.0的支持


XSL模式与XSL不同。XSL模式非常模糊