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

ETC...

谢谢你的支持

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