Преобразование XSLT (запрос, связанный с производительностью) - PullRequest
0 голосов
/ 17 мая 2011

Я выполняю преобразование XML-документа, используя следующий фрагмент кода:

<xsl:for-each select="document('POC.XML')/a/b/Outputs/*">
  <ns0:xyz xmlns:ns0="http://ratabase.cgi.com/">
    <ns0:na>
      <xsl:value-of select="local-name()" />
    </ns0:na>
    <ns0:Val>
      <xsl:value-of select="." />
    </ns0:Val>
  </ns0:Rat>
</xsl:for-each>

Я хотел бы знать, есть ли какое-либо снижение производительности при использовании (<xsl:for-each select="document('POC.XML')/a/b/Outputs/*">) с использованием функции документа в сочетании с оператором for-each при использовании в крупномасштабных приложениях?

Один из подходов, который я использую для преобразования xml, заключается в использовании приведенного ниже синтаксиса:

<xsl:variable name="var:xmldoc" select="document('POC.XML')/a/b/c/d/Outputs"/>
<xsl:copy-of select="$var:xmldoc"/>

Я также хотел бы знать, применимы ли какие-либо альтернативные методы для выполнения вышеуказанного преобразования.

1 Ответ

0 голосов
/ 18 мая 2011

Производительность полностью зависит от используемого вами процессора XSLT;нет смысла задавать вопрос производительности, не говоря о том, какой процессор вы спрашиваете.Я ожидал бы, что большинство процессоров XSLT будут обрабатывать эту конструкцию достаточно эффективно (они, конечно, не будут анализировать документ повторно) - но могут быть исключения.измерить это.Нет смысла спекулировать на предмет производительности - если вы не можете измерить разницу, то не о чем беспокоиться.

Ваш второй пример кода довольно неясен.ОК, вы выбираете несколько узлов, а затем копируете их.Вы не говорите, почему копируете их - обычно в XSLT вам не нужно копировать вещи, потому что вы можете так же хорошо работать с оригиналом.

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