编辑:已解决-XML文档的路径错误。我会把这个令人尴尬的问题留在原处,希望它可以对其他人有所帮助。
环境:eXist-db 4.2.1,XQuery 3.1,XSLT 2.0
我正在从eXist-DB中的许多模板构建一个网页,最后一个模板调用XSL转换以生成HTML片段。
当我在eXist-DB之外测试它时,XSL转换有效。在XSLT fiddle,您具有完整的XSLT文件和应转换的代表性XML文档。它将生成预期的HTML,而不会出现错误。氧气也可以毫无错误地产生转化。
但是,当我在eXist-db XQuery中执行转换时,它发出执行信号……但没有输出!
该项目的XAR文件(包括所有模块和文件)可以在这里下载:https://www.dropbox.com/s/gtg4lpv9jsh822e/deheresi-0.1.xar
这是应该生成HTML片段的XQuery转换函数:
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会正确调用所有模板
非常感谢。
NB:TEI-XML文件(ms609_0013.xml)被临时硬编码以在eXist-DB中进行测试。
编辑:已解决-XML文档的路径错误。我会把这个令人尴尬的问题留在原处,希望它可以对其他人有所帮助。