milky: Selektoren mit Ziffern am Anfang - erlaubt seit CSS2? - NN4?

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

  1. 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

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. 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

  2. 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

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. 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

      --
      Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
      Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
      Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
      1. Hi,

        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 ("_").

        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

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. 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

      1. 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

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. 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

          1. 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

            --
            MudGuard? Siehe http://www.Mud-Guard.de/
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.