我是使用XQuery和XSLT的新手。 WebLogic正在使用XQuery 1.0。将节点追加到现有节点集的XQuery
我有一个WebLogic组合,我有一个节点的集合,只是想添加一个节点到XQuery分配中的现有节点集。我目前的解决方案似乎太重量级了。我将处理数以万计的记录,在我看来,应该有一种非常简单的方法,只需将节点插入另一个节点下并将其返回即可。
declare function local:func($svdPpl as element() (:: element(*, sv:svdPpl) ::),
$svdPsn as element() (:: element(*, sv:svdPsn) ::))
as element() (:: element(*, sv:svdPpl) ::) {
<sv:svdPpl>
{for $psn in $svdPpl return $psn} {$svdPsn}
</sv:svdPpl>
};
如果我正确理解XQuery,这意味着数百万个循环只是为了向现有节点集添加记录。我曾尝试将插入节点$ svdPsn用于$ svdPpl语法,但是这导致了WebLogic编辑器中的验证错误。
任何帮助表示赞赏。
以我理解的XQuery 1.0是,在节点和原子VALU的序列进行操作的声明性语言es,它根本没有回路。而节点集是XSLT和XPath 1.0的术语。你想添加一个元素节点作为另一个元素节点的子节点吗?你的XML输入如何看,你想添加的XML,这是你想要的结果? –
@MartinHonnen XQuery通常不被视为声明式。有循环和条件。技术上定义为查询语言,它非常类似于函数式语言,但特别是引入更高阶函数的XQuery 3.0。 – wst
@wst,那么,https://en.wikipedia.org/wiki/XQuery将'declarative'列为语言范例之一,并且https://en.wikipedia.org/wiki/Declarative_programming表示“常用的声明性语言包括那些数据库查询语言(例如,SQL,XQuery)“。我可以在XQuery 1.0规范中找到唯一使用“loop”这个词的评论。在我看来,FLOWR表达式不是一个循环。 –