目前我正在使用带有 XQuery 引擎Zorba的 Eclipses XQuery 插件xqdt。
我希望 XQuery 引擎“类型检查”我的 XPath 表达式的正确性,例如,如果架构定义视频/视频是允许的,但视频/图片不是,解释器应该警告后一个 XPath 表达式无效。
我尝试遵循Schema-Aware Queries and Stylesheets教程,但我无法让它工作。我的代码示例使用教程中的示例video.xml和示例video.xsd。
我的第一个精简示例导致类型错误: import schema default element namespace "" at "videos.xsd";
1 import schema default element namespace "" at "videos.xsd";
2
3 declare variable $input as schema-element(result) := doc('videos.xml')/*;
4 for $v in $input/videos/video
5 return $v
...\XQqueryProject\videos.xq>:3,1: type error [err:XPTY0004]:
element(result, xs:untyped) can not be treated as type schema-element(result)
使用类型,使用 element 而不是 schema-element 不会警告我我拼写错误的 video2 路径并且不会打印任何内容:
import schema default element namespace "" at "videos.xsd";
declare variable $input as element(result) := doc('videos.xml')/*;
for $v in $input/videos/video2
return $v
问:有人可以为我提供一个 $input/videos/video2 失败的最小工作示例吗?
更新: 我已将命名空间添加到videos.xsd、videos.xml并将导入架构更改为
import schema default element namespace "myVideos" at "videos.xsd";
,但没有成功。