gpt4 book ai didi

XSLT 关键元素 : "use" parent node of the "match"

转载 作者:行者123 更新时间:2023-12-01 11:57:06 25 4
gpt4 key购买 nike

我似乎无法弄清楚这件事。是否有可能拥有以下 key ?

<xsl:key name="kMatchSentenceID_withTokId" match="sentences/sentence/@ID"
use="--and here return the 'sentences' node--"/>

我不明白“使用”是如何工作的,它不应该是匹配匹配时返回的值吗?

我看到 use="." 在我的例子中返回了属性值。 (为什么?它与匹配相关联吗?. 不应该是 node() 吗?而不是 node()/@)

但最重要的是,为什么我不能做这样的事情:use="parent::sentence[@ID=name()]"

那我该怎么做呢?我需要匹配 @ID,但要返回它的父项(更具体地说,是父项的 ID)。

谢谢。

最佳答案

I don't get how "use" works, isn't it supposed to be a value that you return when the match was matched?

不,use 没有指定要“返回”的任何内容。来自 the spec :

The use attribute is an expression specifying the values of the key; the expression is evaluated once for each node that matches the pattern.

在键到值的映射中,use 指定键——键的值,用规范的语言——和match 指定那些键的值将映射到。换句话说,match 指定什么要分组,使用 指定如何将它们分组。

假设您希望通过其父sentence@IDsentence 元素进行分组。你可以这样做:

<xsl:key name="kMatchSentenceID_withTokId" match="sentences/sentence" 
use="parent::*/@ID"/>

你的表达毫无意义:

<xsl:key name="kMatchSentenceID_withTokId" match="sentences/sentence/@ID"
use="parent::sentence[@ID=name()]"/>

...因为它试图通过它们的父 sentence 元素之一对 ID 属性进行分组,这已经是一个错误,因为属性没有父元素。

关于XSLT 关键元素 : "use" parent node of the "match",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com