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 作为键。然而,唐纳德被列出了两次,但在 preg 中只在一个地方。

假设我希望他在 preg 中列出两次。也就是说,我想让类名成为标识符的一部分。基本上,我希望 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 回答