是否有一些关于如何在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)这样的选择器更糟糕。我是否可以概括一下这一点,并说选择器越有选择性,它就越快?
对于另一个例子:如果您想要第二个区段元素,您可以从所有区段的子树中提取它,或者使用//d:section[@userlevel]
直接选择它。这个选择器使用的属性更有选择性,但会更快吗?
使用XPath时应该做什么(或避免)的经验规则?
发布于 2013-06-19 07:01:45
我认为您需要查看特定的XSLT、XPath或XQuery处理器,甚至是特定的处理器和特定的树模型,然后运行测试。例如,//foo
是如此常见,以至于它可能在实现中被优化。
当我在输入示例中使用XQuery //section
运行了10次Saxon9.5JavaHE时,我得到了“平均执行时间: 1.007739ms”,而对于/chapter/section
,则得到了“平均执行时间: 1.443799ms”。
https://stackoverflow.com/questions/17194051
复制相似问题