これは初心者の質問です。異なるXSLTテンプレート間の変数参照に関するものです。連鎖したXSLTの変数参照に関する質問
私は最初にXSLTファイルを持っており、その中にテンプレートAを宣言しました。その中に基本的にXMLファイルの各レコード(行)をループします。たとえば、xml_A私はxml_Aの現在のレコードの "id"という特定のフィールドを参照する変数を宣言しました。その後、このため、各ループ内で、私はテンプレートBの場合は、別のテンプレートB.に
<xsl:template name="A">
<LoopA>
<xsl:for-each select="$xml_A//xml_A_row">
<xsl:variable name="id_A" select="id"/>
....
</LoopA>
<xsl:call-template name="B"/>
</xsl:template>
を呼び出す必要があり、私は実際には同じディレクトリの下に別のXSLTファイルを作成しました。
<xsl:template name="B">
<LoopB>
<xsl:variable name="id_A" select="id"/>
...
</loopB>
</xsl:template>
ここに私が来る:私はそれをやった方法ですBは、XMLファイルからのレコードの数百万人「xml_B」が含まれていますが、私はここで、テンプレートAの現在のレコードと同じIDのフィールドを持つレコードをしたいです質問。上記の<xsl:variable name="id_A" select="id"/>
を使用して、上部ループがオンになっている現在のレコードのidフィールドを参照しています。しかし、データファイルが非常に大きいので、これが正しいかどうかわからないので、いくつかのテストを行いました。したがって、これが正しいことをしているかどうかを視覚的にテストすることは容易ではありません。
外部ループの変数への上記の参照が正しいかどうか誰かが助言できるかどうか疑問に思います。なぜなら、私がそれを削除すると、XMLエディタが文句を言うからです。
ありがとうございます。私は十分にそれを明確にしなかったと思うコメント
から
を更新。 実際には
xml_A
またはxml_B
のいずれも、XSLTされるxmlファイルの です。 これらはデータファイルであり、データを取り出すために を使用します。 の場合は が空の別のXMLファイルCが使用されています。だから私のスタイルシートでは、 の回答を使用して、私は への道を持っている必要があります ファイルxml_Aを参照してください。
質問が不明です。スタイルシートフラグメントに 'loopA'と' loopB'要素が何をしていますか? –
@Aljandro:LoopAとLoopBは、出力XMLに表示される単なるタグです。 – Kevin
'LoopA'と' LoopB'が*リテラルの結果要素*である場合、内容として機能的な 'xsl:template'要素を持つことはできません。完全なスタイルシートを表示してください。 –