【问题标题】:How to declare namespace for Element in Marklogic?如何在 Marklogic 中为 Element 声明命名空间?
【发布时间】:2018-06-20 08:12:36
【问题描述】:

我想为一个元素声明命名空间。我正在尝试如下-

declare namespace abc="http://marklogic.com/somenamespace";
let $link := "anylink"
let $Content := <content>content</content>
let $result := element abc:data  { 
element headers{},
element root {
  element {"element"}{
            attribute link {$link},
            $Content
          }
     }
}
return $result

我得到的输出-

<abc:data xmlns:abc="http://marklogic.com/somenamespace">
<headers>
------
---------
--------
</abc:data>

我不想在我的数据节点中出现“abc:”。我想要它喜欢-

<data xmlns="http://marklogic.com/somenamespace">

有什么建议吗?

【问题讨论】:

  • 为什么?你真的希望数据的所有子元素都在同一个命名空间中吗?
  • @chrisis 是的,它是一个完整的信封,“数据”只不过是我的“信封”节点。

标签: xml namespaces xquery element marklogic


【解决方案1】:

这应该可以工作

declare default element namespace "http://marklogic.com/somenamespace";
let $link := "anylink"
let $Content := <content>content</content>
let $result := element data  { 
element headers{},
element root {
element {"element"}{
        attribute link {$link},
        $Content
      }
 }
}
return $result

【讨论】:

  • 在你必须处理多个命名空间,但又不希望任何一个有前缀的情况下,你也可以这样构造元素:element { fn:QName($my-ns, "my-elem") } { ... }
猜你喜欢
  • 2010-10-27
  • 1970-01-01
  • 2018-07-24
  • 2011-01-06
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多