Есть ли общие советы или рекомендации по созданию более эффективных селекторов xpath в xslt?Лучшая практика для эффективных селекторов xpath
Например, у вас есть XML-документ DocBook, который содержит только разделы первого уровня, например:
<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?
Интересно. Действительно оптимизация или, возможно, кеш файловой системы? Обычно я переписывал '// section' в'/chapter/section', но в некоторых случаях, вероятно, лучше наоборот. Например, если путь выбирает большинство узлов в документе и узлах, например, база данных группируется в предварительном порядке. В индексе B + -кластеров он просто следует указателям на данные и фильтрует некоторые узлы из результата. – Johannes
Я думаю, все зависит от документа. Я надеялся на простой список вещей, которые нужно искать, но xpath не открыт для такого упрощения. – Tim
Если вам нужен список вещей, которые нужно искать с помощью XSLT 2.0, то проверьте статью «Десять самых распространенных ошибок программирования XSLT» на http://dev.saxonica.com/blog/mike/2010/06/. –