現在、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)
schema-element の代わりに 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
Q: $input/videos/video2 が失敗する最小限の実例を教えてもらえますか?
更新: videos.xsd、videos.xmlに 名前空間を追加し、インポート スキーマを次のように変更しました。
import schema default element namespace "myVideos" at "videos.xsd";
、しかし成功しませんでした。