在不同的Saxon安装下,XSLT模板的输出是否不同? (eXist-db)

时间:2018-12-13 11:56:44

标签: xslt saxon exist-db xquery-3.0

在我的站点中,我使用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

0 个答案:

没有答案