РЕДАКТИРОВАТЬ: решено - неверный путь к документу XML.Я оставлю этот неловкий вопрос в надежде, что он может помочь другим.
Среда: eXist-db 4.2.1, XQuery 3.1, XSLT 2.0
Я создаю веб-страницу изчисло шаблонов в eXist-DB, последний из которых вызывает XSL-преобразование для получения фрагмента HTML.
XSL-преобразование работает, когда я тестирую его вне eXist-DB.На этой XSLT-скрипке у вас есть полный XSLT-файл и типичный XML-документ, который необходимо преобразовать.Он производит ожидаемый HTML без ошибок.Кислород также производит преобразование без ошибок.
Тем не менее, когда я выполняю преобразование в eXist-db XQuery, он сигнализирует о выполнении ... но не производит вывод!
Файл XAR для этого проекта(со всеми включенными модулями и файлами) можно скачать здесь: https://www.dropbox.com/s/gtg4lpv9jsh822e/deheresi-0.1.xar
Это функция преобразования XQuery, которая должна генерировать фрагмент HTML:
declare function document:doc-xsl-docview($node as node(),
$model as map(*), $currentdoc as xs:string)
{
let $currentdocnode := doc(concat($globalvar:URIdb,$currentdoc))
let $xi := concat("xinclude-path=", $globalvar:URIdb)
let $xsltdoc := doc(concat($globalvar:URIstyles,
"ms609__testxsl-withmodes.xsl"))
let $xsltransform := transform:transform(
$currentdocnode,
$xsltdoc,
(<parameters>
<param name="paramPersonurl" value="{$globalvar:URLperson}"/>
<param name="paramPlaceurl" value="{$globalvar:URLplace}"/>
<param name="paramDocurl" value="{$globalvar:URLdoc}"/>
</parameters>),(),$xi)
return $xsltransform
};
ЭтоHTML (в document.html
), вызывающий функцию в шаблоне (последний вызов шаблона).Все остальные шаблоны doc-sidebar
работают идеально.<div class="col-md-10 document-view">
выводит в виде пустого div.
<div xmlns="http://www.w3.org/1999/xhtml" data-
template="templates:surround" data-template-
with="templates/site_wrapper.html" data-template-at="content">
<div class="col-md-12 document-title">
<h2>
<span class="en">Deposition: Arnald Donat</span>
<span class="fr">Déposition : Arnald Donat</span>
</h2>
</div>
<div class="col-sm-12">
<div class="col-md-2 sidebar">
<div data-template="document:doc-sidebar-sub1" data-template-currentdoc="ms609_0013.xml"/>
<div data-template="document:doc-sidebar-sub2" data-template-currentdoc="ms609_0013.xml"/>
<div data-template="document:doc-sidebar-sub3" data-template-currentdoc="ms609_0013.xml"/>
<div data-template="document:doc-sidebar-sub4" data-template-currentdoc="ms609_0013.xml"/>
</div>
<div class="col-md-10 document-view">
<div data-template="document:doc-xsl-docview" data-template-currentdoc="ms609_0013.xml"/>
</div>
</div>
</div>
В рамках моего тестирования я сделал следующее: я жестко закодировал ожидаемый фрагмент HTML в файл XSL (texthtmlonly.xsl
) и вызвал его из того же самогофункция вместоОн выдает результат успешно.
На данный момент я не вижу никакой причины, по которой преобразование XSL не должно работать:
файлы XSL и XML выдают действительныерезультаты без ошибок (вне eXist)
преобразование XQuery дает результаты с жестко закодированным XSL-файлом
HTML вызывает все шаблоны без ошибок
Заранее большое спасибо.
Примечание: файл TEI-XML (ms609_0013.xml) временно жестко запрограммирован для тестирования в eXist-DB.
РЕДАКТИРОВАТЬ: решено - неверный путь к документу XML.Я оставлю этот неловкий вопрос в надежде, что он может помочь другим.