Capior: XML-Daten nach dem Datum sortieren

Hi

XML-Datei:
-------------------------------------
<referenzen>
  <referenz>
    <titel>Titel der Referenz</titel>
    <text>Ja, blabla und so...</text>
    <datum>20-05-01</datum>
  </referenz>
  <referenz>
    <titel>Titel der Referenz</titel>
    <text>Ja, blabla und so...</text>
    <datum>25-03-01</datum>
  </referenz>
  <referenz>
    <titel>Titel der Referenz</titel>
    <text>Ja, blabla und so...</text>
    <datum>25-03-02</datum>
  </referenz>
</referenzen>
-------------------------------------

Ich will nun diese Datei sortiert nach dem Datum ausgeben lassen.

Ich denke ich muss den Weg über XSLT einschlagen. Aber wie mach ich sowas innerhalb einer ASP-Seite von der aus ich auf das XML-File zugreiffe???

Danke und tschüss
  Capior

  1. XML-Datei:

    <referenzen>
      <referenz>
        <titel>Titel der Referenz</titel>
        <text>Ja, blabla und so...</text>
        <datum>20-05-01</datum>
      </referenz>

    Ich will nun diese Datei sortiert nach dem Datum ausgeben lassen.

    Einlesen, sortieren, ausgeben.

    Ich denke ich muss den Weg über XSLT einschlagen.

    Wenn es XSLT sein soll, hast du kein besonders gutes Datumsformat gewählt, aber spalte das Datum in seine Bestandteile auf und sortiere mit xsl:sort.

    Aber wie mach ich sowas innerhalb einer ASP-Seite von der aus ich auf das XML-File zugreiffe???

    In der Regel über MSXML. Wenn du genauere Antworten erwartet hast, musst du schon genauere Fragen stellen.

    1. XML-Datei:

      <referenzen>
        <referenz>
          <titel>Titel der Referenz</titel>
          <text>Ja, blabla und so...</text>
          <datum>20-05-01</datum>
        </referenz>

      Ich will nun diese Datei sortiert nach dem Datum ausgeben lassen.

      Einlesen, sortieren, ausgeben.

      Ich denke ich muss den Weg über XSLT einschlagen.

      Wenn es XSLT sein soll, hast du kein besonders gutes Datumsformat gewählt, aber spalte das Datum in seine Bestandteile auf und sortiere mit xsl:sort.

      okay, das mit dem Spalten ist soweit klar. Was soll ich für ein Format wählen?

      Aber wie mach ich sowas innerhalb einer ASP-Seite von der aus ich auf das XML-File zugreiffe???

      In der Regel über MSXML. Wenn du genauere Antworten erwartet hast, musst du schon genauere Fragen stellen.

      alles klar; aber mein Problem ist ein anderes: Eigentlich sollt ich XSLT server-seitig ausführen (nutze IIS 5.1). Ich möchte auch Variabeln (wohl via Querystring) an das XSL-File übergeben um das Datum dann aufwärts oder abwärts sortieren zu können. Wie mach ich sowas?

      Ziel ist es einfach das XML-File wie eine Datenbank nutzen zu können bei der ich Daten nach Kriterien auf- oder abwärts sortieren kann.
      Irgendwie ein sql-befehl in XSLT.

      Danke und tschüss
        Capior

      1. hi zusammen

        könnte der/diejenige, die auf diesen Post antwortet so lieb sein und mir die Nachricht auch per Mail zukommen lassen, da ich für ca. 4-5 Tage abwesend bin und dort keinen Intenerzugang habe.

        Danke und tschüss
          Capior

      2. hallo,

        Ich will nun diese Datei sortiert nach dem Datum ausgeben lassen.
        okay, das mit dem Spalten ist soweit klar. Was soll ich für ein Format wählen?

        ich habe mal deine datei genommen:
        --------
        <?xml version="1.0" encoding="ISO-8859-1"?>
        <?xml-stylesheet type="text/xsl" href="caprior.xsl" ?>
        <referenzen>
          <referenz>
            <titel>Titel der Referenz</titel>
            <text>Ja, blabla und so...</text>
            <datum>20-05-01</datum>
          </referenz>
          <referenz>
            <titel>Titel der Referenz</titel>
            <text>Ja, blabla und so...</text>
            <datum>25-03-01</datum>
          </referenz>
          <referenz>
            <titel>Titel der Referenz</titel>
            <text>Ja, blabla und so...</text>
            <datum>25-03-02</datum>
          </referenz>
        </referenzen>
        ------------

        die xsl datei dazu:
        -----------
        <?xml version="1.0" encoding="iso-8859-1"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

        <xsl:template match="/referenzen">
        <html>
        <head><title>Referenzen</title></head>
        <body>
        <xsl:for-each select="referenz">
        <xsl:sort select="concat(substring(datum, 7, 2), substring(datum, 4, 2), substring(datum, 1, 2))" data-type="number" />
        <p>
        <b><xsl:value-of select="titel" /></b><br />
        <xsl:value-of select="text" /><br />
        <i><xsl:value-of select="datum" /></i>
        </p>
        </xsl:for-each>
        </body></html>
        </xsl:template>
        </xsl:stylesheet>
        ----------

        select="concat(substring(datum, 7, 2), substring(datum, 4, 2), substring(datum, 1, 2))

        bewirkt, dass das datum von hinten (also jahr-monat-tag) ohne die bindestriche zu einem string konvertiert wird, diesen string sortieren wir mit: data-type="number".

        Aber wie mach ich sowas innerhalb einer ASP-Seite von der aus ich auf das XML-File zugreiffe???
        alles klar; aber mein Problem ist ein anderes: Eigentlich sollt ich XSLT server-seitig ausführen (nutze IIS 5.1). Ich möchte auch Variabeln (wohl via Querystring) an das XSL-File übergeben um das Datum dann aufwärts oder abwärts sortieren zu können. Wie mach ich sowas?

        ich kann es dir nicht genau sagen, wie du es mit asp machst, aber du wirst vermutlich die xml datei als dom baum einlesen müssen und dann kannst du diese baum nach belieben sortiert ausgeben (wobei du dann die sortierkriterien als parameter in der url übergibst z.B. http://www.domain.de/referentzen/referenz.xml?sort=descending)
        siehe auch den artikel von M$:
        http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexxml/html/xml092099.asp

        Ziel ist es einfach das XML-File wie eine Datenbank nutzen zu können bei der ich Daten nach Kriterien auf- oder abwärts sortieren kann.
        Irgendwie ein sql-befehl in XSLT.

        _das_ ist wieder etwas völlig anderes!

        dafür wird zur Zeit "XML Query" entwickelt:
        http://www.w3.org/XML/Query
        aber ich denke nicht, dass du das wirklich willst ;-)

        grüße
        thomas