は私が書いていないいくつかのXSLTを持っているが、私はそれを維持する必要があります。いくつかの点では、generate-id()を使って空のdivを作成し、それからスクリプトによってさらに操作されます。問題はdivが別のdivの中にあることです(私はこれがちょっと無意味だと思っていましたが、とにかく受け入れ可能です)、両方とも同じIDを与えられています!私はXalanでこれを試してみましたが、JRE変圧器を使って同じ結果を得ました。私は、Eclipseの/ XalanのXSLTデバッガを使用しようとしましたが、私は事をステップオーバーしていたときに、それはすべてが正常に動作します...なぜgenerate-id()関数は同じidを2回返すのですか?
XSLTは、次のようになります。
<xsl:template match="listed">
<xsl:variable name="showwhat">
<xsl:call-template name="IdentifyAudience"/>
</xsl:variable>
<xsl:if test="string-length($showwhat) > 0">
<div>
<xsl:attribute name="id">
<xsl:value-of select="generate-id()"/>
</xsl:attribute>
<xsl:call-template name="Blah"/>
<xsl:apply-templates/>
</div>
</xsl:if>
</xsl:template>
そしてXMLフラグメントが似ていますこの:
<listed id='ID39AF705AE17A000F337B000A' mode='html'>
<ul>
<li>Blah blah</li>
</ul>
</listed>
<listed id='ID39AF715892AE000F337B002B' mode='html'>
<ul>
<li>Blech blech.</li>
</ul>
</listed>
これはちょっと複雑です - 何か手掛かりですか?お願いします?
あなたの文はreproedすることはできませんコンテキストノードは変更されません。 XSLT変換(可能な限り)。これらを提供してください。そうでないと、あなたの質問は本当に答えられる質問ではありません。 –
投稿したXMLフラグメントは何ですか?結果であれば、そのXSLTコードでは生成されていません。なぜなら、 'id'で' div'sを生成しますが、結果に 'div'がないからです。 – khachik
@Dimitre - ok誰かが同じような状況でgenerate-idと似たようなことに遭遇したかもしれないと思った。 XMLとXSLTの両方が10k行以上実行されますが、私は最小限の例を作成します。 – jambox