-3

XSLT を使用して次の XML を変換する方法を知りたいです。

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="UTF-8"
                omit-xml-declaration="no" indent="no" />

    <xsl:template match="/" />
</xsl:stylesheet>

ソース XML:

<root>
    <header>
        <version>1</version>
    </header>
    <line>
        <id> 1 </id>
    </line>
    <line>
        <id> 2 </id>
    </line>
    <subline>
        <id> 1 </id>
    </subline>
    <subline>
        <id> 2 </id>
    </subline>
</root>

目標:

<root>
    <header>
        <version>1</version>
    </header>
    <line>
        <id> 1 </id>
    </line>
    <subline>
        <id> 1 </id>
    </subline>
    <line>
        <id> 2 </id>
    </line>
    <subline>
        <id> 2 </id>
    </subline>
</root>

等...

ご協力ありがとうございました

4

1 に答える 1

1

使用する:

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

  <xsl:template match="/root">
    <xsl:copy>
      <xsl:apply-templates select="*[not(self::line or self::subline)]"/>
      <xsl:apply-templates select="line | subline">
        <xsl:sort select="id"/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>

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

</xsl:stylesheet>
于 2012-11-12T00:22:48.330 に答える