Sortierung von xml-Dateien

Dieses Thema Sortierung von xml-Dateien im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von DamonWilder, 8. Aug. 2005.

Thema: Sortierung von xml-Dateien Hallo Forenten, ich habe mal wieder ein kleines Problem, mit dem ich mich als Anfänger schon wieder einen halben...

  1. Hallo Forenten,

    ich habe mal wieder ein kleines Problem, mit dem ich mich als Anfänger schon wieder einen halben Tag herumschlage.

    Ich habe innerhalb eines xml-Dokumentes Namen, die alphabetisch sortiert werden sollen. Mein Quelltext (schematisch):

    Code:
    <privatkunde>
    		<name>
    		Müller
    		</name>
    		<name>
    		Meier
    		</name>
    		<ort n = Bonn />
    </privatkunde>
    <privatkunde>
    	<name>
    		Beerhalter
    	</name>
    	<name>
    		Zuckmayer
    	</name>
    </privatkunde>
    <privatkunde>
    	<name>
    		Schulz
    	</name>
    	<name>
    		Gerhard
    	</name>
    	<ort n = München />
    </privatkunde>
    Das Ergebnis auf der html-Seite sollte jetzt so aussehen:

    Beerhalter;
    Gerhard; München
    Meier; Bonn
    Müller; Bonn
    Schulz; München
    Zuckmayer;

    Mein Problem sind die Ortsangaben, die als Variablen übergeben werden. Jedes Privatkunde-Element muss m.E. mittels Schleife mehrmals durchlaufen werden... Bei mir funktioniert es aber einfach nicht. Kann mir jemand schreiben, wie die xslt-Datei wenigstens ungefähr aussehen sollte? Übrigens lässt sich das xml-Dokument nicht mehr ändern :)

    Danke im Voraus!
     
  2. Hi

    Naja zu dem XML Format sag ich mal nix 8)

    In Anlehnung an http://www.w3schools.com/xsl/xsl_sort.asp sollte das so aussehen:
    Code:
    <xsl:for-each select=privatkunde>
       <xsl:sort select=name[0]/>
       <tr>
        <td><xsl:value-of select=name[0]/>, <td><xsl:value-of select=name[1]/></td>
       <xsl:for-each select=ort>
           <td><xsl:value-of select=@n/></td>
       </xsl:for-each>
       </tr>
    </xsl:for-each>
    
    PS: Bin ein wenig eingerostet, weiß nicht genau ob es so funktioniert.

    Gruß, Michael
     
  3. Hi

    Vergiss meinen Code-Vorschlag, der ist leider falsch
    Die XML Datei solltest du am besten per XSLT in ein anderes XML Format umwandeln, denn die ist semantisch so totaler Unsinn.

    Gruß, Michael
     
  4. Hallo Micha,

    warum sollte denn meine Datei semantisch völliger Unsinn sein? Versteh ich nicht... Klar könnte man das besser strukturieren, aber falsch...
     
  5. Hi

    Naja gehört z.B. der Ort zum Privatkunden oder zum Namen und warum sind mehrere Personen in einem Privatkunden drin. Wieviele dürfen das maximal pro Privatkunde sein.

    Ich weiß z.B. nicht ob es über XSLT möglich ist in dieser Struktur nach Namen zu sortieren.

    Gruß, Michael
     
  6. Hallo Michael,

    ich gebe zu, mein Beispiel ist etwas unstrukturiert und unübersichtlich. Eigentlich möchte ich nämlich eine Art Personenregister erstellen. Vielleicht ist folgendes Beispiel einfacher zu verstehen, um mein Problem zu verdeutlichen:

    Ich habe mehrere aufeinanderfolgende Textabsätze, die manchmal Namen enthalten, die wiederum mehrmals auftreten können.

    Code:
    <buch>
    <absatz>
     Es ist sehr unwahrscheinlich, dass
       <name> 
         Aristoteles
       </name>
      den deutschen Dichter und Dramatiker
       <name>
         Brecht
       </name>
      kannte.
    </absatz>
    </buch>
    
    Diese Namen sollen jetzt ausgelesen und alphabetisch aufgelistet werden, was per einfacher <xsl:sort>-Anweisung ja nicht weiter schwierig ist. Aber damit man auch weiß, auf welcher Seite die Namen stehen, werden den Textabsätzen noch Seitenzahlen zugeordnet, z.B. so:
    Code:
    <buch>
    <absatz>
     Es ist sehr unwahrscheinlich, dass
       <name> 
         Aristoteles
       </name>
      den deutschen Dichter und Dramatiker
       <name>
         Brecht
       </name>
      kannte.
    <Seitenende n = 1 />
    </absatz>
    <absatz>
      Vermutlich wird auch ein Herr
       <name>
         Cicero
       </name>
      einen Mann namens
       <name>
         Derrida
       </name>
       nicht gekannt haben.
    <Seitenende n=2 />
    </absatz>
    <absatz>
      Aber sicher ist hingegen, dass
        <name>
           Nietzsche
        </name>
       sowohl
        <name>
           Schopenhauer
        </name>
           als auch 
        <name>
           Aristoteles
        </name>
       gekannt haben muss.
    <Seitenende n=3 />
    </absatz>
    </buch>
    
    Meiner alphabetischen Namensliste soll jetzt jeweils die Variable n hinzugefügt werden, damit man eben weiß, auf welcher Seite des Buches der Name steht. Die html-Seite soll dann so aussehen:

    Aristoteles, 1, 3
    Brecht, 1
    Cicero, 2
    Derrida, 2
    Nietzsche, 3
    Schopenhauer, 3

    Bei meiner derzeitigen xsl-Datei wird jeder Absatz aber nur einmal durchlaufen. Dies sollte durch eine Schleife behoben werden. Aber wie? Desweiteren wirft der Browser auch die Seitenzahlen aus, wenn gar kein Name in einem Absatz enthalten ist, z.B. so

    , 4

    Soll er aber nicht...

    Gibt es irgendwelche Lösungsansätze?

    Gruß, Marcus
    Code:
    
    
     
Die Seite wird geladen...

Sortierung von xml-Dateien - Ähnliche Themen

Forum Datum
Sortierung im Windows Explorer Windows XP Forum 28. Mai 2013
Sortierung nach eigenen Belieben ändern !!! Windows 7 Forum 2. Mai 2010
Beliebige Dateisortierung mit drag&drop Windows 7 Forum 28. Okt. 2009
Sortierung in Excel 2002 Windows XP Forum 14. Sep. 2008
Exchange 2003 + falsche Sortierung der Adressbucheinträge Windows XP Forum 5. Nov. 2007