Схема в курсе 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/ чтобы узнать, каков статус этого проекта.

Другие вопросы по тегам