2014-02-14 21 views
0

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

我希望XQuery引擎能「檢查」XPath表達式的正確性,例如,如果模式定義允許視頻/視頻,但視頻/圖片不允許,則解釋器應警告後者的XPath表達式無效。

我試圖按照Schema-Aware Queries and Stylesheets教程,但我無法讓它工作。我的代碼示例使用示例video.xml和本教程中的示例video.xsd

我的第一個精簡的例子會導致類型錯誤: 導入架構默認元素名稱空間「」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) 

與類型的播放,使用元素而不是架構元素不提醒我,我拼錯視頻2路和沒有打印任何東西:

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"; 

,但沒有成功。

+2

看起來你的xml在沒有命名空間(這是不同於沒有前綴)。也許最好將xsd和xml綁定到命名空間uri,並且在XPath中使用前綴引用命名空間。不知道模式意識是否包括XPath語句的驗證,至少在XQDT中。 – grtjn

+0

感謝提示,我將測試這個。關於XQDT:我不在乎xqdt是否顯示'編譯時間'錯誤,但我希望Zorba在執行查詢時報告這一點。 –

回答

1

XQDT和Zorba都不支持靜態驗證XPath表達式wrt。模式。目前有很多研究正在圍繞這個話題進行,但(afaik)他們中沒有一個將它變成了產品。

例如,您可以通過http://wam.inrialpes.fr/websolver/與傢伙取得聯繫,瞭解此項目的狀態。