Announcement

Collapse
No announcement yet.

Problem mit for-each Schleife und Variablen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit for-each Schleife und Variablen

    Hallo,
    komme bei einem Problem mit einer for-each-Schleife nicht weiter, hoffe ihr könnt mir helfen:

    Hab folgende XML-Struktur
    Code:
    <root>
      <currentUser>MeinAnzeigename</currentUser>
      <task>
        <title>Aufgabe1</title>
        <prioritaet>(2) Normal</prioritaet>
        <status>In Bearbeitung</status>
        <assigned>Herr Müller</assigned>
        <link>http://localhost/.../</link>
      </task>
      <task>
        <title>Aufgabe2</title>
        <prioritaet>(2) Normal</prioritaet>
        <status>In Bearbeitung</status>
        <assigned>Herr Müller</assigned>
        <link>http://localhost/.../</link>
      </task>
      <task>
        <title>Aufgabe3</title>
        <prioritaet>(2) Normal</prioritaet>
        <status>Nicht begonnen</status>
        <assigned>MeinAnzeigename</assigned>
        <link>http://localhost/.../</link>
      </task>
    </root>
    Benutze XSL V1.0 und möchte nun jeden 'task'-Knoten nach dem aktuellen Benutzer filtern und ausgeben. Ich kriegs aber nicht hin, weil ich Probleme habe die Variablen in der for-each Schleife je nach 'task'-Knoten entsprechend zu überschreiben.
    War das verständlich? Hier mein XSLT dazu:

    Code:
    <xsl:template match="/">
    
      <xsl:variable name="AktuellerBenutzer" select="/root/currentUser" />
      <xsl:variable name="BenutzerAufgabe" select="/root/task/assigned" />
      <xsl:variable name="LinkAufgabe" select="/root/task/link" />
      <xsl:variable name="TitelAufgabe" select="/root/task/title" />
    
      <div class="MeineAufgaben">
        
        <div class="MeineAufgaben_Header">
          <xsl:text>Aufgaben : </xsl:text>
          <xsl:value-of select="$AktuellerBenutzer"/>
        </div>
    
        <div class="MeineAufgaben_ContentBox">
          <ul>
            <xsl:for-each select="/root/task[$BenutzerAufgabe != $AktuellerBenutzer]">
              <li>
                <a>
                  <xsl:attribute name="href">
                    <xsl:value-of select="$LinkAufgabe"/>
                  </xsl:attribute>
                  <xsl:value-of select="$TitelAufgabe"/>
                </a>
              </li>
               </xsl:for-each>
            </ul>
        </div>
        
      </div>
    </xsl:template>
    Die Ausgabe sieht derzeit folgendermaßen aus:

    Aufgaben : MeinAnzeigename
    Aufgabe1
    Aufgabe2
    Aufgabe3

    Sie soll aber nur die Aufgaben den aktuellen Benutzers beinhalten:
    Aufgaben: MeinAnzeigename
    Aufgabe3

    // <xsl:for-each select="/root/task[$BenutzerAufgabe != $AktuellerBenutzer]">
    das ich hier dafür dann eiegntlich '=' anstatt '!=' schreiben müsste ist mir bewusst.

  • #2
    Wenn ich das richtig verstanden habe, suchts Du diese Richtung (nur die erste Variablendefinition ist zielführend):

    Code:
    <xsl:template match="/">
    
      <xsl:variable name="AktuellerBenutzer" select="root/currentUser" />
    
      <div class="MeineAufgaben">
        
        <div class="MeineAufgaben_Header">
          <xsl:text>Aufgaben : </xsl:text>
          <xsl:value-of select="$AktuellerBenutzer"/>
        </div>
    
        <div class="MeineAufgaben_ContentBox">
          <ul>
            <xsl:for-each select="root/task[assigned/text() = $AktuellerBenutzer]">
              <li>
                <a href="{link}"><xsl:value-of select="title"/></a>
              </li>
               </xsl:for-each>
            </ul>
        </div>
        
      </div>
    
    </xsl:template>
    BTW: Den Link habe ich noch vereinfacht.

    Comment


    • #3
      Ah sauber, funktioniert ! Vielen Dank.
      Dann war ich ja doch recht nah an der Lösung

      Comment

      Working...
      X