4

次のような XML ファイルがある場合は、次のようになります。

 <persons>
   <class name="English">
        <person name="Tarzan" id="050676"/>
        <person name="Donald" id="070754"/>
        <person name="Dolly" id="231256"/>
   </class>
   <class name="Math">
        <person name="Winston" id="050677"/>
        <person name="Donald"  id="070754"/>
        <person name="Fred"    id="231257"/>
   </class>
 </persons>

次のように、XSL ファイルでキーを定義できます。

 <xsl:key name="preg" match="person" use="@id"/> 

id をキーとして使用しています。ただし、ドナルドは2回記載されていますが、プレグでは1か所しかありません。

彼をpregに2回リストしたいとします。つまり、クラス名を識別子の一部にしたいのです。基本的に、preg には順序付けられたペア (class-name, id) と同等のキーが必要です。どうすればいいですか (XSLT 1.0 を使用)。

4

1 に答える 1

8

キーを連結しますか? どうですか

use="concat(../@name, @id)"

これは、インデックス内でそれらを分離するのに役立ちます。もちろん、それらを取得するには同じキーを使用する必要があります。あいまいさを避けるために、次のように、どちらのサブキーにも出現しない区切り文字も含めます。

use="concat(../@name, '|', @id)"

これは、Michael Kay の XSLT2 リファレンスで推奨されているアプローチです。

于 2010-07-26T17:42:33.797 に答える