我知道如果我有这样的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参考中推荐的方法。