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

如何通过XSLT 1.0转换批量提取XML节点A的所有属性?

XSLT 1.0批量提取节点A的所有属性

问题描述

原始XML文档:

<A a_1="a1" a_2="a2"/>
<B>
 <C>
    hello
 </C>
</B>

需求是通过XSLT 1.0转换,仅筛选出节点"A"的所有属性。目前已能通过逐个指定属性的方式实现:

<A a_1="{A/@a_1}" a_2="{A/@a_2}">

但希望找到无需逐个定义属性的批量获取方法,预期输出:

<A a_1="a1" a_2="a2">

解决方案

可以使用XSLT 1.0的<xsl:copy-of>指令批量复制节点A的所有属性,完整的XSLT代码如下:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <!-- 创建新的A节点 -->
    <A>
      <!-- 批量复制原始A节点的所有属性 -->
      <xsl:copy-of select="/A/@*"/>
    </A>
  </xsl:template>
</xsl:stylesheet>

说明

  • <xsl:copy-of select="/A/@*"/> 会选中根节点下A元素的所有属性(@*表示匹配所有属性),并直接复制到新创建的<A>节点中,无需逐个指定属性名。
  • 该方法会完整保留原始属性的名称和值,完全满足批量获取的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:29:54