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 可以在其他地方重用)
环境: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 可以在其他地方重用)