通八洲科技

XSLT怎么生成动态的HTML属性名和标签名

日期:2026-01-02 00:00 / 作者:月夜之吻
XSLT中动态生成HTML标签名和属性名须用xsl:element和xsl:attribute配合AVT,标签名如,属性名如,属性值可用AVT如class="{@status}",但属性名不可直接AVT。

在XSLT中生成动态的HTML标签名和属性名,核心是使用 attribute value template(AVT)xsl:element / xsl:attribute 动态构造节点,不能直接写死标签或属性名

xsl:element 动态生成标签名

当标签名来自XML数据(比如 `div` 或 `@type="section"`),必须用 xsl:element,不能直接写 `

`。

  

假设当前节点有属性 type="article",上面代码就等价于:。花括号里的表达式会求值,结果作为标签名。

注意:
– 名字必须是合法的XML/HTML标签名(不能含空格、不能以数字开头);
– 如果值为空或非法,XSLT处理器通常报错或忽略;
– 可嵌套使用,比如 生成 h1、h2 等。

xsl:attribute 动态生成属性名

属性名(如 classdata-id)同样不能硬编码,需用 xsl:attribute 配合 AVT:

  
    
  
  Content

若 XML 中有 ,就会输出:Content

常见组合写法:

用 AVT 直接写在静态标签里(仅限属性值,不适用于属性名)

如果只是属性要动态(如 class="active"),可以直接用花括号: —— 这很常用,但注意:AVT 不能用于属性本身,下面写法是错误的:

 ❌ 不合法

必须改用 xsl:attribute

安全与兼容性提醒

动态标签/属性名容易引入 XSS 或结构错误,建议:

基本上就这些。关键记住:标签名和属性名要动态 → 必须用 xsl:elementxsl:attribute;属性值动态 → 可直接 AVT。不复杂但容易忽略语法边界。