kos: XSL-SORT - Übergabe Parameter Frage

Hallo ich bin neu im HTML sowie XML-Bereich.
Ich habe folgendes Problem. Ich möchte meiner xsl-Datei einen Parameter mitgeben, der dann in der Datei als Sortier SChlüssel nutzt. Aber bisher funktioniert das mit meinen Versuchen nicht.

Über die URL geb ich den Parameter über:

highscore.xml?plevel=1

Meine XSL-Datei sieht so aus:(das was wichtig ist:)

  
  
<xsl:param name="plevel"></xsl:param>  
  
  
<xsl:for-each select="game/Player">  
				  
                   <xsl:sort select="Siehe Unten!" order="ascending"/>  
				   <xsl:sort select="Turns" data-type="number" order="ascending"/>  
				   <tr>  
                      <td  align="center"><xsl:value-of select="Playername"/></td>  
                      <td  align="center"><xsl:value-of select="Turns"/></td>  
                      <td  align="center"><xsl:value-of select="Level"/></td>  
                    </tr>  
                </xsl:for-each>  
  
  

Habe es mit folgenden Möglichkeiten versucht:

<xsl:sort select="*[local-name() = $SORT_COL]"order="ascending"/>
--> Im Highscore ist nur nach Zügen sortiert, anscheinend wird die Sortierung mit dem Level nicht ausgeführt bzw missinterpretiert sodass sie keinen Auswirkungen hat.

<xsl:sort select="Level = $plevel" order="ascending"/>
-->das gleiche passiert hier ( siehe beschreibung oben)

<xsl:sort select="@*[Level()= $plevel]" order="ascending"/>
-->ebenfalls das gleiche ( siehe beschreibung oben)

Ich möchte halt erreichen, dass ich mit dem Übergabeparameter (plevel) nur die Datensätze mit dem entsprechenden Level ausgebe. Kann mir da jemand helfen? Stehe etwas auf dem Schlauch

  1. Hallo,

    Ich möchte halt erreichen, dass ich mit dem Übergabeparameter (plevel) nur die Datensätze mit dem entsprechenden Level ausgebe. Kann mir da jemand helfen? Stehe etwas auf dem Schlauch

    xsl:sort -wie der Name schon sagt- sortiert. Das ist keine Filterung!

    Ungetestet:
    <xsl:for-each select="game/Player[@Level = $plevel]">

    oder

    <xsl:for-each select="game/Player[@Level = '$plevel']">

    Viele Grüße
    Siri

    1. Hallo,

      Ich möchte halt erreichen, dass ich mit dem Übergabeparameter (plevel) nur die Datensätze mit dem entsprechenden Level ausgebe. Kann mir da jemand helfen? Stehe etwas auf dem Schlauch

      xsl:sort -wie der Name schon sagt- sortiert. Das ist keine Filterung!

      Ungetestet:
      <xsl:for-each select="game/Player[@Level = $plevel]">

      oder

      <xsl:for-each select="game/Player[@Level = '$plevel']">

      Viele Grüße
      Siri

      Schonmal danke für die Hilfe,  aber leider kommt das gleiche Ergebnis wie oben, sprich lediglich nach Turns/Zügen wird sotiert.

      Wie kann ich denn nach Datensätzen filtern? Wie macht man das dann in einer xsl-datei?

      1. Habe jetzt folgendes versucht:

          
          
         <xsl:for-each select="game/Player[Level='$plevel']">  
        				   <xsl:sort select="Turns" data-type="number" order="ascending"/>  
          
        
        

        Jetzt gibt er mir eine leere Higshcore Liste zurück.
        Mein Eindruck ist, dass er nicht den Wert der Variable plevel liest. sehe ich das richtig? oder bin ich da auf dem Holzweg.

        kann mir jemand bei diesem lösungsversuch helfen? oder ist der ansatz falsch?

        1. Habe jetzt folgendes versucht:

          <xsl:for-each select="game/Player[Level='$plevel']">
             <xsl:sort select="Turns" data-type="number" order="ascending"/>

            
            
          Level ist doch der Parameter von Player, oder?  
          Dann vergiss das @ nicht, wie ich vorhin schon beschrieben habe:  
          <xsl:for-each select="game/Player[@Level = '$plevel']">  
            
          Ansonsten musst du dein XML (Auszug) zeigen.  
            
          Viele Grüße  
          Siri
          
          1. Level ist doch der Parameter von Player, oder?
            Dann vergiss das @ nicht, wie ich vorhin schon beschrieben habe:
            <xsl:for-each select="game/Player[@Level = '$plevel']">

            Und wenn es vom data-type number ist dann gehören die ' ' nicht drumrum

            1. Hallo Siri,

              Level ist doch der Parameter von Player, oder?
              Dann vergiss das @ nicht, wie ich vorhin schon beschrieben habe:
              <xsl:for-each select="game/Player[@Level = '$plevel']">

              Und wenn es vom data-type number ist dann gehören die ' ' nicht drumrum

              Bei data-type="text" aber auch nicht, weil dieser String und nicht der Parameter verglichen würde.

              Grüße,
              Thomas

              1. Level ist doch der Parameter von Player, oder?
                Dann vergiss das @ nicht, wie ich vorhin schon beschrieben habe:
                <xsl:for-each select="game/Player[@Level = '$plevel']">

                Und wenn es vom data-type number ist dann gehören die ' ' nicht drumrum

                Bei data-type="text" aber auch nicht, weil dieser String und nicht der Parameter verglichen

                Vielen Lieben Dank, dass ihr mir helft.

                Also meine XML Datei sieht so aus: ~~~xml

                <?xml version="1.0" encoding="UTF-8"?>
                <?xml-stylesheet type="text/xsl" href="score.xsl"?>
                <game>
                <Player>
                <Playername/>
                <Turns/>
                <Level/>
                </Player>

                <Player><Playername>test</Playername><Turns>2</Turns><Level>1</Level></Player>
                <Player><Playername>kos</Playername><Turns>6</Turns><Level>1</Level></Player>
                <Player><Playername>test</Playername><Turns>3</Turns><Level>2</Level></Player>

                  
                Wenn ich jetzt aber in der schleife den besagten code benutze  
                `<xsl:for-each select="game/Player[@Level = '$plevel']">`{:.language-xml} oder  
                `<xsl:for-each select="game/Player[@Level = $plevel]">`{:.language-xml}  
                Wird mir zwar eine Tabelle angezeigt, aber der Inhalt bleibt leer. Also keine Datensätze zu sehen. Habt ihr da noch einen Tipp für mich, warum das nicht klappt?
                
                1. Also meine XML Datei sieht so aus: ~~~xml

                  <Player><Playername>test</Playername><Turns>2</Turns><Level>1</Level></Player>

                  Wenn ich jetzt aber in der schleife den besagten code benutze
                  [code lang=xml]<xsl:for-each select="game/Player[@Level = '$plevel']">

                  
                  > `<xsl:for-each select="game/Player[@Level = $plevel]">`{:.language-xml}  
                  > Wird mir zwar eine Tabelle angezeigt, aber der Inhalt bleibt leer. Also keine Datensätze zu sehen. Habt ihr da noch einen Tipp für mich, warum das nicht klappt?  
                    
                  Ja, Level ist kein Attribut von Player, sondern ein weiterer Knoten.  
                  Besser wäre:  
                  <Player level="1" turns="2">  
                    <Playername>test</Playername>  
                  </Player>  
                    
                  Dann klappts auch. Kleinschreibung beachten!  
                    
                    
                  
                  
                  1. Also meine XML Datei sieht so aus: ~~~xml

                    <Player><Playername>test</Playername><Turns>2</Turns><Level>1</Level></Player>

                    Wenn ich jetzt aber in der schleife den besagten code benutze
                    [code lang=xml]<xsl:for-each select="game/Player[@Level = '$plevel']">

                    
                    > > `<xsl:for-each select="game/Player[@Level = $plevel]">`{:.language-xml}  
                    > > Wird mir zwar eine Tabelle angezeigt, aber der Inhalt bleibt leer. Also keine Datensätze zu sehen. Habt ihr da noch einen Tipp für mich, warum das nicht klappt?  
                    >   
                    > Ja, Level ist kein Attribut von Player, sondern ein weiterer Knoten.  
                    > Besser wäre:  
                    > <Player level="1" turns="2">  
                    >   <Playername>test</Playername>  
                    > </Player>  
                    >   
                    > Dann klappts auch. Kleinschreibung beachten!  
                      
                      
                    danke danke, also das reinschreiben in die xml-datei funktioniert nach kurzer anpassung nun einwandfrei. nun habe ich aber das problem. das das auslesen bzw das umwandeln in eine html datei per xsl nicht mehr richtig klappt. Meine xml datei sieht nun so aus :  
                    ~~~xml
                    <game>  
                    	<Player level="" turns="">  
                    		<Playername/>		  
                    	</Player>  
                      
                    <Player><Playername>kos</Playername><Turns>1</Turns><Level>5</Level></Player></game>
                    

                    bei der ausgabe über xsl . seh ich nur den namen. level und turns werden nicht angezeigt.