XSLT-在谓词过滤器中,为什么有时必须使用XSLT current()函数而不是XPath上下文节点点运算符?

XSLT-在谓词过滤器中,为什么有时必须使用XSLT current()函数而不是XPath上下文节点点运算符?,xslt,xpath,xmlnode,Xslt,Xpath,Xmlnode,在谓词过滤器中,我试图找出如何最好地解释为什么以及何时必须使用XSLTcurrent()函数而不是XPath上下文节点表达式 w3schools页面上给出的示例只起到了一点作用,因为它似乎只是说明了差异,而没有真正解释它。Michael Kay在“XSLT 2.0和XPath 2.0,第四版”第13章中对current()函数的讨论以及Paul Jungwirth对问题的回答都有助于我个人理解两者的区别;但每一个都让我在如何向其他人解释差异而不仅仅是用图表和代码来说明差异上苦苦挣扎 如果有人能分

在谓词过滤器中,我试图找出如何最好地解释为什么以及何时必须使用XSLT
current()
函数而不是XPath上下文节点
表达式

w3schools页面上给出的示例只起到了一点作用,因为它似乎只是说明了差异,而没有真正解释它。Michael Kay在“XSLT 2.0和XPath 2.0,第四版”第13章中对
current()
函数的讨论以及Paul Jungwirth对问题的回答都有助于我个人理解两者的区别;但每一个都让我在如何向其他人解释差异而不仅仅是用图表和代码来说明差异上苦苦挣扎


如果有人能分享他们如何进一步解释这一点,我将不胜感激。

我理解了这段代码 资料来源:


因此,您可以使用“current”函数检查您在当前节点中查找的内容,而不是在子节点中查找的内容,如点。

上下文节点会随着您添加到路径表达式中的任何步骤和谓词而变化,而当前节点只会由XSLT指令(如apply templates)和for each)进行更改

在XPath中,位置路径表达式是相对于上下文节点的,例如:

head/title

谓词用于过滤序列(v1中的节点集)。谓词表达式针对序列中的每个项(或节点)进行求值,使用该项作为上下文。e、 g

div[@class] (: @class is relative to div :)
XSLT(非XPath)中提供了
current()
函数,用于引用包含
xsl:template
xsl:for each
指令的当前正在处理的节点


非常简洁的解释,Max.谢谢。@ USSR469092如果你觉得这是最有用的,请考虑接受这个答案。@ MasiasuüLelr是新来的,我很欣赏这个建议。谢谢。我想我做对了(通过点击复选标记)。
using current
child[current()/variable = 'A']// -> is true

using dot
child[./variable = 'A']// -> is false

using dot
child[./variable = 'B']// -> is true
head/title
@class
div[@class] (: @class is relative to div :)