gpt4 book ai didi

xml - 使用包含的 XPath 表达式构造命名空间 Xml

转载 作者:数据小太阳 更新时间:2023-10-29 03:02:38 27 4
gpt4 key购买 nike

我正在尝试创建 XQuery 代码,该代码构造一个带命名空间的 xml 元素并将来自现有(非命名空间)元素的文本插入其中。以下代码是一个简化的示例:

xquery version "1.0-ml";

let $xml := <wrapper><elem>textIWant</elem></wrapper>
return <newElem xmlns="http://www.blah.org">{$xml/elem/text()}</newElem>

而不是产生所需的输出:

<newElem xmlns="http://www.blah.org">textIWant</newElem>

它产生这个:

<newElem xmlns="http://www.blah.org"/>

然而,这段代码有效:

xquery version "1.0-ml";

let $xml := <wrapper><elem>textIWant</elem></wrapper>
let $elemText := $xml/elem/text()
return <newElem xmlns="http://www.blah.org">{$elemText}</newElem>

使用其他形式的 xml 构造 (element () {...}) 也可以正常工作。这个问题似乎只发生在正在构造的 xml 被赋予命名空间时。第一个代码片段有什么问题?

最佳答案

通过 xmlns 伪属性提供命名空间会更改嵌套 XQuery 作用域中的默认元素命名空间。您可以通过使用命名空间前缀来解决这个问题,

declare namespace ns = "http://www.blah.org";
let $xml := <wrapper><elem>textIWant</elem></wrapper>
return <ns:newElem>{ $xml/elem/text() }</ns:newElem>

或使用“任何命名空间”XPath 语法:

$xml/*:elem/text()

关于xml - 使用包含的 XPath 表达式构造命名空间 Xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23354072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com