我知道如果我有这样的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用作密钥的地方。但是,唐纳德(Donald)被列出两次,但是在预浸料中仅排在一个位置。

假设我想让他在准备中列出两次。也就是说,我想使类名成为标识符的一部分。基本上,我希望preg具有与有序对等效的键:(类名,ID)。我该怎么做(使用XSLT 1.0)?

最佳答案

连接键?怎么样

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

这将使它们在索引中分开。您当然必须使用相同的键来检索它们。为了避免任何歧义,我还将在两个子键中都包含一个定界符,例如
use="concat(../@name, '|', @id)"

这是Michael Kay的XSLT2参考中推荐的方法。

10-04 23:02
查看更多