如何在xquery中读取xml文件

时间:2015-05-22 11:18:00

标签: xml xquery osb

我正在尝试使用XQuery读取xml文件。     在谷歌尝试了很多我发现的相关的是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.

1 个答案:

答案 0 :(得分:0)

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

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

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

doc('CityCode.xml')/*