You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XSLT 1.0中将数字变量设为XML输出的元素名?

如何用XSLT变量的值作为XML输出的元素名称?

我在XSLT代码里定义了名为number的变量,想把这个变量的值作为最终XML输出里的元素名称,请问该怎么实现?

我的XSLT代码

<input>
    <xsl:variable name="number" value="658976"/>
    <xsl:element name="{$number}">Hello</xsl:element>
</input>

预期输出

<input>
   <658976>Hello</658976>
</input>

说明与修正方案

  1. XML元素名称规范问题:
    标准XML规定元素名称不能以数字开头,你预期的<658976>不符合XML语法规范,这类输出会导致XML解析报错。如果必须使用数字相关的元素名,建议添加前缀(比如num_658976)来满足规范要求。

  2. XSLT变量定义错误:
    原代码里<xsl:variable>使用了value属性,这是不正确的——XSLT中定义变量应该用select属性(用于直接取值),或者把变量值放在标签内容里。

修正后的代码示例

如果要生成符合XML规范的元素:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <input>
            <xsl:variable name="number" select="'658976'"/>
            <!-- 添加前缀,符合XML元素命名规范 -->
            <xsl:element name="num_{$number}">Hello</xsl:element>
        </input>
    </xsl:template>
</xsl:stylesheet>

输出结果:

<input>
   <num_658976>Hello</num_658976>
</input>

如果你的场景允许使用非标准的数字开头元素名(仅部分宽松解析器支持),修正变量定义后的代码如下:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <input>
            <xsl:variable name="number" select="'658976'"/>
            <xsl:element name="{$number}">Hello</xsl:element>
        </input>
    </xsl:template>
</xsl:stylesheet>

注意:这种数字开头的元素名不具备通用性,多数标准XML解析器会拒绝解析。

内容的提问来源于stack exchange,提问作者stels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:01:10