0
现在我有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>
Basicly allDocuments
变量包含的所有文件的列表 - 字符串列表。我想稍后将包含该文档的值的输入XML中的属性替换为文档ID - 此列表中的绝对位置。现在我正在循环每个记录并检查字符串是否与列表中的字符串相同,如果是这样 - 获取位置。有什么办法可以获得更好的表现吗?例如在变量上使用键?