Прямо сейчас у меня XSLT, который преобразует XML так, как я хочу. Но он работает очень медленно. Основная проблема здесь:Возможная оптимизация XSLT
<xsl:key name="document" match="/coverage/module/method/seqpnt/@document" use="." />
<xsl:key name="classes" match="/coverage/module/method/@class" use="." />
<xsl:template match="/coverage[@profilerVersion='1.5.8 Beta']">
<xsl:variable name="allDocuments" select="module/method/seqpnt/@document[generate-id()
= generate-id(key('document',.)[1])]" />
<xsl:for-each select="$allDocuments">
<xsl:if test="$docUrl = .">
<xsl:variable name="docId" select="position()" />
......
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:for-each>
allDocuments
Основном переменная содержит список всех документов - список строк. Я хочу позже заменить атрибут во входном XML, который содержит значение этого документа для документа ID - абсолютную позицию в этом списке. Прямо сейчас я просматриваю каждую запись и проверяю, равна ли строка строке в списке, и если да - сделайте позицию. Есть ли способ достичь лучшей производительности? Например, чтобы использовать ключ для переменной?