XSLT 变量问题
Posted
技术标签:
【中文标题】XSLT 变量问题【英文标题】:XSLT variable issue 【发布时间】:2013-08-09 04:21:50 【问题描述】:我有一个 xml,我需要使用 xslt 2.0 对其进行转换以提供不同的输出 xml。 输出 xml 需要在输出 xml 字符串中包含 XSLT 变量的值。 但是 XSLT 变量值没有被拾取。
非常感谢您的帮助。提前致谢。
输入 xml:`
`<additionalParams>
<qryParam name = "rank" value = "300"/>
<qryParam name = "id" value = "id1"/>
<qryParam name = "max" value= "max1"/>
</additionalParams>
预期输出 xml:
<additionalParameter name="rank" type="text">
<value>"300"</value>
</additionalParameter>
<additionalParameter name="id" type="text">
<value>"id1"</value>
</additionalParameter>
<additionalParameter name="max" type="text">
<value>"max1"</value>
</additionalParameter>
当前 XSLT:
<xsl:for-each select="./additionalParams/qryParam">
<xsl:variable name = "elmtName" select="@name"/>
<xsl:variable name = "elmtValue" xsl:value-of select="@value"/>
<additionalParameter name="$elmtName" type="text">
<value>"$elmtValue"</value>
</additionalParameter>
</xsl:for-each>
转换后的当前结果 xml - 它没有获取变量值。
<otherQueryParameters>
<additionalParameter name="$elmtName" type="text">
<value>"$elmtValue"</value>
</additionalParameter>
<additionalParameter name="$elmtName" type="text">
<value>"$elmtValue"</value>
</additionalParameter>
<additionalParameter name="$elmtName" type="text">
<value>"$elmtValue"</value>
</additionalParameter>
</otherQueryParameters>
【问题讨论】:
【参考方案1】:请注意,输出值的默认方式是
<xsl:for-each select="./additionalParams/qryParam">
<additionalParameter name="@name" type="text">
<value><xsl:value-of select="@value"/></value>
</additionalParameter>
</xsl:for-each>
【讨论】:
【参考方案2】:试试这个 xslt:
<xsl:for-each select="./additionalParams/qryParam">
<xsl:variable name = "elmtName" select="@name"/>
<xsl:variable name = "elmtValue" select="@value"/>
<additionalParameter name="$elmtName" type="text">
<value><xsl:value-of select="$elmtValue"/></value>
</additionalParameter>
</xsl:for-each>
【讨论】:
以上是关于XSLT 变量问题的主要内容,如果未能解决你的问题,请参考以下文章