Gunnar Bittersmann: Childproblem mit Selektorregeln

Beitrag lesen

@@BloodySword:

nuqneH

<?xml version="1.0" encoding="UTF-8"?>

Das versetzt IE 6 in den Quirksmodus. Lass die überflüssige XML-Deklaration weg!

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Das passt nicht mit deinem Text „Hallo Welt“ zusammen. Ist die Seite deutsch oder englisch?

Im Quelltext habe ich jetzt kein <tbody>. Ist das dann nicht mehr Standardkonform?

Doch, das ist es. [XHTML10-DTD]:

<!ELEMENT table  
     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

Das heißt, 'table' darf sowohl 'tbody'-Elemente als auch 'tr'-Elemente als Kinder enthalten.

In HTML 4.01 [HTML401-DTD] gilt jedoch

<!ELEMENT TABLE - -  
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>

'tr' ist niemals Kind von 'table'. Allerdings sind Start-Tag und End-Tag von 'tbody' optional:

<!ELEMENT TBODY    O O (TR)+           -- table body -->

Der XHTML-Code

<table>  
  <tr>  
    <td>foo</td>  
  </tr>  
</table>

erzeugt also bei Verarbeitung als HTML den Elementbaum

table
└tbody
 └tr
  └td

bei Verarbeitung als XML jedoch

table
└tr
 └td

Soll der XHTML-Code bei Verarbeitung als HTML und als XML denselben Elementbaum erzeugen, dann ist 'tbody' zu verwenden:

<table>  
  <tbody>  
    <tr>  
      <td>foo</td>  
    </tr>  
  </tbody>  
</table>

In CSS mache ich das so:
table.cpres > tbody > tr > td { /* ... */ }[/code]

Wozu Kindselektor, wenn es doch auch der Nachfahrenselektor tut?

Qapla'

--
Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)