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

时间:2012-06-06 11:26:09

标签: c# xml xslt

我有一个带有属性的嵌套级<div>元素的xml文档。 我想按属性名称重命名div。

1 个答案:

答案 0 :(得分:0)

此转化

<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>

<强>解释

正确使用 identity rule 设计模式。