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

如何使用XSLT将XML元素的每个属性换行输出?

XSL实现XML元素属性单独换行的方案

要让XML元素的每个属性单独换行输出,需要自定义元素的起始标签生成逻辑,替代XSLT默认的属性输出方式。以下是可行的实现方案:

核心XSLT代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 身份模板:默认复制所有节点和属性(元素起始标签会被重写) -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 自定义元素起始标签的输出逻辑 -->
    <xsl:template match="*">
        <!-- 输出起始标签开头:<元素名 -->
        <xsl:text>&lt;</xsl:text>
        <xsl:value-of select="name()"/>
        
        <!-- 遍历每个属性,单独换行并添加缩进 -->
        <xsl:for-each select="@*">
            <xsl:text>&#10;      </xsl:text><!-- 6个空格,匹配示例缩进格式 -->
            <xsl:value-of select="name()"/>
            <xsl:text>="</xsl:text>
            <xsl:value-of select="."/>
            <xsl:text>"</xsl:text>
        </xsl:for-each>
        
        <!-- 输出起始标签结尾 -->
        <xsl:text>&gt;</xsl:text>
        
        <!-- 处理子节点 -->
        <xsl:apply-templates select="node()"/>
        
        <!-- 输出结束标签 -->
        <xsl:text>&lt;/</xsl:text>
        <xsl:value-of select="name()"/>
        <xsl:text>&gt;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

输入XML

<Pane attr1="value1" attr2="value2" attr3="value3">
    <children>
        <title>A</title>
    </children>
</Pane>

输出结果

<Pane attr1="value1" 
      attr2="value2" 
      attr3="value3">
    <children>
        <title>A</title>
    </children>
</Pane>

关键说明

  • 身份模板负责复制除元素起始标签外的所有内容,保证子元素、文本等结构与原文档一致。
  • 针对元素节点的模板手动拼接起始标签:先输出元素名,再遍历每个属性,每个属性前添加换行和对应缩进(如需调整缩进,修改代码中换行后的空格数即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:32:34