Selektoren mit Ziffern am Anfang - erlaubt seit CSS2? - NN4?
milky
- css
0 MudGuard0 milky
0 Thomas Luethi
Hey,
Ich hab gerade (http://www.meyerweb.com/eric/articles/webrev/199809.html)
gelesen, daß CSS-Selektoren (also die class= und id= Dinger) auch mit Zahlen
beginnen dürfen - oder daß das zumindest seit CSS level 2 erlaubt sei.
Allerdings heißt es bei Herrn Meyer, daß es nur "under certain
circumstance[s]" erlaubt ist. Emmmmmh, ist es nun erlaubt oder nicht?
Und weiß jemand, wie es nun genau mit der NN4-Unterstützung aussieht? Mir
persönlich ist es Backe, aber können die späteren Navigator-Versionen (ab
4.5 oder 4.7/4.8) nun damit umgehen, oder ist beim Netscape total tote Hose?
(mir fehlen gerade die älteren xlibs, sonst hätte ich es selbst probiert)
MsF,
milky
Hi,
Ich hab gerade (http://www.meyerweb.com/eric/articles/webrev/199809.html)
gelesen, daß CSS-Selektoren (also die class= und id= Dinger) auch mit Zahlen
beginnen dürfen - oder daß das zumindest seit CSS level 2 erlaubt sei.
Niente.
Da liegt der Autor schlicht und einfach daneben.
http://www.w3.org/TR/REC-CSS2/syndata.html#tokenization
sagt:
ident {nmstart}{nmchar}*
name {nmchar}+
nmstart [a-zA-Z]|{nonascii}|{escape}
nonascii [^\0-\177]
unicode \[0-9a-f]{1,6}[ \n\r\t\f]?
escape {unicode}|\[ -~\200-\4177777]
in nmstart ist also keine Ziffer erlaubt.
im dort verlinkten Anhang D findet sich dann:
class
: '.' IDENT
;
Für Klassen ist also eine Ziffer am Anfang nicht möglich.
Und für id schon allein von HTML-Seite her nicht:
http://www.w3.org/TR/html401/types.html#type-id, wo es heißt:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Allerdings heißt es bei Herrn Meyer, daß es nur "under certain
circumstance[s]" erlaubt ist. Emmmmmh, ist es nun erlaubt oder nicht?
Im Zusammenhang mit HTML ist es nicht möglich.
Gleiches gilt für alle SGML-basierten Sprachen (bei denen ID immer gleich definiert ist), also auch XML, XHTML usw.
AFAIK müssen in SGML auch Elementnamen mit einem Buchstaben beginnen.
Damit es überhaupt erlaubt sein könnte, müßte die Dokumentsprache eine nicht-SGML-Sprache sein, die IDs oder Elementnamen erlaubt, die nicht mit einem Buchstaben beginnen müssen.
Was bringt es denn, wenn ein Klassenname oder eine id mit einer Ziffer beginnen könnte? Namen sind Schall und Rauch...
cu,
Andreas
Hey MudGuard,
Niente.
Da liegt der Autor schlicht und einfach daneben.
http://www.w3.org/TR/REC-CSS2/syndata.html#tokenization
Ja, jetzt wo du den Link hergezaubert hast - weiter unten steht es ja
nochmal super eindeutig "[...] may not start with a digit or hyphen".
Für Klassen ist also eine Ziffer am Anfang nicht möglich.
Und für id schon allein von HTML-Seite her nicht:
http://www.w3.org/TR/html401/types.html#type-id, wo es heißt:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Sprich, es würde auch nichts bringen, wenn es in CSS2.1 oder CSS3 erlaubt
wäre - weil HTML dann trotzdem hinterher hinken würde.
Was bringt es denn, wenn ein Klassenname oder eine id mit einer Ziffer beginnen könnte? Namen sind Schall und Rauch...
Es hätte mir etwas Arbeit erleichtert, und weniger dusselige Stylesheets
gebracht - weil ich nämlich Leute (in einem Wiki) frei Seiten erstellen
lasse, und die Seitennamen (auf die ich eben keinen Einfluß hab) dann auch
gleich als Klasse verwende, so daß sich einzelne Seiten gezielt stylen
lassen: <example> .wiki.view.SeitenName { background:... } </example>
Na egal, ist zwar schade, aber kein Weltuntergang;
Danke,
milky
Hallo,
Ich hab gerade (http://www.meyerweb.com/eric/articles/webrev/199809.html)
gelesen, daß CSS-Selektoren (also die class= und id= Dinger) auch mit Zahlen
beginnen dürfen - oder daß das zumindest seit CSS level 2 erlaubt sei.
Vielleicht die Selektoren. (Wobei ich nicht einsehe, wozu das gut sein soll.)
Aber sicher nicht die Klassen- und ID-Namen.
Die duerfen in _CSS_ nur mit Buchstaben, aber nicht mit Zahlen beginnen:
http://www.w3.org/TR/REC-CSS2/syndata.html#q4
"In CSS2, identifiers (including ... classes, and IDs ...) can contain
only the characters [A-Za-z0-9] and ISO 10646 characters 161 and higher,
plus the hyphen (-); they cannot start with a hyphen or a digit."
Und weiß jemand, wie es nun genau mit der NN4-Unterstützung aussieht? Mir
persönlich ist es Backe, aber können die späteren Navigator-Versionen (ab
4.5 oder 4.7/4.8) nun damit umgehen, oder ist beim Netscape total tote Hose?
(mir fehlen gerade die älteren xlibs, sonst hätte ich es selbst probiert)
Wenn Du ein Test-Dokument online stellst und hier verlinkst,
finden sich sicher ein paar Freiwillige, die Netscape 4 noch
auf ihrer Platte haben.
(Ich haette z.B. Netscape 4.78 unter Linux.)
Aber so...
Gruesse,
Thomas
Hallo,
Kleiner Nachtrag.
Aber sicher nicht die Klassen- und ID-Namen.
Die duerfen in _CSS_ nur mit Buchstaben, aber nicht mit Zahlen beginnen
Neuerdings auch mit einem Underscore ("_").
Der wurde erst im Juli 2001 in den Errata hinzugefuegt (Punkt 4.1.3):
http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#known-errors
und ist auch in der CSS 2.1 Specification (W3C Candidate
Recommendation, Stand Februar 2004) enthalten:
http://www.w3.org/TR/CSS21/syndata.html#q6
Netscape 4 hat damit offenbar Probleme - kein Wunder,
wenn man bedenkt, dass er ein paar Jaehrchen zuvor
programmiert wurde...
http://www.blooberry.com/indexdot/history/browsers.htm
Netscape 4.0 Final - Jun. 1997
Netscape 4.5 Final - Oct. 1998
Gruesse,
Thomas
Hi,
Aber sicher nicht die Klassen- und ID-Namen.
Die duerfen in _CSS_ nur mit Buchstaben, aber nicht mit Zahlen beginnenNeuerdings auch mit einem Underscore ("_").
Was aber bei HTML (bzw. allgemein SGML) nur für Klassen gilt - die Definition für ID in HTML (SGML) ändert sich ja nicht.
cu,
Andreas
Hey Thomas,
Vielleicht die Selektoren. (Wobei ich nicht einsehe, wozu das gut sein soll.)
Aber sicher nicht die Klassen- und ID-Namen.
Es ist für mich sinnvoller, wenn ich (falls es mal eintritt) auch einfach
Selektoren wie '.wiki.view.99BottlesOfBeer' verwenden könnte, anstatt die
allererste Ziffer ungeschickt umschreiben zulassen: '.NINE9BottlesOfBeer'
Diese Klassennamen werden bei mir durch die User bestimmt, und auch wenn
es unwarscheinlich ist, daß solche Selektoren dann jemals zur
Seitengestaltung verwendet werden; wollte ich es zumindest gleich
standardkonform machen.
(Jetzt werd' ich doch gleich mal probieren, ob sich der Validator überhaupt
bei sowas beschwert...)
MsF,
milky
Hi,
Es ist für mich sinnvoller, wenn ich (falls es mal eintritt) auch einfach
Selektoren wie '.wiki.view.99BottlesOfBeer' verwenden könnte, anstatt die
allererste Ziffer ungeschickt umschreiben zulassen: '.NINE9BottlesOfBeer'
setze IMMER einen bestimmten Buchstaben voran, z.B. c ==> c99BottlesOfBeer, cPubWithNoBeer
cu,
Andreas
Hey MudGuard,
setze IMMER einen bestimmten Buchstaben voran, z.B. c ==> c99BottlesOfBeer, cPubWithNoBeer
Das ist eine hübsche Idee, könnte ich mich in jedem Fall 'mit anfreunden.
MsF,
milky
Hi,
setze IMMER einen bestimmten Buchstaben voran, z.B. c ==> c99BottlesOfBeer, cPubWithNoBeer
Das ist eine hübsche Idee, könnte ich mich in jedem Fall 'mit anfreunden.
Welche? Die mit dem c oder die mit dem Pub ohne Bier? ;-)
cu,
Andreas