XML-Experten hier?

Diskutiere das Thema XML-Experten hier? im Forum Netzwerk-Software

  1. Claus_ak18

    Claus_ak18 Thread Starter Mitglied

    Beiträge:
    489
    Zustimmungen:
    10
    Mitglied seit:
    18.01.2007
    Speziell hätte ich eine Frage zu dem <xsl:sort...

    Kennt sich da jemand aus?
     
  2. timbugto

    timbugto Mitglied

    Beiträge:
    114
    Zustimmungen:
    2
    Mitglied seit:
    08.11.2006
    Du möchtest sicherlich per XSLT, XML-Elemente sortieren und ausgeben lassen. Was ist deine genaue Frage-vielleicht kann ich helfen.

    Gruß
     
  3. Claus_ak18

    Claus_ak18 Thread Starter Mitglied

    Beiträge:
    489
    Zustimmungen:
    10
    Mitglied seit:
    18.01.2007
    Genau das möchte ich. Das Hier ist meine XML-Datei:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="02.xsl"?>
    <!DOCTYPE kontakt SYSTEM "file:/Users/Claus/Documents/Uni/z_xml_test/01.dtd">
    
    <kontakt>
        <name>
            Claus
        </name>
        <name>
            Tobi
        </name>
        <name>
            Jenny
        </name>
        <name>
            Niko
        </name>
        <name>
            Dejan
        </name>
    </kontakt>    
    
    Und das hier die xsl-Datei:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        
        <xsl:output method="html"/>
        <xsl:template match="/">
            <HTML>
                <HEAD>
                    <TITLE>
                        Sortierung
                    </TITLE>
                </HEAD>
                <BODY>
                    <xsl:for-each select="//kontakt/name">
                        <xsl:sort select="/kontakt" data-type="text" order="ascending"/>
                        
                        
                        <BR/>
                    </xsl:for-each>
                    
                </BODY>    
            </HTML>
            
        </xsl:template>
    </xsl:stylesheet>
    
    Und die Namen sollen Alphabetisch sortiert werden.

    Ich denke mal das ich die Pfad-Angabe falsch habe. Aber ich komm einfach nicht dahinter :noplan:
     
  4. timbugto

    timbugto Mitglied

    Beiträge:
    114
    Zustimmungen:
    2
    Mitglied seit:
    08.11.2006
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method="html"/>
        <xsl:template match="/">
            <HTML>
                <HEAD>
                    <TITLE> Sortierung </TITLE>
                </HEAD>
                <BODY>
                        <xsl:for-each select="//name">
                            <xsl:sort select="." data-type="text" order="ascending"/>
                            <li>
                                <xsl:value-of select="."/>
                            </li>
                            <BR/>
                        </xsl:for-each>
                </BODY>
            </HTML>
        </xsl:template>
    dein Pfad war falsch, aber damit klappt es.
     
  5. Claus_ak18

    Claus_ak18 Thread Starter Mitglied

    Beiträge:
    489
    Zustimmungen:
    10
    Mitglied seit:
    18.01.2007
    Super! Vielen Dank.

    Kannst Du mir vielleicht kurz erklären wieso das nun funktioniert?
     
  6. timbugto

    timbugto Mitglied

    Beiträge:
    114
    Zustimmungen:
    2
    Mitglied seit:
    08.11.2006
    Code:
                        <xsl:for-each select="/kontakt/name">
                            <xsl:sort select="self::node()" data-type="text"/>
                            <li>
                                <xsl:value-of select="self::node()"/>
                            </li>
                            <BR/>
                        </xsl:for-each>
    
    So geht's auch, wenn das weiter hilft.

    Mit der "for-each" Schleife suchst du ja den gewünschten Knoten. Da du ihn presentiert bekommst, brauchst du nur nach dem aktuellen Element ("Name") sortieren und ausgeben. Mit "self::node()" oder "." adressiert man das aktuelle Element.

    Hoffe es hilft, ist aber alles nit so kompliziert.

    Gruß
     
  7. Claus_ak18

    Claus_ak18 Thread Starter Mitglied

    Beiträge:
    489
    Zustimmungen:
    10
    Mitglied seit:
    18.01.2007
    OK, und //name heißt. Suche Kind das name heißt?

    Noch eine Frage außerhalb dieser:
    position() gibt was an?

    @timbugto: Du bist mir eine große Hilfe. :) Danke!
     
  8. timbugto

    timbugto Mitglied

    Beiträge:
    114
    Zustimmungen:
    2
    Mitglied seit:
    08.11.2006
Die Seite wird geladen...

MacUser.de weiterempfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...