Оптимизация XPath / XSLT? - PullRequest
       4

Оптимизация XPath / XSLT?

0 голосов
/ 01 октября 2009

Я в основном беру файл fileA.xml, извлекаю узлы из совершенно разных частей файла и строю новое дерево в fileB.xml. Относительные пути теперь немного сбивают с толку, потому что, как только я попадаю на узел, вложенный в 3, и мне нужно добавить еще один узел, который вложен в 4 из совершенно другой ветви, я начинаю нуждаться в глобальных путях xpath.

Вопрос в том, что лучше работает? Относительные пути или глобальные пути?

1) node3 (when I'm in node1/node2)
2) /node1/node2/node3


<code><node1a>
    <node2a>
        <node3a/>
        <node3a/>
        <node3a/>
    </node2a>
    <node2b>
        <node3b>
            <node4b/>
        </node3b>
    </node2b>
</node1a></code></p>

<p><code><!-- the above is rearranged to this -->
<node1a>
    <node4b/>
    <node3a/>
    <node3a/>
    <node3a/>
</node1a></code>

Файл FileA.xml всегда будет иметь одинаковую структуру, и повторное использование шаблонов xslt не является проблемой. Так я должен просто использовать глобальные пути?

В противном случае слишком много контекста, чтобы отслеживать это, кажется.

Большое спасибо, Lance

Ответы [ 3 ]

3 голосов
/ 01 октября 2009

Для тривиальной реализации каждый шаг, включающий имя элемента, является поиском строки; так что чем меньше, тем лучше. Иначе, это очень сильно зависит от реализации. Кроме того, относительные пути более идиоматичны.

1 голос
/ 01 октября 2009

Я не эксперт, но относительные пути и глобальные пути, которые не используют операторы * или //, должны иметь одинаковую производительность.

1 голос
/ 01 октября 2009

Я бы сказал, не волнуйтесь об этом сейчас. Если ваши XML-файлы станут достаточно большими, чтобы это имело значение, вы, вероятно, в любом случае не будете использовать XPath, так как для этого требуется загрузка всего документа в память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...