Среда: eXist-db 4.2.1, XQuery 3.1, XSLT 2.0
Я пытаюсь преобразовать документ XML с помощью таблицы стилей XSLT 2.0, запускаемой eXist-DB / Query 3.1.Я получаю следующую ошибку
err:XPDY0002 Undefined context sequence for 'child::{}xinclude-path'
[at line 271, column 48, source: /db/apps/deheresi/modules/document.xql]
Эта ошибка указывает на следующее XQuery в модуле document.xqm, строка 217: </parameters>),(),xinclude-path=$globalvar:URIdb)
:
declare function document:doc-xsl-docview($node as node(),
$model as map(*), $currentdoc as xs:string)
{
let $currentdocnode := doc(concat($globalvar:URIdb,$currentdoc))
let $xsltransform := transform:transform(
$currentdocnode,
concat($globalvar:URIstyles,
"ms609__testxsl-withmodes.xsl"),
(<parameters>
<param name="paramPersonurl" value="{$globalvar:URLperson}"/>
<param name="paramPlaceurl" value="{$globalvar:URLplace}"/>
<param name="paramDocurl" value="{$globalvar:URLdoc}"/>
</parameters>),(),xinclude-path=$globalvar:URIdb)
return $xsltransform
};
Чтобы объяснить вышеупомянутые переменные:
$currentdoc
- это имя документа, которое я превращаю в узел eXist-DB при $currentdocnode
.
XML-документы хранятсяв $globalvar:URIdb
= / db / apps / deherei / data
XSLT-стили хранятся в $globalvar:URIstyles
doc = / db / apps / deherei / styles
Я использую преобразование с сериализацией для xi: includes:
transform:transform($node-tree as node()*, $stylesheet as item(),
$parameters as node()?, $attributes as node()?,
$serialization-options as xs:string?) as node()?
Мне нужно передать xinclude-path = $ globalvar: URIdb, чтобы сообщитьeXist-DB, где обрабатывать xi:includes
внутри моих документов XML.
Следует отметить, что $globalvar
- это строки, а не узлы.Если мне нужны узлы, я «конвертирую» их локально в данный момент, как в $currentdocnode
выше.
Заранее спасибо за помощь в разгадке этой ошибки.