fr@gma: XML sortieren mit XSL

Hallo,

ich habe hier ein Problem mit meinem XML-Dokument.
Ich möchte das Dokument nach dem Zeitstempel sortieren lassen.
Leider habe ich von XSLT gar keine Ahnung, also habe ich mir die Angaben aus verschieden Beispielen zusammen gebastelt.
Leider ist das XML jetzt nicht mehr lesbar, es kommt immer die Fehlermeldung:

XML-Verarbeitungsfehler: Kein Element gefunden  
Adresse: file:///C:/Inetpub/wwwroot/strassenfest/Daten/gaestebuch.xml  
Zeile Nr. 38, Spalte 8:</root>  
-------^

Hier das XML-Dokument:

<?xml version="1.0" encoding="utf-8"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
<xsl:output method="xml" indent="yes" encoding="utf-8" omit-xml-declaration="yes" />  
<xsl:template match="root">  
  <root>  
    <xsl:apply-templates select="eintrag">  
      <xsl:sort select="zeitstempel" data-type="number" order="ascending"/>  
    </xsl:apply-templates>  
  </root>  
</xsl:template>  
  
<xsl:template match="eintrag">  
  <xsl:copy-of select="."/>  
</xsl:template>  
  
<root>  
	<eintrag>  
		<name>test</name>  
		<ort></ort>  
		<zeitstempel>1216235820</zeitstempel>  
		<mail></mail>  
		<nachricht>testen</nachricht>  
	</eintrag>  
	<eintrag>  
		<name>mustermann</name>  
		<ort></ort>  
		<zeitstempel>1221672060</zeitstempel>  
		<mail></mail>  
		<nachricht>hier ein test</nachricht>  
	</eintrag>  
	<eintrag>  
		<name>muster</name>  
		<ort></ort>  
		<zeitstempel>1243426860</zeitstempel>  
		<mail></mail>  
		<nachricht>leer</nachricht>  
	</eintrag>  
</root>

Könnte mir bitte mal jemand helfen?
Danke vorab.

  1. Hallo fr@gma,

      
    
    > <xsl:template match="eintrag">  
    >   <xsl:copy-of select="."/>  
    > </xsl:template>
    
    

    Hier fehlt </xsl:stylesheet> zum Abschließen des XSLT-Stylesheets.

    ... und hier fängt das XML-Datendokument an:

      
    
    > <root>  
    > ...  
    > </root>
    
    

    Grüße,
    Thomas

    1. Hallo Thomas,

      danke für Deine Hilfe
      Ja, das war ein Fehler aber noch nicht der einzige.
      Jetzt meckert der Parser wieder:

      XML-Verarbeitungsfehler: "Junk" nach Dokument-Element

      <root>  
      ^
      

      Stimmen denn die XSL-Anweisungen?
      Und – ich habe das XSL in das zu bearbeitende XML-Dokument eingebunden.
      Ist das so richtig, oder?

      Viele Grüße
      fr@gma

      1. Hallo fr@gma,

        Stimmen denn die XSL-Anweisungen?
        Und – ich habe das XSL in das zu bearbeitende XML-Dokument eingebunden.
        Ist das so richtig, oder?

        Direkt im Browser eingebunden entsteht die Textausgabe:
        test 1216235820 testen mustermann 1221672060 hier ein test muster 1243426860 leer

        Standalone prozessiert (etwa mit Saxon) wird das gesamte XML-Dokument erzeugt.

        Grüße,
        Thomas

        1. Direkt im Browser eingebunden entsteht die Textausgabe:
          test 1216235820 testen mustermann 1221672060 hier ein test muster 1243426860 leer

          Standalone prozessiert (etwa mit Saxon) wird das gesamte XML-Dokument erzeugt.

          Wirklich?
          Bei mir kommt der genannte Fehler!
          XML-Verarbeitungsfehler: "Junk" nach Dokument-Element
          <root>
          ^

          Oder müssen für XSL spezielle Interpreter aktiviert werden?
          Danke für Deine Holfe

          Gruß, fr@gma

          1. Ich habe das XSL jetzt durch eine externe Datei eingebunden.
            Jetzt funktioniert es.
            Jedoch habe ich nun wieder ein Problem.

            Ich möchte die XML-Datei mit SimpleXML auswerten.
            Auch hier möchte ich auf die mit XSL sortierten Einträge zugreifen.
            Leider werden hier die Einträge nicht wie gewünscht sortiert ausgegeben.
            Hat jemand einen Tipp für mich?

            Gruß, fr@gma

            1. Ich konnte das Problem jetzt selbst lösen.
              SimpleXML kann zumindest im Moment wohl kein XSL interpretieren.
              Ich habe daher das XML-Dokument als DOM geladen, dann die XSL-Daten importiert und anschließend in ein SimpleXML-Object konvertiert.

              $XMLfile = //Dateiname des XML-Dokumentes;
              $XSLfile = //Dateiname des XSL-Dokumentes;

              $xslDoc = new DOMDocument();
              $xslDoc->load($XSLfile);

              $xmlDoc = new DOMDocument();
              $xmlDoc->load($XMLfile);

              $proc = new XSLTProcessor();
              $proc->importStylesheet($xslDoc);
              $xml = $proc->transformToDoc($xmlDoc);
              $xml = simplexml_import_dom($xml);

              Hoffentlich geht das irgendwann mal weniger umständlich.
              Vielen Dank nochmal für alle Hilfestellungen!

              Viele Grüße
              fr@gma