XPath Axes的更好性能与XSLT / Xpath中的位置路径表达式相比

时间:2013-04-19 12:13:20

标签: xslt xpath xslt-1.0 xslt-2.0

当我们使用XSLT处理XML时,哪一个能提供更好的性能

XPath Axes (即父级,属性,子级.....)或位置路径表达式(即。/ ..,。/ @属性,./ childnode,...)

请帮助我哪一个更具性能和安全使用..

3 个答案:

答案 0 :(得分:2)

他们是完全相同的。大多数轴只能使用完整形式选择,但最常见的缩写使XPath表达式更简洁。

  • child::可能会被省略

  • // == descendant-or-self::node()

  • @ == attribute::

  • . == self:node()

  • .. == parent::node()

答案 1 :(得分:2)

鲍罗丁的回答几乎是正确的。

虽然给定的表达式具有相同的效率,但它们在使用它们的语法规则方面存在一些细微差别

例如:

.[someCondition]

..[someCondition]

是无效的XPath 1.0表达式,任何兼容的XSLT 1.0处理器都会引发编译时错误。这些在XPath 2.0中是合法的。

在Xpath 1.0中,应该使用这些语法上合法的表达式:

self::node()[someCondition]

parent::node()[someCondition]

答案 2 :(得分:0)

我不确定,但如果您遇到性能问题(而且这不仅仅是一个理论问题),您应该查看<xsl:key..select="key..。这可以根据需求和复杂性加快转换速度。