magnetben: Zeilen einer XML-Tabelle mit unterschiedlichen Farben darstellen

Hallo,

ich hab folgendes Problem:

Ich habe eine generierte XML-Datei, die mit einer xslt-Datei zu einer html Seite transformiert wird. Die Länge der Tabelle in der XML-Datei ist variabel, kann aber mitunder sehr lang werden. Ich möchte, dass die Tabelle in der HTML Datei für jede 2. Zeile mit einer Hintergrundfarbe versehen ist.
Die Tabellenzeilen lege ich mit xsl:for-each an, somit habe ich nur einen <tr>-Tag - Wie kann ich nun die CSS Datei geschickt formulieren, dass abwechselnd die Zeilen grau und weiß hinterlegt sind? Oder muss ich eine neue Zählschleife in der xslt-Datei generieren?

Gruß
ben

  1. Ich habe eine generierte XML-Datei, die mit einer xslt-Datei zu einer html Seite transformiert wird. Die Länge der Tabelle in der XML-Datei ist variabel, kann aber mitunder sehr lang werden. Ich möchte, dass die Tabelle in der HTML Datei für jede 2. Zeile mit einer Hintergrundfarbe versehen ist.
    Die Tabellenzeilen lege ich mit xsl:for-each an, somit habe ich nur einen <tr>-Tag - Wie kann ich nun die CSS Datei geschickt formulieren, dass abwechselnd die Zeilen grau und weiß hinterlegt sind? Oder muss ich eine neue Zählschleife in der xslt-Datei generieren?

    Eher Letzteres, es sei denn, du kannst dich etwas [1] Gedulden, bis die CSS Selektoren verlässlich interpretiert werden.

    [1]1 2 3 Jahre

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
       <°)))o><                      ><o(((°>o
  2. @@magnetben:

    Wie kann ich nun die CSS Datei geschickt formulieren, dass abwechselnd die Zeilen grau und weiß hinterlegt sind?

    :nth-child()

    Aktuelle Opera und Safari können’s schon; Firefox und IE 6 & 7 nicht.

    Oder muss ich eine neue Zählschleife in der xslt-Datei generieren?

    http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm#position@title=position und http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm#operatoren@title=mod sind deine Freunde.

    Live long and prosper,
    Gunnar

    --
    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
    1. @@magnetben:

      Wie kann ich nun die CSS Datei geschickt formulieren, dass abwechselnd die Zeilen grau und weiß hinterlegt sind?

      :nth-child()

      Aktuelle Opera und Safari können’s schon; Firefox und IE 6 & 7 nicht.

      Oder muss ich eine neue Zählschleife in der xslt-Datei generieren?

      http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm#position@title=position und http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm#operatoren@title=mod sind deine Freunde.

      Live long and prosper,
      Gunnar

      Danke für eure Antworten. Leider kommen Safari und Firefox nicht in Frage - ich muss den IE benutzen. Mit den beiden vorgeschlagenen Funktionen kenne ich mich zwar nicht aus, aber ich werd mein bestes Versuchen. Danke!

    2. @@magnetben:

      Wie kann ich nun die CSS Datei geschickt formulieren, dass abwechselnd die Zeilen grau und weiß hinterlegt sind?

      :nth-child()

      Aktuelle Opera und Safari können’s schon; Firefox und IE 6 & 7 nicht.

      Oder muss ich eine neue Zählschleife in der xslt-Datei generieren?

      http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm#position@title=position und http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm#operatoren@title=mod sind deine Freunde.

      Live long and prosper,
      Gunnar

      Ok, hab's hinbekommen:

      falls es jemanden interessiert:
      <xsl:if test="position() mod 2 = 1">
       <tr class="Record">
        <xsl:call-template name="ContactReihen"/>
       </tr>
      </xsl:if>

      <xsl:if test="position() mod 2 = 0">
       <tr class="Record_Test" bgcolor="#FFCDAB">
        <xsl:call-template name="ContactReihen"/>
       </tr>
      </xsl:if>

      Danke für die Hilfe!

      1. @@magnetben:

        <xsl:if test="position() mod 2 = 0">
        <tr class="Record_Test" bgcolor="#FFCDAB">

        Sagtest du nicht was von „CSS“ und „geschickt“?!

        Was hat des missbilligte HTML-Attribut 'bgcolor' damit zu tun? Weg damit!

        Setze mittels XSLT zwei Klassen "gerade"/"ungerade" (oder en: "even"/"odd"; einfach "Record"/"Record_Test" umbenennen?) und gib die Stile dafür im Stylesheet an!

        Oder auch nur eine Klasse, deren Stil die Formatierung für alle Tabellenzeilen überschreibt.

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.