【问题标题】:How to convert a element node to document in xquery如何在xquery中将元素节点转换为文档
【发布时间】:2015-05-15 12:05:40
【问题描述】:

我有一个 xml。

let $a := <a>
             <b>asd</b>
             <c>bvn</c>
          </a>

如果我返回 $a/a/b 它不起作用,因为这是一个元素节点。

所以我需要将元素节点转换为文档节点。为了让它发挥作用。

我无法更改xpath。无论如何,他们是否可以通过使用相同的xpath '/a/b' 来获得结果?

【问题讨论】:

    标签: xml xpath xquery marklogic


    【解决方案1】:

    如果需要,可以创建文档节点

    let $a := <a>
                 <b>asd</b>
                 <c>bvn</c>
              </a>
    let $a := document{$a}
    return $a/a/b
    

    或直接

    let $a := document {
                <a>
                    <b>asd</b>
                    <c>bvn</c>
                </a>
                }
    
    return $a/a/b
    

    【讨论】:

      【解决方案2】:

      我不认为将您的 xml 包装在 document node 中是您正在寻找的解决方案。是否有特定原因需要在文档节点中使用它?

      您真正需要的只是多一层 xml 包装,然后您的 xpath 就可以正常工作了。您可以选择任何元素作为动态生成的 xml 的根,例如:

      let $a := <wrapper>
              <a>
                  <b>ABC</b>
                  <c>XYZ</c>
              </a>
          </wrapper>
      return $a/a/b
      
      (: This will return the element <b>ABC</b> :)
      

      除非您有非常具体的原因,否则我建议不要将其包装在文档节点中。根据您上面列出的要求,您没有。所以我会坚持将你的 $a xml 包装在一个 xml 节点的另一层中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-01
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-24
        • 1970-01-01
        相关资源
        最近更新 更多