wuz: Tabellenzeile tr attribute set

Hallo!

Wie kann ich folgenden Code vereinfachen, damit ich den tabellenzelleninhalt nicht immer anschreiben muss?

xsl:choose
       <xsl:when test="position() mod 2 = 0">
        <xsl:element name="tr" use-attribute-sets="gerade">
         <td>
          <xsl:value-of select="position()"/>
         </td>
         <td>
          <xsl:value-of select="$current_teilnehmer_name"/>
         </td>
         <td>
          <xsl:value-of select="$current_teilnehmer_fname"/>
         </td>

</xsl:element>
       </xsl:when>
       xsl:otherwise
        <xsl:element name="tr" use-attribute-sets="ungerade">
         <td>
          <xsl:value-of select="position()"/>
         </td>
         <td>
          <xsl:value-of select="$current_teilnehmer_name"/>
         </td>
         <td>
          <xsl:value-of select="$current_teilnehmer_fname"/>
         </td>

</xsl:element>

  1. Hallo,

    Wie kann ich folgenden Code vereinfachen, damit ich den tabellenzelleninhalt nicht immer anschreiben muss?

    Du muss den Tabellenzelleninhalt anschreiben? ;-)

    Aber um auf deine Frage zu antworten: entweder gar nicht, weil die andere Lösungen auch nicht weniger Code produzieren würden, oder in Abhängigkeit davon was du in deinem xsl:attribute-sets hast, deren Inhalt direkt in <tr> unterbringen:

    <tr>
        xsl:choose
           <xsl:when test="position() mod 2 = 0">
              <xsl:attribute name="...">...</xsl:attribute>
               ...
           ...
        </xsl:choose>
             <td>
              <xsl:value-of select="position()"/>
             </td>
             <td>
              <xsl:value-of select="$current_teilnehmer_name"/>
             </td>
             <td>
              <xsl:value-of select="$current_teilnehmer_fname"/>
             </td>
    </tr>

    Oder so z.B.
    <tr>
    <xsl:attribute name="class">
     xsl:choose
       <xsl:when test="position() mod 2 = 0">dark</xsl:when>
       xsl:otherwiselight</xsl:otherwise>
    </xsl:choose>
    </xsl:attribute>
    ...
    </tr>

    Grüße
    Thomas

    xsl:choose
           <xsl:when test="position() mod 2 = 0">
            <xsl:element name="tr" use-attribute-sets="gerade">
             <td>
              <xsl:value-of select="position()"/>
             </td>
             <td>
              <xsl:value-of select="$current_teilnehmer_name"/>
             </td>
             <td>
              <xsl:value-of select="$current_teilnehmer_fname"/>
             </td>

    </xsl:element>
           </xsl:when>
           xsl:otherwise
            <xsl:element name="tr" use-attribute-sets="ungerade">
             <td>
              <xsl:value-of select="position()"/>
             </td>
             <td>
              <xsl:value-of select="$current_teilnehmer_name"/>
             </td>
             <td>
              <xsl:value-of select="$current_teilnehmer_fname"/>
             </td>

    </xsl:element>

    1. Vielen Dank für deine Mühe bei allen Fragen!

      Einzig "elegante" Lösung ist wohl mit apply-templates oder call-templates, ich müsste aber soviel variablen übergeben...

      <xsl:template match="produkt">
       xsl:choose
        <xsl:when test="position() mod 2 = 0">
          <xsl:element name="tr" use-attribute-sets="grau">
           <xsl:apply-templates />
          </xsl:element>
        </xsl:when>
        xsl:otherwise
          <xsl:element name="tr" use-attribute-sets="gelb">
           <xsl:apply-templates />
          </xsl:element>
        </xsl:otherwise>
       </xsl:choose>
      </xsl:template>

      Hallo,

      Wie kann ich folgenden Code vereinfachen, damit ich den tabellenzelleninhalt nicht immer anschreiben muss?

      Du muss den Tabellenzelleninhalt anschreiben? ;-)

      Aber um auf deine Frage zu antworten: entweder gar nicht, weil die andere Lösungen auch nicht weniger Code produzieren würden, oder in Abhängigkeit davon was du in deinem xsl:attribute-sets hast, deren Inhalt direkt in <tr> unterbringen:

      <tr>
          xsl:choose
             <xsl:when test="position() mod 2 = 0">
                <xsl:attribute name="...">...</xsl:attribute>
                 ...
             ...
          </xsl:choose>
               <td>
                <xsl:value-of select="position()"/>
               </td>
               <td>
                <xsl:value-of select="$current_teilnehmer_name"/>
               </td>
               <td>
                <xsl:value-of select="$current_teilnehmer_fname"/>
               </td>
      </tr>

      Oder so z.B.
      <tr>
      <xsl:attribute name="class">
      xsl:choose
         <xsl:when test="position() mod 2 = 0">dark</xsl:when>
         xsl:otherwiselight</xsl:otherwise>
      </xsl:choose>
      </xsl:attribute>
      ...
      </tr>

      Grüße
      Thomas

      xsl:choose
             <xsl:when test="position() mod 2 = 0">
              <xsl:element name="tr" use-attribute-sets="gerade">
               <td>
                <xsl:value-of select="position()"/>
               </td>
               <td>
                <xsl:value-of select="$current_teilnehmer_name"/>
               </td>
               <td>
                <xsl:value-of select="$current_teilnehmer_fname"/>
               </td>

      </xsl:element>
             </xsl:when>
             xsl:otherwise
              <xsl:element name="tr" use-attribute-sets="ungerade">
               <td>
                <xsl:value-of select="position()"/>
               </td>
               <td>
                <xsl:value-of select="$current_teilnehmer_name"/>
               </td>
               <td>
                <xsl:value-of select="$current_teilnehmer_fname"/>
               </td>

      </xsl:element>

      1. Hallo,

        Vielen Dank für deine Mühe bei allen Fragen!

        Gerne ;)

        Einzig "elegante" Lösung ist wohl mit apply-templates oder call-templates, ich müsste aber soviel variablen übergeben...

        ... weshalb ich sagte "weil die andere Lösungen auch nicht weniger Code produzieren würden".

        Grüße
        Thomas