eXist-db XQuery - XSLT-преобразование не дает результата, несмотря на допустимые файлы и ошибок - PullRequest
0 голосов
/ 20 октября 2018

РЕДАКТИРОВАТЬ: решено - неверный путь к документу 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.Я оставлю этот неловкий вопрос в надежде, что он может помочь другим.

...