Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Zweifaches Sortieren mit XSL (https://www.delphipraxis.net/82893-zweifaches-sortieren-mit-xsl.html)

StTüff 21. Dez 2006 14:13


Zweifaches Sortieren mit XSL
 
Hallo!

Ich bin mir nicht sicher, ob ich hier den (Denk-)Fehler mache, oder ob das ein MSXML-Problem ist.

Ich möchte folgende XML-Struktur:
XML-Code:
<TEST>
  <MODE>
    <SETTING ATT="1">6</SETTING>
    <SETTING ATT="0">10</SETTING>
    <SETTING ATT="1">1</SETTING>
    <SETTING ATT="2">954</SETTING>
    <SETTING ATT="1">1234</SETTING>
  </MODE>
</TEST>
mit diesem XSL-Code:
XML-Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="* | @* | node()">
    <xsl:copy>
      <xsl:apply-templates>
        <xsl:sort select="@ATT" data-type="number"/>
        <xsl:sort select="SETTING" data-type="number"/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="SETTING">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
... sortieren. Erwartet hätte dieses Ergebnis:
XML-Code:
<TEST>
 <MODE>
  <SETTING ATT="0">10</SETTING>
  <SETTING ATT="1">1</SETTING>
  <SETTING ATT="1">6</SETTING>
  <SETTING ATT="1">1234</SETTING>
  <SETTING ATT="2">954</SETTING>
 </MODE>
</TEST>
Ich erhalte aber leider dieses Ergebnis:
XML-Code:
<TEST>
 <MODE>
  <SETTING ATT="0">10</SETTING>
  <SETTING ATT="1">6</SETTING>
  <SETTING ATT="1">1</SETTING>
  <SETTING ATT="1">1234</SETTING>
  <SETTING ATT="2">954</SETTING>
 </MODE>
</TEST>
Mach ich hier einen Fehler? :?:

Vielleicht hat jemand eine Idee, die mir das gewünschte Ergebnis auf einem anderen Weg liefert.

Gruß und vielen Dank!

StTüff

marabu 21. Dez 2006 15:48

Re: Zweifaches Sortieren mit XSL
 
Hallo,

probiere es so:

XML-Code:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/ | @* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()">
        <xsl:sort select="@ATT" data-type="number"/>
        <xsl:sort select="." data-type="number"/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
Freundliche Grüße

StTüff 22. Dez 2006 07:57

Re: Zweifaches Sortieren mit XSL
 
Danke!

Manchmal ist's so einfach :wall:

Gruß,

StTüff


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz