私は以下の形式のXMLファイルを持っています。
<Main>
<root>
<group firstname="daniel" secondname="creig">
<a firstname="tin" secondname="tao"/>
<b firstname="bella" secondname="james">
<c firstname="khadhar" secondname="abdul">
<d firstname="xiang" secondname="tin"/>
</c>
</b>
</group>
</root>
</Main>
そして、私は以下のような出力を得ようとしています。
<members>
<member><id>group</id><firstname>daniel</firstname><secondname>creig</secondname></member>
<member><id>a</id><firstname>tin</firstname><secondname>tao</secondname></member>
<member><id>b</id><firstname>bella</firstname><secondname>james</secondname></member>
<member><id>c</id><firstname>khadhar</firstname><secondname>abdul</secondname></member>
<member><id>d</id><firstname>xiang</firstname><secondname>tin</secondname></member>
</members>
これまでのところ、私のXSLは次のようになります。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- Elements Section -->
<xsl:template match="/*/root/*">
<member>
<id>
<xsl:value-of select="local-name()" />
</id>
<attr>
<xsl:apply-templates select="@*" />
</attr>
</member>
</xsl:template>
<xsl:template match="@*">
<xsl:element name="{local-name()}">
<xsl:value-of select="(.)" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
必要なのは、任意の深さのXMLツリーのノードを配列に変換することだけです。前もって感謝します。