2010-12-02 21 views
1

XSLT 1.0を使用して、すべてのノードの属性を子ノードに変換する方法はありますか? PHPのxsltProcessorで完璧に動作する必要があります。属性は削除する必要があります(可能な場合)。すべてのノードの属性を子ノードに変換

例入力:

<root aaa="111" bbb="222" ccc="333"> 
    <bob ddd="444" /> 

    <data eee="555"> 
     <steve>bar1</steve> 
     <john>bar2</john> 
     <peter fff="666">bar3</peter> 
    </data> 

    <greg ggg="777" /> 
</root> 

望ましい結果:

<root> 
    <aaa>111</aaa> 
    <bbb>222</bbb> 
    <ccc>333</ccc> 
    <bob> 
     <ddd>444</ddd> 
    </bob> 
    <data> 
     <eee>555</eee> 
     <steve>bar1</steve> 
     <john>bar2</john> 
     <peter> 
      <fff>666</fff> 
      bar3 
     </peter> 
    </data> 
    <greg> 
     <ggg>777</ggg> 
    </greg> 
</root> 

ありがとうございます! Saxon6.5を使用して酸素/ XMLでテスト

答えて

4

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

    <xsl:template match="node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="@*"> 
    <xsl:element name="{name()}"><xsl:value-of select="."/></xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

これは、要素ノードおよび要素に属性を変換するテンプレートのアイデンティティーテンプレートを使用することに基づきます。

関連する問題