我知道如果我有这样的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>
Run Code Online (Sandbox Code Playgroud)
我可以像这样在XSL文件中定义一个键:
<xsl:key name="preg" match="person" use="@id"/>
Run Code Online (Sandbox Code Playgroud)
我在哪里使用id作为密钥.然而,唐纳德被列入两次,但只是在preg的一个地方.
假设我希望他在preg中列出两次.也就是说,我想让类名成为标识符的一部分.基本上,我希望preg具有等价于有序对的键:( class-name,id).我该怎么做(使用XSLT 1.0)?
连接密钥?怎么样
use="concat(../@name, @id)"
Run Code Online (Sandbox Code Playgroud)
这将使它们在索引中分开.您当然必须使用相同的密钥来检索它们.为了避免任何歧义,我还要包含一个不会出现在任何一个子键中的分隔符,如
use="concat(../@name, '|', @id)"
Run Code Online (Sandbox Code Playgroud)
这是Michael Kay的XSLT2参考中推荐的方法.