Схема в курсе XQuery
В настоящее время я использую плагин Eclipses XQuery xqdt с движком XQuery Zorba.
Я хотел бы, чтобы механизм XQuery "проверял тип" правильности моих выражений XPath, например, если схема определяет, что видео / видео разрешено, а видео / картинки - нет, интерпретатор должен предупредить, что последнее выражение XPath недопустимо.
Я пытался следовать учебнику по Schema-Aware Queries и 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.xsd, videos.xml и изменил схему импорта на
import schema default element namespace "myVideos" at "videos.xsd";
, но безуспешно.
1 ответ
Ни XQDT, ни Zorba не поддерживают статическую проверку выражений XPath относительно. схемы. Было / было довольно некоторое исследование, происходящее вокруг этой темы, но (afaik) ни один из них не сделал это в продукт, все же.
Например, вы можете связаться с ребятами по адресу http://wam.inrialpes.fr/websolver/ чтобы узнать, каков статус этого проекта.