当我们使用XSLT处理XML时,哪一个能提供更好的性能
XPath Axes (即父级,属性,子级.....)或位置路径表达式(即。/ ..,。/ @属性,./ childnode,...)
请帮助我哪一个更具性能和安全使用..
答案 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..
。这可以根据需求和复杂性加快转换速度。