高效xpath选择器的最佳实践

时间:2013-06-19 14:32:22

标签: xslt xpath

是否有一些关于如何在xslt中创建更高效​​的xpath选择器的一般提示或最佳实践?

例如,假设您有一个仅包含第一级部分的DocBook XML文档,如下所示:

<chapter>
  <section><info><title>my first section</title></info> ... </section>
  <section userlevel="expert"><info><title>my second section</title></info> ... </section>
  <section><info><title>my third section</title></info> ... </section>
</chapter>

认为在几乎所有情况下,像//d:section(1)这样的选择器比/d:chapter/d:section(2)更差。我可以概括一下并说选择器选择性越快它会越快吗?

另一个例子:如果你想要第二个section元素,你可以从所有部分的子树中提取它,或者直接用//d:section[@userlevel]选择它。这个选择器使用更具选择性但又更快的属性?

使用XPath时应该做什么(或避免)的经验法则?

1 个答案:

答案 0 :(得分:2)

我认为您需要查看特定的XSLT或XPath或XQuery处理器,甚至是特定处理器和特定树模型,然后运行测试。例如//foo非常常见,可能会在实现中进行优化。

当我在输入样本上使用XQuery //section十次运行Saxon 9.5 Java HE时,我得到“平均执行时间:1.007739ms”而/chapter/section我得到“平均执行时间:1.443799ms ”