0

現在、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>&#xa;</xsl:text>
                        </xsl:if>
    </xsl:for-each>

基本的allDocumentsに、変数にはすべてのドキュメントのリスト、つまり文字列のリストが含まれます。後で、そのドキュメントの値を含む入力 XML の属性をドキュメント ID (このリストの絶対位置) に置き換えたいと考えています。現在、各レコードをループして、文字列がリスト内の文字列と等しいかどうかを確認し、そうであれば位置を取得します。より良いパフォーマンスを達成する方法はありますか? たとえば、変数にキーを使用するには?

4

1 に答える 1