我正在尝试使用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.
答案 0 :(得分:0)
您声明函数返回一个元素节点,但它返回一个文档节点(函数doc()
返回一个文档节点,而该节点又是您函数的返回序列。)
从错误消息来看,似乎甚至没有评估查询,它编译失败,因为静态分析告诉编译器永远不会成功。
根据您想要实现的目标,您可以说您的函数返回文档节点(使用as document-node()
)而不是元素,或者使用以下内容从文档返回根元素:
doc('CityCode.xml')/*