На моем сайте я использую XQuery 3.1 (в eXist-db 4.4) для вывода XSLT 2.0 преобразований TEI-XML
документов.
Возьмем, к примеру, этот документ http://medieval -inquisition.huma-num.fr / doc / MS609-0176
В моей функции я получаю документ tei-xmlMS609-0176.xml
как $doc
и динамически подготовленный XSLT как $stylesheet
, а затем выполнить transform:transform
Сериализованный $stylesheet
(со всеми узлами, включенными для параметров) и документ tei-xml
вставлено здесь: https://xsltfiddle.liberty -development.net / bdxtrg / 6
Одним из основных заданий этого преобразования является вывод сносок.
Преобразование в скрипте XSLTвыводит правильно: есть 3 сноски.
Но на сайте идентичное преобразование и саксонский процессор, использующий идентичные документы, выводит 5 сносок .
На самом деле проблема (во всех преобразованиях) заключается только в обработке tei:date[@type='deposition_date']
.Преобразование - это «тройная обработка» всех ссылок на tei:date[@type='deposition_date']
, где оно существует только один раз в файле.Это происходит с этим одним элементом в каждом документе (что можно увидеть, посмотрев на любой элемент на сайте).
С точки зрения этапов процесса: номера сносок добавляются в текст,затем в отдельном режиме файл XSLT затем использует эти цифры для построения сносок внизу.Поэтому проблема заключается в первом шаге.
Номера сносок присваиваются tei:date[@type='deposition_date']
в строке 80-84 в скрипте XSLT.Они обрабатываются в уникальном шаблоне из других элементов.
Для справки, функция Xquery:
declare function document:doc-docview($node as node(), $model as map(*), $docset as xs:string)
{
let $stylesheet := document-view:doc-view-xslt($docset)
let $doc := doc(concat($globalvar:URIdata,$docset))
return transform:transform($doc,$stylesheet,())
}
Я совершенно не понимаю, как справиться с этой проблемой.Это тот же процессор (саксонский), но другой результат?Могу ли я внести некоторые изменения в файл XSLT, чтобы смягчить эту проблему?
(я выполнил точно такое же преобразование в Oxygen (также используя Saxon), и он также дает правильные результаты.)
Доступ к среде eXist-db и ее тестирование можно получить здесь http://ciham -digital.huma-num.fr / exist / apps / eXide / index.html в каталоге / db / apps /deheresi / data / MS609-0176.xml и / db / apps / deherei / modules / просмотр документа (функция) document-view:doc-view-xslt