对 xsl:key key 使用两个元素
我知道如果我有一个像这样的 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 中只出现了一个位置。
假设我想让他在 preg 中列出两次。也就是说,我想让类名成为标识符的一部分。基本上,我希望 preg 具有相当于有序对的键:(类名,id)。我该如何做到这一点(使用 XSLT 1.0)?
I know that if I have an XML file like this:
<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>
I can define a key in an XSL file like this:
<xsl:key name="preg" match="person" use="@id"/>
where I'm using id as the key. However, Donald is listed twice, but is only in one place in preg.
Suppose I want him listed twice in preg. That is, I want to make the class name be part of the identifier. Basically, I want preg to have keys that are equivalent to ordered pairs: (class-name, id). How do I do that (using XSLT 1.0)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
连接键? 怎么样?
这样可以使它们在索引中分开, 当然,您必须使用相同的密钥来检索它们。为了避免任何歧义,我还将包含一个不会出现在任一子项中的分隔符,如
这是 Michael Kay 的 XSLT2 参考中推荐的方法。
Concatenate the keys? How about
This would serve to keep them separate in the index. You'd of course have to use the same key to retrieve them. To avoid any ambiguity I'd also include a delimiter that won't occur in either subkey, as in
This is the recommended approach in Michael Kay's XSLT2 reference.