gpt4 book ai didi

XSLT 2.0 Xpath 错误 "not a node item"

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

我的第一篇文章 - 当然希望有人能知道答案!我已经能够为我遇到的许多问题找到解决方案,但不能为这个问题找到解决方案。该网站上关于同一主题的问题和答案没有解决我的问题...

我有一个包含格式规范的 xml,例如

<Format>
<TagNr>92</TagNr>
<Option>A</Option>
<Format>//[N]15d</Format>
</Format>
<Format>
<TagNr>92</TagNr>
<Option>B</Option>
<Format>//3!a/3!a/15d</Format>
</Format>

TagNr + 选项是此节点集中的唯一组合。

我定义了一个键,以便更轻松地使用这组格式:

<xsl:key name="xx" match="//Format/Format" use="concat(../TagNr, ../Option)"/>

我确实可以使用这个键并获得正确的值,但仅限于非特殊元素;在 for-each 或其他构造(如下所示)中使用此键时,我收到错误“XPath 2.0 表达式中的错误不是节点项”。

我试图实现的目标如下:在处理的其他节点中,有一个选项字符串,我希望检索每个字符的格式。例如:

<Tag>
<TagNr>92</TagNr>
<Options>AB</Options>
</Tag>

我一直在尝试以下多种变体,但没有成功:

<xsl:variable name="TN"><xsl:value-of select="TagNr"/></xsl:variable>
<xsl:variable name="optList">
<xsl:analyze-string select="./Options" regex="[A-Z]">
<xsl:matching-substring>
<xsl:variable name="TNO" select="concat($TN, .)"/>
<opt>
<tag><xsl:value-of select="$TNO"/></tag>
<fmt><xsl:value-of select="key('xx', $TNO)"/></fmt>
</opt>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>

使用正则表达式分割成单个字符效果很好,并且当(仅)检索 opt/tag 的值时也效果很好。但是当我添加 opt/fmt 时,我遇到了提到的 Xpath 表达式 select="key('xx', $TNO)" 的错误消息。

我尝试根据本网站另一个线程中的建议定义一个基于关键函数的变量,但没有成功。

有人可以帮助我吗?

最佳答案

key() 函数(带有两个参数)搜索包含上下文节点的文档。如果上下文项不是节点(例如,在分析字符串中),那么您将收到此错误,因为它不知道要搜索哪个文档。答案是使用 key() 的第三个参数来提供此信息。

关于XSLT 2.0 Xpath 错误 "not a node item",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8601284/

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