如何动态提供参数名称?
ex:我有很少的参数作为输入进入xsl,每个参数都包含xml内容。但是,在xsl中,我不知道在运行时会有多少个参数。
我尝试过跟随xsl但没有用。
<xsl:element name="param0">
<xsl:copy-of select="concat('$','param0')/>
</xsl:element>
但以下内容将从param获取xml。
<xsl:element name="param1">
<xsl:copy-of select="$param1"/>
</xsl:element>
在运行时我知道有多少个参数但是在xsl中不能定义相同,因为no.of参数总是为输入而改变。
如果在xsl中可以实现这一点,请告诉我吗?
谢谢, 基兰
答案 0 :(得分:0)
使用concat()可以获得未计算为变量的字符串值。因此,尽管您认为将变量传递给xsl:copy,但事实并非如此。您只复制一个字符串。
我认为你不能用xslt中的动态参数数做你想做的事。如果你有单独文件形式的参数,你可以使用xslt 2.0中的collection()函数。例如,它可以以这种方式工作:<xsl:variable name="params" select="collection('file:///path/to/params/param*.xml')"/>
。
答案 1 :(得分:0)
我有很少的参数作为输入进入xsl,每个参数都包含xml内容。但是,在xsl中,我不知道在运行时会有多少个参数。
听起来我需要更改表示,以便不是传递几个不同的参数而是每个持有一个节点,而是传递带有固定名称的一个参数,其值为节点集。究竟如何实现这取决于你正在使用什么处理器以及如何调用样式表,但如果可以实现,那么你可以做一些事情,比如
<xsl:for-each select="$params">
<xsl:element name="param{position() - 1}">
<xsl:copy-of select="." />
</xsl:element>
</xsl:for-each>