fredy: daten in tabelle neben einander anzeigen.

Hi!

ich möchte gerne meine XML-Daten in einer Tabelle via. XSL ausgeben, wobei immer 2 Datensätze in einer TR in zwei verschiedenen TDs erscheinen sollen.

Datensatz1 Datensatz2
Datensatz3 Datensatz4
Datensatz5

Das funzt auch soweit, aber:

Da es sein kann, daß es eine ungerade anzahl an Datensätzen gibt, soll im oben angeführten Bsp. anstall Datensatz6 ein leeres TD (<TD> </td>) ausgegeben werden.

Wie kann ich das überprüfen?

Mein Code (der ja schon bei einer geraden Anzahl von Datensätzen funzt) ist diesem Posting angehängt.

Danke
  fredy

_____ Mein Code _____

<xsl:template match="ausgabe">

<xsl:if test="(position() mod 2) = 1">      
    <TR>
     <td height="30" width="133"> .... text .... </td>  
     <td width="10"> ... Grafik ... </td>
     <td width="18" align="left" valign="middle"> .... </td>
     <td width="443" valign="middle"><xsl:value-of select="../product/following-sibling::ausgabe"/></td>
        <td><![CDATA[   ]]></td>

<!-- Wenn es noch einen 2. gibt -->
   <xsl:if test="../product/following-sibling::ausgabe[. != '']">
     <td height="30" width="133"> .... text .... </td>  
     <td width="10"> ... Grafik ... </td>
     <td width="18" align="left" valign="middle"> .... </td>
     <td width="443" valign="middle"><xsl:value-of select="../product/following-sibling::ausgabe"/></td>
      </xsl:if>
  
   <!-- Sonst -->
     <xsl:if test="../product/following-sibling::ausgabe[. = '']">
     <td colspan="3"><![CDATA[ ]]></td>
      </xsl:if>  
  
    </TR>    
  </xsl:if>

</xsl:template>

  1. Hallo!

    <xsl:template match="ausgabe">

    <xsl:variable name="ungerade" select="(count(.) mod 2) =1" />

    .
    .
    .

    <xsl:if test="$ungerade">
    <td> </td>
    </xsl:if>

    Ist es das?

    Grüße
    Thomas

    1. Hallo!

      Es geht so eigentlich besser/eleganter:

      <xsl:template match="ausgabe">
      <xsl:variable name="ungerade" select="count(.) mod 2" />
      .
      .
      .
      <xsl:if test="$ungerade = 1">
      <td> </td>
      </xsl:if>

      Grüße
      Thomas

      1. Hi Thomas!

        Danke für Deine 2 Lösungsansätze. (Ich hab' wieder mal zu kompliziert gedacht ...)

        Grüße
          fredy

        Hallo!

        Es geht so eigentlich besser/eleganter:

        <xsl:template match="ausgabe">
        <xsl:variable name="ungerade" select="count(.) mod 2" />
        .
        .
        .
        <xsl:if test="$ungerade = 1">
        <td> </td>
        </xsl:if>

        Grüße
        Thomas