XSLT:使用带有结果树片段的键?
XSLT: Using a key with a result tree fragment?
从我的 , the p elements I want to apply the 到实际上在结果树片段中。
如何实现按键功能:
<xsl:key name="kRByLevelAndParent" match="p"
use="generate-id(preceding-sibling::p
[not(@ilvl >= current()/@ilvl)][1])"/>
匹配结果树片段中的 p 个元素?
在该答案中,密钥是通过应用模板使用的:
<xsl:template match="/*">
<list>
<item>
<xsl:apply-templates select="key('kRByLevelAndParent', '')[1]" mode="start">
<xsl:with-param name="pParentLevel" select="$pStartLevel"/>
<xsl:with-param name="pSiblings" select="key('kRByLevelAndParent', '')"/>
</xsl:apply-templates>
</item>
</list>
</xsl:template>
我想将我的结果树片段作为参数传递,并让键匹配其中的 p 个元素。
这是正确的思考方式吗?
XSLT 2.0 及更高版本中没有结果树片段,只有临时树。至于键,它们适用于每个文档, key
函数只有第三个参数传递给根节点或子树进行搜索,所以假设你有临时树 $var
你可以使用 key('keyname', key-value-expression, $var)
在 $var
.
中查找元素
从我的
如何实现按键功能:
<xsl:key name="kRByLevelAndParent" match="p"
use="generate-id(preceding-sibling::p
[not(@ilvl >= current()/@ilvl)][1])"/>
匹配结果树片段中的 p 个元素?
在该答案中,密钥是通过应用模板使用的:
<xsl:template match="/*">
<list>
<item>
<xsl:apply-templates select="key('kRByLevelAndParent', '')[1]" mode="start">
<xsl:with-param name="pParentLevel" select="$pStartLevel"/>
<xsl:with-param name="pSiblings" select="key('kRByLevelAndParent', '')"/>
</xsl:apply-templates>
</item>
</list>
</xsl:template>
我想将我的结果树片段作为参数传递,并让键匹配其中的 p 个元素。
这是正确的思考方式吗?
XSLT 2.0 及更高版本中没有结果树片段,只有临时树。至于键,它们适用于每个文档, key
函数只有第三个参数传递给根节点或子树进行搜索,所以假设你有临时树 $var
你可以使用 key('keyname', key-value-expression, $var)
在 $var
.