1

私は次のXMLを持っています:

<root>
<section>
    <item name="a">
        <uuid>1</uuid>
    </item>
</section>
<section>
    <item name="b">
        <uuid>2</uuid>
    </item>
</section>
</root>

次のXMLに変換したいと思います。

<root>
<section>
    <item name="a">
        <uuid>1</uuid>
    </item>
    <item name="b">
        <uuid>2</uuid>
    </item>
</section>
</root>

前もって感謝します。

アップデート。

少し異なる例には、追加の要素と属性が含まれています。

入力:

<root age="1">
<description>some text</description>
<section>
    <item name="a">
        <uuid>1</uuid>
    </item>
</section>
<section>
    <item name="b">
        <uuid>2</uuid>
    </item>
</section>
</root>

私はそれを次のように変換したいと思います:

<root age="1">
<description>some text</description>
<section>
    <item name="a">
        <uuid>1</uuid>
    </item>
    <item name="b">
        <uuid>2</uuid>
    </item>
</section>
</root>
4

1 に答える 1

1

次のXslが機能するはずです。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:output indent="yes" omit-xml-declaration="yes"/>
    <xsl:strip-space elements="section item"/>
    <xsl:template match="/root">
        <root>
            <section>
                <xsl:apply-templates select="section"/>
            </section>
        </root>
    </xsl:template>

    <xsl:template match="item">
        <xsl:copy-of select="."/>
    </xsl:template>

</xsl:stylesheet>

それは与えます:

<root>
   <section>
      <item name="a">
         <uuid>1</uuid>
      </item>
      <item name="b">
         <uuid>2</uuid>
      </item>
  </section>
</root>

アップデート:

2番目の例では、次のXslを使用できます。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:output indent="yes" omit-xml-declaration="yes"/>
    <xsl:strip-space elements="root item"/>

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

   <xsl:template match="description">
       <xsl:copy-of select="."/>
       <section>
           <xsl:apply-templates select="following-sibling::section/item"/>
       </section>
   </xsl:template>

   <xsl:template match="section" />

   <xsl:template match="item">
      <xsl:copy-of select="."/>
   </xsl:template>

</xsl:stylesheet>
于 2012-04-04T08:08:49.100 に答える