使用嵌套级别的属性值重命名 XML 元素

本文关键字:重命名 XML 元素 属性 嵌套 | 更新日期: 2023-09-27 18:36:20

我有一个xml文档,该文档具有嵌套级别<div>元素和属性。我想按属性名称重命名div。

使用嵌套级别的属性值重命名 XML 元素

此转换

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>
 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>
 <xsl:template match="div">
  <xsl:element name="{@class}">
    <xsl:apply-templates select="node()|@*"/>
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>

应用于以下 XML 文档时

<html>
  <div class="animal">
     Animals:
     <div class="mammal">
       Mammals:
        <div class="dog">
          Dogs
        </div>
        <div class="cat">Cats</div>
    </div>
  </div>
</html>

产生所需的正确结果

<html>
   <animal class="animal">
      Animals:
      <mammal class="mammal">
         Mammals:
         <dog class="dog">
                      Dogs
         </dog>
         <cat class="cat">Cats</cat>
      </mammal>
   </animal>
</html>

解释

正确使用标识规则设计模式。

相关文章: