当我们使用 XSLT 处理 XML 时,哪一个能提供更好的性能
XPath 轴(即 parent、attribute、child .....)或位置路径表达式(即 ./..、./@attribute 、./childnode、...)
请帮助我哪一个具有更高的性能和安全的使用..
它们是相同的。大多数轴只能使用完整形式来选择,但是对于最常见的轴有缩写,可以使 XPath 表达式更简洁。
child::
可以省略
//
==descendant-or-self::node()
@
==attribute::
.
==self:node()
..
==parent::node()
鲍罗丁的回答几乎是正确的。
虽然给定的表达式具有相同的效率,但它们在使用它们的语法规则上有一些细微的差别。
例如:
.[someCondition]
..[someCondition]
是无效的 XPath 1.0 表达式,并且任何兼容的 XSLT 1.0 处理器都会引发编译时错误。这些在 XPath 2.0 中是合法的。
在 Xpath 1.0 中,应该使用这些语法上合法的表达式:
self::node()[someCondition]
parent::node()[someCondition]
我不确定,但如果你有性能问题(这不仅仅是一个理论问题),你应该看看<xsl:key..
and select="key..
. 根据需求和复杂性,这可以大大加快转换速度。