Hallo zusammen,
ich habe folgende xml-Datei
und will mit folgendem xslt
die Elemente sortieren.
Dies funktioniert auch, solange ich für die Sortierung von <Version> in Zeile 16 im xslt nicht order = "Descending" setze. Bei "ascending" erhalte ich für die Sortierreihenfolge aufsteigend der Dokument-Knoten das erwartete Ergebnis.
Hier will ich die höchste Version als erstes Dokument-Element innerhalb des Eintrag-Knoten erhalten.
Warum funktioniert das xlst nicht?
Leider benötige ich die Sotierung im xml, weil es ein weiteres Programm diese nutzt und hier die Anzeige nicht sortierbar gestaltet wurde. Wenn die Elemente in der richtigen Reihenfolge vorliegen, erfolgt auch die Anzeige korrekt.
Vielen Dank für Lösungen/Hinweise
Thomas
ich habe folgende xml-Datei
Code:
<?xml version="1.0" encoding="utf-8"?>
<Daten>
<Eintrag ID="20110929000001" ZE1="Organisation" ZE2="Netzwerke pflegen" ZE3="">
<Titel>Erstellung Geburtstagsliste</Titel>
<Datum>29.11.2011</Datum>
<Termin>0</Termin>
<Status>offen</Status>
</Eintrag>
<Eintrag ID="20111206100442" ZE1="SG" ZE2="TuA" ZE3="">
<Titel>Kontaktdaten</Titel>
<Datum>12.12.2011</Datum>
<Termin>2</Termin>
<Status>neu</Status>
<Dokument ID="20111206100555">
<Datum>01.12.2011</Datum>
<Originalname>AW: E-Titel </Originalname>
<Originalpfad/>
<Pfad>\Cockpit2_Dateien\20111206100555---AW_E-Titel.msg</Pfad>
<Name>AW: E-Titel angepasst </Name>
<Suchwort/>
<Version>1</Version>
</Dokument>
</Eintrag>
<Eintrag ID="20111205130302" ZE1="SAS" ZE2="Projekt" ZE3="">
<Titel>TuA-Paket</Titel>
<Datum>17.01.2012</Datum>
<Termin>40886</Termin>
<Status>erledigt</Status>
<Kommentar ID="20111205130416">
<Datum>05.12.2011</Datum>
<Text>Was ist Umfang der Lieferung</Text>
</Kommentar>
</Eintrag>
<Eintrag ID="20111205130124" ZE1="SAS" ZE2="Projekt" ZE3="">
<Titel>Testbewertung</Titel>
<Datum>16.01.2012</Datum>
<Termin>40885</Termin>
<Status>erledigt</Status>
<Dokument ID="20111206100922">
<Datum>03.12.2011</Datum>
<Originalname>laufende Tests</Originalname>
<Originalpfad/>
<Pfad>\Cockpit2_Dateien\20111206100922---laufende Tests.msg</Pfad>
<Name>Tests</Name>
<Suchwort/>
<Version>3</Version>
</Dokument>
<Kommentar ID="20111205130149">
<Datum>05.12.2011</Datum>
<Text>Rücksprache</Text>
</Kommentar>
<Dokument ID="20111206101921">
<Datum>05.12.2011</Datum>
<Originalname>Ergebnisse</Originalname>
<Originalpfad/>
<Pfad>\Cockpit2_Dateien\20111206101921---Ergebnisse.msg</Pfad>
<Name>Ergebnisse</Name>
<Suchwort/>
<Version>5</Version>
</Dokument>
<Dokument ID="20111206100922">
<Datum>02.12.2011</Datum>
<Originalname>Tests</Originalname>
<Originalpfad/>
<Pfad>\Cockpit2_Dateien\20111206100922---Tests.msg</Pfad>
<Name>Tests2</Name>
<Suchwort/>
<Version>2</Version>
</Dokument>
<Kommentar ID="20111208160533">
<Datum>08.12.2011</Datum>
<Text>Neue Tests</Text>
</Kommentar>
</Eintrag>
</Daten>
und will mit folgendem xslt
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Daten">
<xsl:copy>
<xsl:apply-templates select="@* | node()">
<xsl:sort select="Termin" data-type="number"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="Daten/Eintrag">
<xsl:copy>
<xsl:apply-templates select="@* | node()">
<xsl:sort select="Version" order="descending" data-type="number"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
die Elemente sortieren.
Dies funktioniert auch, solange ich für die Sortierung von <Version> in Zeile 16 im xslt nicht order = "Descending" setze. Bei "ascending" erhalte ich für die Sortierreihenfolge aufsteigend der Dokument-Knoten das erwartete Ergebnis.
Code:
<?xml version="1.0" encoding="utf-8"?>
<Daten>
<Eintrag ID="20110929000001" ZE1="Organisation" ZE2="Netzwerke pflegen" ZE3="">
<Titel>Erstellung Geburtstagsliste</Titel>
<Datum>29.11.2011</Datum>
<Termin>0</Termin>
<Status>offen</Status>
</Eintrag>
<Eintrag ID="20111206100442" ZE1="SG" ZE2="TuA" ZE3="">
<Titel>Kontaktdaten</Titel>
<Datum>12.12.2011</Datum>
<Termin>2</Termin>
<Status>neu</Status>
<Dokument ID="20111206100555">
<Datum>01.12.2011</Datum>
<Originalname>AW: E-Titel </Originalname>
<Originalpfad />
<Pfad>\Cockpit2_Dateien\20111206100555---AW_E-Titel.msg</Pfad>
<Name>AW: E-Titel angepasst </Name>
<Suchwort />
<Version>1</Version>
</Dokument>
</Eintrag>
<Eintrag ID="20111205130124" ZE1="SAS" ZE2="Projekt" ZE3="">
<Titel>Testbewertung</Titel>
<Datum>16.01.2012</Datum>
<Termin>40885</Termin>
<Status>erledigt</Status>
<Kommentar ID="20111205130149">
<Datum>05.12.2011</Datum>
<Text>Rücksprache</Text>
</Kommentar>
<Kommentar ID="20111208160533">
<Datum>08.12.2011</Datum>
<Text>Neue Tests</Text>
</Kommentar>
<Dokument ID="20111206100922">
<Datum>02.12.2011</Datum>
<Originalname>Tests</Originalname>
<Originalpfad />
<Pfad>\Cockpit2_Dateien\20111206100922---Tests.msg</Pfad>
<Name>Tests2</Name>
<Suchwort />
<Version>2</Version>
</Dokument>
<Dokument ID="20111206100922">
<Datum>03.12.2011</Datum>
<Originalname>laufende Tests</Originalname>
<Originalpfad />
<Pfad>\Cockpit2_Dateien\20111206100922---laufende Tests.msg</Pfad>
<Name>Tests</Name>
<Suchwort />
<Version>3</Version>
</Dokument>
<Dokument ID="20111206101921">
<Datum>05.12.2011</Datum>
<Originalname>Ergebnisse</Originalname>
<Originalpfad />
<Pfad>\Cockpit2_Dateien\20111206101921---Ergebnisse.msg</Pfad>
<Name>Ergebnisse</Name>
<Suchwort />
<Version>5</Version>
</Dokument>
</Eintrag>
<Eintrag ID="20111205130302" ZE1="SAS" ZE2="Projekt" ZE3="">
<Titel>TuA-Paket</Titel>
<Datum>17.01.2012</Datum>
<Termin>40886</Termin>
<Status>erledigt</Status>
<Kommentar ID="20111205130416">
<Datum>05.12.2011</Datum>
<Text>Was ist Umfang der Lieferung</Text>
</Kommentar>
</Eintrag>
</Daten>
Hier will ich die höchste Version als erstes Dokument-Element innerhalb des Eintrag-Knoten erhalten.
Warum funktioniert das xlst nicht?
Leider benötige ich die Sotierung im xml, weil es ein weiteres Programm diese nutzt und hier die Anzeige nicht sortierbar gestaltet wurde. Wenn die Elemente in der richtigen Reihenfolge vorliegen, erfolgt auch die Anzeige korrekt.
Vielen Dank für Lösungen/Hinweise
Thomas