2010-07-26 67 views
3

我知道,如果我有这样的XML文件:使用XSL的两个元素:键键

<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)?

+0

XSLT 1.0或2.0? – 2010-07-26 17:43:24

回答

6

连接键?如何

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

这将有助于使他们在索引中分开。你当然必须使用相同的密钥来检索它们。为了避免任何含糊之处我还包括将不在任子项中出现一个分隔符,如

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

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