XSLT-итерация или рекурсия - PullRequest
3 голосов
/ 13 июля 2011

Кто-нибудь измерял производительность выполнения эквивалента похожих XSL-преобразований итеративно или рекурсивно с использованием различных библиотек? Меня больше всего интересуют библиотеки Java, но приветствуются и другие предложения.

Пример для итерации (допустимо, дано при условии , что //*, вероятно, соответствует довольно нескольким элементам для примера, но не "верно" для "духа" XSLT) :

<xsl:for-each select="//*[position() &lt;= string-length(MyData/MyValue)]">
  <someTags>
    <xsl:value-of select="substring(MyData/MyValue, position(), 1)"/>
  </someTags>
</xsl:for-each>

Пример рекурсии (чистый, но довольно многословный для той же задачи):

<xsl:template match="data/node">
  <xsl:call-template name="for-each-character">                    
    <xsl:with-param name="data" select="."/>
  </xsl:call-template>
</xsl:template>

<xsl:template name="for-each-character">                
  <xsl:param name="data"/>
  <xsl:if test="string-length($data) &gt; 0">
    <someTags>                            
      <xsl:value-of select="substring($data,1,1)"/>
    </someTags>
    <xsl:call-template name="for-each-character">
      <xsl:with-param name="data" select="substring($data,2)"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

Оба примера были взяты из этого вопроса:

XSLT для каждой буквы в строке

Примечание : Переполнение стека, как правило, является местом жарких дискуссий о чистоте XSLT, а новичкам приходится правильно изучать XSLT. Хотя меня не волнует многословность «чистоты» или сама по себе субъективная «чистота», я действительно задаюсь вопросом о производительности здесь.

1 Ответ

1 голос
/ 13 июля 2011

это может ответить на ваш вопрос Лукас

https://stackoverflow.com/questions/506348/how-do-i-know-my-xsl-is-efficient-and-beautiful

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