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

eXist transform passing parameter to XSLT - must declare in XSLT?

环境: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>))

我是否必须 'declare' XSLT 文件中的这些参数才能使用它们?像这样:

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

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

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

非常感谢。

答案是"Yes"。您必须声明它们,否则它就不是真正有效的 XSLT 文档。

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