Xslt 在xsl中动态定义参数的名称
如何动态提供参数名 例如:我有几个参数作为输入进入xsl,每个参数都包含xml内容。然而,在xsl中,我不知道在运行时会有多少个参数 我尝试过使用以下xsl,但没有成功Xslt 在xsl中动态定义参数的名称,xslt,Xslt,如何动态提供参数名 例如:我有几个参数作为输入进入xsl,每个参数都包含xml内容。然而,在xsl中,我不知道在运行时会有多少个参数 我尝试过使用以下xsl,但没有成功 <xsl:element name="param0"> <xsl:copy-of select="concat('$','param0')/> </xsl:element> 使用concat()可以获得未作为变量计算的字符串值。因此,尽管您认为可以
<xsl:element name="param0">
<xsl:copy-of select="concat('$','param0')/>
</xsl:element>
使用concat()可以获得未作为变量计算的字符串值。因此,尽管您认为可以将一个变量传递到xsl:copy,但实际上并没有。您只复制一个字符串
我认为,在xslt中,使用动态数量的参数无法实现您想要的功能。如果有单独文件形式的参数,可以使用xslt 2.0中的collection()函数。例如,它可以这样工作:
我将几个参数作为输入输入到xsl中,每个参数都包含xml内容。然而,在xsl中,我不知道在运行时会有多少个参数
在我看来,您需要更改表示形式,这样就不用传递多个不同的参数(每个参数包含一个节点),而是传递一个具有固定名称的参数,其值为节点集。具体实现方式取决于您使用的处理器和如何调用样式表,但如果可以实现,则可以执行以下操作
<xsl:for-each select="$params">
<xsl:element name="param{position() - 1}">
<xsl:copy-of select="." />
</xsl:element>
</xsl:for-each>
很抱歉,我不明白应该是什么:“在xsl中,我不知道运行时会有多少个参数。”在XSLT中,您必须始终声明希望使用xsl:param
的参数。此参数可以有默认值(使用slect=“…”)。有时,我可能有2个参数,有时有5个参数,并且输入的参数数量没有限制。如果我必须声明参数,我可以在侧循环或带有动态名称的模板中声明吗?Kiran,谢谢Peter,但这不是问题所在。在concat name函数中,我想返回“$newparam”的值。新参数是从$param0获得的值。可能吗?谢谢你的回复。
<xsl:for-each select="$params">
<xsl:element name="param{position() - 1}">
<xsl:copy-of select="." />
</xsl:element>
</xsl:for-each>