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