eXist转换将参数传递给XSLT-必须在XSLT中声明吗?

时间:2018-10-16 08:29:05

标签: xslt xquery exist-db

环境:eXist-db 4.2.1,XQuery 3.1,XSLT 2.0

我想使用eXist的transform:transform函数,将以下参数传递给XSLT文档:

let $xsltransform := transform:transform(
                        $currentdoc, 
                        concat($globalvar:URIstyles,
                        "document_style.xsl"),
                        (<parameters>
                            <param name="paramPersonurl" 
                                  value="{$globalvar:URLperson}"/>
                            <param name="paramPlaceurl" 
                                  value="{$globalvar:URLplace}"/>
                            <param name="paramDocurl" 
                                  value="{$globalvar:URLdoc}"/>
                         </parameters>))

在使用它们之前,我是否必须在XSLT文件中“声明”这些参数?像这样:

<!-- parameters coming from eXist -->
<xsl:param name="paramPersonurl"/>
<xsl:param name="paramPlaceurl"/>
<xsl:param name="paramDocurl"/> 

或者我可以直接在XSLT中使用它们,例如:

<xsl:value-of select="$paramPersonurl"/>

非常感谢。

1 个答案:

答案 0 :(得分:4)

答案是“是”。您必须声明它们,否则它实际上不是有效的XSLT文档。

(从理论上讲,即使eXist确实自动添加了参数,还是最好声明它们,因为如果您希望将来更改技术,则希望XSLT在其他地方可重复使用)