Я хочу вызвать функцию XQuery с помощью JavaScript для извлечения данных из XML-файла. Я могу вызвать эту простую функцию, которая ничего не читает ни из одного файла:
<script type="text/javascript"
src="mxqueryjs/mxqueryjs.nocache.js"
></script>
<script type="application/xquery">
module namespace m = "http://www.xqib.org/module";
declare function m:GetNearestLocations($node as node()+) {
let $message := "Hello XQuery!"
return $message
};
</script>
С помощью этого JavaScript:
var output = xqib.call(
'http://www.xqib.org/module',
'GetNearestLocations',
center.lat());
Возвращаемый результат, как и ожидалось, "Hello XQuery!".
Теперь я хочу импортировать математический модуль, чтобы использовать некоторые его функции при чтении данных из XML-файла.
Вот что у меня есть, но математический модуль не импортируется и вызывает ошибку XQST0059, говорящую о том, что нет информации о местоположении для загрузки модуля с пространством имен "http://www.w3.org/2005/xpath-functions/math":
<script type="text/javascript"
src="mxqueryjs/mxqueryjs.nocache.js"
></script>
<script type="application/xquery">
module namespace m = "http://www.xqib.org/module";
import module namespace math
= "http://www.w3.org/2005/xpath-functions/math";
declare function m:GetNearestLocations($node as node()+) {
let $message := "Hello XQuery!"
return $message
};
</script>
Что странно, так это то, что когда я использую Stylus Studio X15 Entreprise Suite для тестирования той же функции, импорт работает.
Важно: я использую один и тот же вызов JavaScript, когда импортирую или не импортирую математический модуль, поэтому, возможно, моя проблема связана с этим, но я не знаю, как это исправить.
Если бы вы также могли немного подсказать мне, что я могу установить в качестве параметра для m: GetNearestLocations, чтобы я мог передавать его целыми числами или строками.
Большое спасибо.
at "path/to/some-module.xqy"
как часть строки импорта? - person wst   schedule 23.07.2013xs:anyAtomicType
. Однако, если вы используете это, вы также можете передать другие типы. Вы можете проверить это с помощью оператораinstance of
. Я бы все же использовал другой подход: сделать вашу общую функцию приватной и просто вызывать ее из двух других функций, ожидая на вход строку или целое число соответственно. - person dirkk   schedule 24.07.2013