Ben*_*Ben 1 xquery sequence marklogic
我希望节点替换为$ person变量.我需要改变什么?
以下代码应将序列中人员的名称更改为X.
declare function local:ChangeName($person)
{
xdmp:node-replace($person//Name/text, text { "X" } )
<p>{$person}</p>
};
let $b := <Person>
<Name>B</Name>
<IsAnnoying>No</IsAnnoying>
</Person>
let $j := <Person>
<Name>J</Name>
<IsAnnoying>No</IsAnnoying>
</Person>
let $people := ($b, $j)
return $people ! local:ChangeName(.)
Run Code Online (Sandbox Code Playgroud)
xdmp:node-replace() 仅对持久文档进行操作,而不对内存中的文档进行操作.
您的local:ChangeName()函数可以构造Person和Name元素,但复制IsAnnoying元素,如:
declare function local:ChangeName($person)
{
<p>
<Person>
<Name>X</Name>
{$person//IsAnnoying}
</Person>
</p>
};
Run Code Online (Sandbox Code Playgroud)
对于更复杂的转换,请考虑递归类型切换或XSLT转换.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |