有没有一种方法可以使用saxon从文本列表中调用xQuery函数?

问题描述

我有以下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,$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表达式的方法

解决方法

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

Saxon-PE和更高版本具有扩展名saxon:evaluate(),其功能大致相同,可以从XQuery调用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...