【问题标题】:how to read xml file in xquery如何在xquery中读取xml文件
【发布时间】:2015-05-22 11:17:59
【问题描述】:

我正在尝试使用 XQuery 读取 xml 文件。 在 google 中尝试了很多,我发现所有相关的是 doc() 函数。但这对我不起作用。 我将我的 xml 文件和 Xquery 保存在 eclipse 中的同一文件夹下。但是 Xquery 给出错误:第 13 行,第 6 列:{err}XP0004:无效的静态类型:untypedDocument?

My Xquery:


     declare function xf:LookupXML($dvm1 as element(ns0:dvm),
        $DVMName as element(*),
        $SourceColumn as element(*))
        as element(*) {
             doc('CityCode.xml')     
    };

    declare variable $dvm1 as element(ns0:dvm) external;
    declare variable $DVMName as element(*) external;
    declare variable $SourceColumn as element(*) external;

    xf:LookupXML($dvm1,
        $DVMName,
        $SourceColumn)

My xml file:- Name- CityCode.xml

<?xml version="1.0" encoding="UTF-8"?>
<tns:dvm name="" xmlns:tns="http://www.example.org/SuburbCode" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/SuburbCode SuburbCode.xsd ">
  <tns:columns>
    <tns:column name="City"/>
    <tns:column name="Code"/>
  </tns:columns>
  <tns:rows>
    <tns:row>
      <tns:cell>Mumbai</tns:cell>
      <tns:cell>BOM</tns:cell>
    </tns:row>
     <tns:row>
      <tns:cell>Delhi</tns:cell>
      <tns:cell>DLH</tns:cell>
    </tns:row>
     <tns:row>
      <tns:cell>Banglore</tns:cell>
      <tns:cell>BLR</tns:cell>
    </tns:row>
  </tns:rows>
</tns:dvm>


If anyone knows please provide solution.

【问题讨论】:

    标签: xml xquery osb


    【解决方案1】:

    您声明您的函数返回一个元素节点,但它返回一个文档节点(函数doc() 返回一个文档节点,而这又是您的函数的返回序列)。

    从错误消息来看,查询似乎没有被评估,它编译失败,因为静态分析告诉编译器永远不会成功。

    根据您想要实现的目标,您可以说您的函数返回一个文档节点(使用as document-node())而不是一个元素,或者使用以下命令从文档中返回根元素:

    doc('CityCode.xml')/*
    

    【讨论】:

    • 只是出于兴趣,您知道您使用的是哪个 XQuery 处理器吗?
    • 请粘贴您修改后的示例并完成错误消息。
    • 我突然想到它可能是关于一个外部变量,声明为元素节点。如果您将类型更改为as document-node() external,您可能会发现您将其中一个初始化为文档节点而不是声明的元素。但是您没有展示如何在处理器中绑定这些外部变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多