私の入力xmlファイルは次のとおりです。
<root>
<Property>
<Name>Jack</Name>
<Color>red.green</Color>
</Property>
<Property>
<Name>Jill</Name>
<Color>red.blue</Color>
</Property>
<Property>
<Name>Jim</Name>
<Color>red.orange</Color>
</Property>
<Property>
<Name>Tom</Name>
<Color>black.brown</Color>
</Property>
.
.
.
<Property>
<Name>Tom</Name>
<Color>white</Color>
</Property>
</root>
XSLT 1.0 では、以前の要素値を持つすべての Property 要素を選択したいと考えています。は同じで、 の前に同じ値を作成します。一つの記録として。
例 (サンプルのサブ入力ファイルを使用) 1) input.xml
<root>
<Property>
<Name>Jack</Name>
<Color>red.green</Color>
</Property>
<Property>
<Name>Jill</Name>
<Color>red.blue</Color>
</Property>
<Property>
<Name>Jim</Name>
<Color>red.orange</Color>
</Property>
</root>
サンプル サブ output.xml
<red>
<green>Jack<green>
<blue>Jill<blue>
<orange>Jim<orange>
<red>
2) 入力.xml
<root>
<Property>
<Name>Jack</Name>
<Color>red.green</Color>
</Property>
<Property>
<Name>Jill</Name>
<Color>green.orange</Color>
</Property>
<Property>
<Name>Jim</Name>
<Color>orange.red</Color>
</Property>
<Property>
<Name>Ted</Name>
<Color>brown</Color>
</Property>
</root>
サンプル サブ output.xml
<red>
<green>Jack</green>
</red>
<green>
<orange>Jill<orange>
</green>
<orange>
<red>Jim</red>
</orange>
<brown>Ted</brown>
私はstackoverflow自体で同様の質問をしましたが、次のようなステートメントと混同しました
<xsl:apply-templates select="/root/Property[generate-id(.) = generate-id(key('test',Property)[1])]"/>
キーは次のとおりです。
<xsl:key name='test' match='Property' use='.'/>
[ここでもう 1 つ質問: キーの一致値は、 Property または root/Property として指定する必要があります。キーはコンテキストに応じて Property 要素を選択すると考えています。(ここでのコンテキストは /root/Property です。これは、ステートメントでここで指定された XPATH 式であるため、<xsl:apply-templates select="/root/Property)
これについて明確にしてください。]
私の実際の懸念は
これを使用する代わりに:
<xsl:apply-templates select="/root/Property[generate-id(.) = generate-id(key('test',Property)[1])]"/>
私はこれを使用できます:
<xsl:apply-templates select="key('test',//root/Property)"/>
キーがどこにあるか
<xsl:key name='test' match='Property' use='.'/>
実際の違いは何ですか (実行とフローに関して)?