如何将 xpath 存储在变量中并将其与 XSLT 1.0 一起使用

发布于 2024-10-31 02:35:44 字数 384 浏览 1 评论 0原文

我正在尝试使用 for-each 中具有 xpath 的变量。但这给了我一个错误,即表达式必须计算为节点集。

NodeName 定义为

<xsl:variable name="NodeName" select="name(.)"/>

<xsl:variable name="SyncPath" 
              select="concat('/combinedxml/com.csc_PolicySyncRs/',$NodeName)"/>

,这里是 for-each 循环

<xsl:for-each select="$SyncPath/*">

I am trying to use a variable that has xpath in for-each. But it is giving me an error that Expression must evaluate to a node-set.

NodeName is defined as

<xsl:variable name="NodeName" select="name(.)"/>

<xsl:variable name="SyncPath" 
              select="concat('/combinedxml/com.csc_PolicySyncRs/',$NodeName)"/>

and here is for-each loop

<xsl:for-each select="$SyncPath/*">

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

有木有妳兜一样 2024-11-07 02:35:44

我将进行大胆猜测并假设您有兴趣将变量转换为节点集以便稍后在 XPath 中使用它。这可以使用扩展函数 exsl:node-set() 来完成。 文档有使用示例。

引用:

该用例显示了以下结果
使用 exsl:node-set() 转换
结果树片段到节点集。

来源

<doc>
   <one />
   <two />
   <three />
   <four />
</doc>

样式表

<!--  Test exslt:node-set applied to a result tree fragment  -->
<xsl:variable name="tree">
   <a>
      <b>
         <c>
            <d />
         </c>
      </b>
   </a>
</xsl:variable>
<xsl:template match="/">
   <out>
      <xsl:value-of select="count(exslt:node-set(//*))" />
   </out>
</xsl:template>

结果

<out xmlns:exslt="http://exslt.org/common">5</out>

I will take wild guess and assume you're interested in converting variable to node set in order to use it later in XPath. This could be done using extension function exsl:node-set(). The documentation have examples of usage.

Quote:

This use case shows the result of
using exsl:node-set() to convert a
result tree fragment to a node-set.

source

<doc>
   <one />
   <two />
   <three />
   <four />
</doc>

stylesheet

<!--  Test exslt:node-set applied to a result tree fragment  -->
<xsl:variable name="tree">
   <a>
      <b>
         <c>
            <d />
         </c>
      </b>
   </a>
</xsl:variable>
<xsl:template match="/">
   <out>
      <xsl:value-of select="count(exslt:node-set(//*))" />
   </out>
</xsl:template>

result

<out xmlns:exslt="http://exslt.org/common">5</out>
对不⑦ 2024-11-07 02:35:44

使用

<xsl:variable name="SyncPath"
    select="/combinedxml/com.csc_PolicySyncRs/*[name()=$NodeName]"/>

Use:

<xsl:variable name="SyncPath"
    select="/combinedxml/com.csc_PolicySyncRs/*[name()=$NodeName]"/>
星星的轨迹 2024-11-07 02:35:44

XSLT 1.0(实际上是 2.0)没有用于将 XPath 表达式构造为字符串然后对其求值的标准工具。许多处理器都有一个扩展函数来执行此操作,分别称为 dyn:evaluate、saxon:evaluate 等。

XSLT 1.0 (and indeed 2.0) has no standard facility for constructing an XPath expression as a string and then evaluating it. Many processors have an extension function to do this, variously called dyn:evaluate, saxon:evaluate, etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文