Announcement

Collapse
No announcement yet.

for-each: alle Elemente bis aufs Erste ansprechen

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

  • for-each: alle Elemente bis aufs Erste ansprechen

    Hallo,

    ich möchte gern in einer for-each-Schleife alle Elemente bis auf das Erste
    ansprechen. Ist dies möglich?

    Auf welche andere Art und Weise könnte ich das machen?

    Hier ein Code-Ausschnitt:

    <xsl:for-each select="cell">
    <!-- Gibt es so etwas wie eine first-anweisung? -->
    <th cellspacing="0" colspan="{@colspan}" rowspan="{@rowspan}"
    class="colHeader">
    <xsl:value-of select="." /></th>
    </xsl:for-each>

    Konkret möchte ich für das erste Element eine andere Klasse angeben. Alle
    anderen Elemente sollen das Klassenattribut 'colHeader' bekommen.

  • #2
    Hi, ich würde mal versuchen in die Schleife eine if-Abfrage zu integrieren. Etwa so:

    <xsl:for-each select="cell">
    <xsl:if test="position()!=first()">
    <!-- Ausgabe -->
    </xsl:if>
    </xsl:for-each>

    Comment


    • #3
      XSLT/XPath 1.0

      Code:
      <xsl:for-each select="cell">
      
        <th cellspacing="0" colspan="{@colspan}" rowspan="{@rowspan}">
      
          <xsl:attribute name="class">
      
            <xsl:choose>
              <xsl:when test="position() = 1">
                <xsl:text>andereKlasse</xsl:text>
              </xsl:when>
              <xsl:otherwise>
                <xsl:text>colHeader</xsl:text>
              </xsl:otherwise>
            <xsl:choose>
      
          </xsl:attribute>
      
          <xsl:value-of select="."/>
       
        </th>
      
      </xsl:for-each>

      XSLT/XPath 2.0

      Code:
      <xsl:for-each select="cell">
      
        <th cellspacing="0" colspan="{@colspan}" rowspan="{@rowspan}"
          class="{if(position() = 1) then 'andereKlasse' else 'colHeader'}">
          <xsl:value-of select="."/>
        </th>
      
      </xsl:for-each>

      Comment

      Working...
      X