0

我有以下 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 表达式?

4

1 回答 1

1

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

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

于 2020-09-04T15:34:00.353 回答