【问题标题】:Is there a method to invoke xQuery function from a textlist using saxon?有没有一种方法可以使用 saxon 从文本列表中调用 xQuery 函数?
【发布时间】:2020-09-04 13:13:52
【问题描述】:

我有以下 XML

<?xml version="1.0" encoding="UTF-8"?>
    <SpecializedActions>
        <SpecializedAction>
            <Name>ActivateAAA_Account</Name>
            <Function>holaaalib:activate($csmHeader, $component, $taskName, $osmOrderId)</Function>
        </SpecializedAction>
        <SpecializedAction>
            <Name>ActivateIMSAccount</Name>
            <Function>imsLib:activate($csmHeader, $component, $taskName, $osmOrderId)</Function>
        </SpecializedAction>
    </SpecializedActions>

我尝试像这样调用我的通用 xQuery 中的函数

if (fn:exists($specializedAList/SpecializedAction[Name/text() = $specializedActionName])) then
    $specializedAList/SpecializedAction[Name/text() = $specializedActionName]/Function/text()

但是那样它会返回一个文本'imsLib:activate($csmHeader, $component, $taskName, $osmOrderId)'。有没有办法将其转换为 xQuery 表达式?

【问题讨论】:

  • 哪个版本,哪个撒克逊版本?这一切都是用 XQuery 完成的吗,或者为什么还有 XSLT 的标签?
  • 甲骨文在哪里适合?您选择这些标签但忽略了撒克逊标签是有原因的吗?
  • Xquery 1.0, Saxon EE 9.8.0.12 是的,这一切都是用 XQuery 完成的。 XSLT 是一个错误。甲骨文适合,因为它是关于甲骨文的订单和服务管理

标签: xml xquery saxon xquery-3.0 oracle-osm


【解决方案1】:

XSLT 3.0 有一条指令xsl:evaluate,可用于评估从源文档读取的 XPath 表达式(或在运行时以其他方式变出)。 XQuery 中没有等效的标准(尽管原则上您可以使用动态调用 XSLT 转换的fn:transform() 来实现。

Saxon-PE 和更高版本有一个扩展 saxon:evaluate(),它做的事情大致相同,并且可以从 XQuery 调用。

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 2011-01-28
    • 2013-11-05
    • 2019-09-05
    • 2021-07-10
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多