在我的站点中,我使用XQuery 3.1(在eXist-db 4.4下)输出TEI-XML
文档的XSLT 2.0转换。
以本文档http://medieval-inquisition.huma-num.fr/doc/MS609-0176
为例在我的函数中,我将tei-xml文档MS609-0176.xml
作为$doc
,将动态准备的XSLT作为$stylesheet
,然后执行transform:transform
已序列化的$stylesheet
(包括所有用于参数的节点)和tei-xml
文档粘贴在这里:
https://xsltfiddle.liberty-development.net/bdxtrg/6
此转换的主要工作之一是输出脚注。
XSLT小提琴中的转换正确输出:有3个脚注。
但是在网站上,使用相同文档的相同转换和Saxon处理程序会输出 5个脚注。
实际上,(在所有转换中)问题仅在于处理tei:date[@type='deposition_date']
。转换是对所有对tei:date[@type='deposition_date']
的引用进行“三重处理”,其中在文件中仅存在一次。这是每个文档中的一个元素发生的情况(通过查看网站上的任何内容都可以看到)。
在处理步骤方面:将脚注编号添加到主体,然后在单独的模式下,XSLT文件然后使用这些编号在底部构建脚注。因此,问题出在第一步。
脚注编号在XSLT小提琴的80-84行中分配给了tei:date[@type='deposition_date']
。在其他元素的唯一模板中对它们进行处理。
作为参考,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,())
}
我对如何处理此问题完全迷惑不解。是相同的处理器(Saxon),但结果不同吗?我可以对XSLT文件进行一些调整以缓解此问题吗?
(我在氧气中进行了完全相同的转化(也使用了Saxon),它也产生了正确的结果。)
可以在http://ciham-digital.huma-num.fr/exist/apps/eXide/index.html下的/db/apps/deheresi/data/MS609-0176.xml和/ db / apps / deheresi / modules / document-view(功能)下访问和测试eXist-db环境document-view:doc-view-xslt