模式识别XQuery

时间:2014-02-14 16:02:08

标签: xml xsd xquery zorba

目前我正在使用Eclipses XQuery插件xqdt和XQuery引擎Zorba

我希望XQuery引擎能够“检查”我的XPath表达式的正确性,例如:如果模式定义允许视频/视频,但视频/图片不允许,则解释器应警告后一个XPath表达式无效。

我试过按照Schema-Aware Queries and Stylesheets教程,但我无法让它工作。我的代码示例使用示例video.xml和教程中的示例video.xsd

我的第一个被剥离的示例导致了类型错误: 在“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)

使用类型,使用元素而不是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.xsdvideos.xml并将导入架构更改为

import schema default element namespace "myVideos" at "videos.xsd";

,但没有成功。

1 个答案:

答案 0 :(得分:1)

XQDT和Zorba都不支持XPath表达式的静态验证。模式。围绕该主题进行了相当多的研究,但是(afaik)没有将它们变成产品,但是。

例如,您可以与http://wam.inrialpes.fr/websolver/处的人联系,了解该项目的状态。