2014-02-14 4 views
0

В настоящее время я использую плагин Eclipses XQuery xqdt с движком XQuery Zorba.Schema aware XQuery

Я хотел бы, чтобы движок XQuery «набирал» проверку правильности моих выражений XPath, например. если схема определяет видео/видео, но видео/изображения нет, интерпретатор должен предупредить, что последнее выражение XPath недействительна.

Я попытался выполнить урок Schema-Aware Queries and Stylesheets, но я не могу заставить его работать. В моих примерах кода используется образец video.xml и образец video.xsd из учебника.

Мой первый, урезанный пример их результатов приводит к ошибке типа: import schema default element namespace "" на "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) 

Играя с типами, используя элемент вместо схемы-элемента не предупреждает меня о моей ошибкой пути 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 терпит неудачу?

Update: Я добавил пространств имен в videos.xsd, в videos.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. схемы. Существует/было довольно много исследований, связанных с этой темой, но (афайк), но они не превратили его в продукт.

Например, вы можете связаться с ребятами по номеру http://wam.inrialpes.fr/websolver/, чтобы узнать, как выглядит этот проект.

Смежные вопросы