1

子ノードの属性を要素として親に移動したいと考えています。例のために。以下のxmlを変更します

<Parent>
 <Children>
 <Child key="Name">ABC</Child>
 <Child key="Age">8</Child>
 <Child key="Height">140</Child>
 <Child key="Class">6</Child>
 </Children>
</Parent>

<Parent>
 <Name>ABC</Name>
 <Age>8</Age>
 <Height>140</Height>
 <Class>6</Class>
</Parent>

私の質問が明確であることを願っています..

4

2 に答える 2

1
<xsl:template match="Parent">
  <xsl:copy>
    <xsl:apply-templates select="Children/Child"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="Children/Child[@key]">
  <xsl:element name="{@key}">
    <xsl:value-of select="."/>
  </xsl:element>
</xsl:template>

<xsl:output indent="yes"/>

十分なはずです。

于 2013-01-08T14:02:25.080 に答える
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="/*">
     <Parent>
      <xsl:apply-templates/>
     </Parent>
 </xsl:template>

 <xsl:template match="Child">
   <xsl:element name="{@key}"><xsl:apply-templates/></xsl:element>
 </xsl:template>
</xsl:stylesheet>

提供された XML ドキュメントに適用した場合:

<Parent>
 <Children>
 <Child key="Name">ABC</Child>
 <Child key="Age">8</Child>
 <Child key="Height">140</Child>
 <Child key="Class">6</Child>
 </Children>
</Parent>

必要な正しい結果が生成されます。

<Parent>
   <Name>ABC</Name>
   <Age>8</Age>
   <Height>140</Height>
   <Class>6</Class>
</Parent>
于 2013-01-08T14:05:50.300 に答える