Toon posts:

[DOM] CSS in XHTML-fragment ook toegepast buiten namespace

Pagina: 1
Acties:

Verwijderd

Topicstarter
Tijdens het spelen met XML verbaasde ik mij over het browser-resultaat van het volgende stukje code.

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<foo>
    <bar>Hellow</bar>
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <title>Yeah</title>
            <style type="text/css">
                bar {
                    color: yellow
                }
            </style>
        </head>
        <body>
            <h1>Yeah</h1>
        </body>
    </html>
</foo>


In zowel Firefox als Opera als Konqueror wordt de tekst van het bar-element geel weergegeven. Is het niet opmerkelijk dat dit stukje CSS ook buiten de XHTML-namespace wordt toegepast? Als de XHTML-namespace-declaratie wordt verwijderd wordt er niets gestijld, dus het lijkt een XHTML-iets te zijn. Internet Explorer geeft natuurlijk gewoon de DOM-tree weer, daar IE lte 7 de XHTML-namespace niet ondersteunt.

Als je een algemene XML-stylesheet (CSS) koppelt aan bovenstaand XML heeft de ingebedde stijldeclaratie zoals verwacht voorrang (tenzij je in de XML-stylesheet specifiekere selectors of !important gebruikt).

Verwijderd

CSS2.1 is helemaal niet namespace aware, dus ik vind het niet gek dat het overal werkt. Als je de xmlns weghaalt is het stukje "html" niks anders als gewoon wat xml en heeft het style element dus geen speciale betekenis, dus het is niet gek dat het dan niet meer werkt.

volgens mij stond volgens de CSS3 selector spec (die namespace aware is) "bar" gelijk aan "*|bar", dus voor alle namespaces, tenzij een default namespace is gespecificeerd, dan geldt ie alleen voor de default namespace. Maar het lijkt me sterk dat browsers al volgens de css3 selectors spec werken (is nog in last call fase)