1

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

XPath 轴(即 parent、attribute、child .....)或位置路径表达式(即 ./..、./@attribute 、./childnode、...)

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

4

3 回答 3

3

它们是相同的。大多数轴只能使用完整形式来选择,但是对于最常见的轴有缩写,可以使 XPath 表达式更简洁。

  • child::可以省略

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

  • @==attribute::

  • .==self:node()

  • ..==parent::node()

于 2013-04-19T12:30:55.487 回答
2

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

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

例如:

.[someCondition]

..[someCondition]

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

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

self::node()[someCondition]

parent::node()[someCondition]
于 2013-04-21T16:31:04.270 回答
0

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

于 2013-04-19T13:55:09.750 回答