Datenschutzerklärung

Doppelpunkt in id-Attribut

Validome - Forum

Startseite Validome
RSS 2.0  
Sie sind nicht angemeldet. Atom 1.0  
Forum Home / HTML und XHTML-Forum /

Doppelpunkt in id-Attribut

  Beitrag schreiben
Autor
Beitrag Seiten: 1
Charlie
Gast



Hallo zusammen,

ich möchte Daten aus einem PHP Skript an JavaScript übergeben, indem ich das id-Attribut "missbrauche" und dort einen Base64 codierten String angebe. Da im id-Attribut nur Buchstaben, Zahlen und '-', '_' und ':' erlaubt sind (http://www.w3.org/TR/html4/types.html#h-6.2), benutze ich diese statt den normalerweise bei Base64 verwendeten Sonderzeichen.

Validome behauptet jetzt, meine id-Attribute wären ungültig. Darf ich keine Doppelpunkte benutzen (obwohl das ja so unter o.g. Url steht)?

Vielen Dank für jede Hilfe!


31.08.2006 22:16:33
  Zitieren
Gurkenpapst
Gast



Doch, darfst du. Zumindest solange du als erstes Zeichen einen Buchstaben wählst. Eventuell ist das aber auch ein Bug, näheres kann man ohne Code schwerlich sagen.

Die Idee an sich klingt aber völlig abgedreht, warum lässt du nicht von PHP sowas wie <script type="text/javascript>variablenname="deine-daten";</script> ausgeben?


01.09.2006 00:26:08
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hallo,
in HTML ist der Doppelpunkt im id-Attribut erlaubt (nicht am Anfang), in XHTML dagegen nicht.


_______________________________________
mfg
Thomas Mell

www.validome.org

01.09.2006 01:15:10
  Zitieren
Gurkenpapst
Gast



Sicher? Laut http://www.w3.org/TR/xhtml1/#C_8
Note that the collection of legal values in XML 1.0 Section 2.3, production 5 is much larger than that permitted to be used in the ID and NAME types defined in HTML 4. When defining fragment identifiers to be backward-compatible, only strings matching the pattern [A-Za-z][A-Za-z0-9:_.-]* should be used.
, http://www.w3.org/TR/REC-xml/#id
Values of type ID MUST match the Name production. A name MUST NOT appear more than once in an XML document as a value of this type; i.e., ID values MUST uniquely identify the elements which bear them.
und http://www.w3.org/TR/REC-xml/#NT-Name
Name       ::=       (Letter | '_' | ':') (NameChar)*
sollte ein Doppelpunkt im id-Attributwert auch XHTML zulässig sein. Es sind demnach sogar andersherum Werte in XHTML zulässig, die in HTML nicht zulässig waren. Gerade deshalb wird ja in den Kompatiblitätsrichtlinien darauf hingewiesen.

01.09.2006 17:29:56
  Zitieren
Gurkenpapst
Gast



Nachtrag:

Interessant, laut http://www.w3.org/TR/xmlschema-2/#ID ist der Doppelpunkt tatsächlich ungültig. Offenbar ist das ein Wiederspruch? Oder habe ich irgendwas übersehen?


01.09.2006 17:47:30
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hallo,
ich habe auch lange rumgestöbert und bin über diesen Wiederspruch gestolpert. Ich habe mich aber für die Version aus der Schemaspec entschieden, da der ":" bei XML für Namensräume reserviert ist (wenn auch nicht in Attributwerten).
So wie es aussieht entspricht der Datentyp von id in ein XML-Dokument nicht dem Datentyp 'ID' im Schema.
Im Schema entspricht der Datentyp 'ID' (http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#ID) dem Datentyp 'NCName', und dieser ist 'QName without the prefix and colon' also ohne ":".
Nur, was haben die beiden id's überhaupt miteinander zu tun ? - nichts.
Es ist doch eher so das für die Schemadeklaration des id-Attributes ein falscher Datentyp verwendet wird - id ist jedenfalls falsch, der Datentyp 'Name' (http://www.w3.org/TR/2001/REC-xmlschema ... 0502/#Name) währe da wohl passender, oder sehe ich das falsch ?
Werde wohl mal wieder das W3C-Schema fixen müssen...


_______________________________________
mfg
Thomas Mell

www.validome.org

01.09.2006 20:33:42
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hi,
ich habs gefunden:
http://www.w3.org/TR/xml-id/#processing

The normalized value of the attribute is an NCName according to the Namespaces in XML Recommendation which has the same version as the document in which this attribute occurs (NCName for XML 1.0, or NCName for XML 1.1).

Dort ist ein Link auf http://www.w3.org/TR/REC-xml-names/#NT-NCName
wo wiederum "NCNameChar       ::=       NameChar - ':'" steht.
Also NameChar ohne ":", demnach dürfen id's in XML kein ":" enthalten, das Schema ist korrekt und der Validator arbeitet auch richtig ;-)


_______________________________________
mfg
Thomas Mell

www.validome.org

02.09.2006 00:03:25
  Zitieren
Gurkenpapst
Gast



Damit ist der Widersprich nicht gelöst. Das von dir zitierte Dokument bezieht sich auf das xml:id-Attribut, das ist doch was anderes als das id-Attribut!? xml:lang und lang sind doch auch nicht das Gleiche ...

Sowohl die XHTML- als auch die XML-Spezifikation ist hier imo sehr deutlich, lediglich das Schema weicht davon ab. Ich vermute daher auch, dass das Schema fehlerhaft ist. Offenbar ist das ja nicht das erste mal?


02.09.2006 20:55:24
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hallo,
ich verstehe den Unterschied zwischen id und xml:id folgendermaßen:
id ist erst einmal irgendein Attribut, das es sich z. B. dabei um den Datentyp 'ID' handelt, bestimmt erst das Schema. Das Attribut id könnte aber auch eine ganz andere Bedeutung haben...
xml:id hat dagegen eine feste Funktion (auch ohne Schema), nämlich unsere geliebte ID ohne ":".
Genau so verhält es sich mit xml:lang und lang.
Jetzt stellt sich für mich die Frage warum das W3C in XHTML nicht das xml:id Attribut eingeführt hat, sondern beim id-Attribut geblieben ist?!
Die einzige logische Erklärung ist, das eben doch der Doppelpunkt erlaubt ist; Dann ist aber deren Schema falsch.
Also doch wieder das Schema fixen...


_______________________________________
mfg
Thomas Mell

www.validome.org

03.09.2006 02:26:56
  Zitieren
Gurkenpapst
Gast



Volle Zustimmung!

Jetzt stellt sich für mich die Frage warum das W3C in XHTML nicht das xml:id Attribut eingeführt hat, sondern beim id-Attribut geblieben ist?!

Sehr einfach: Sonst wäre die Kompatiblität zu bestehenden HTML-UAs ja nicht mehr gegeben.


04.09.2006 00:36:15
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544

Sehr einfach: Sonst wäre die Kompatiblität zu bestehenden HTML-UAs ja nicht mehr gegeben.

Schon klar, aber man hätte doch für "echte" XHTML-Dokumente xml:ID einführen können (hat man bei xml:lang auch gemacht). Da dies nicht geschehen ist, ist die einzige logische Erklärung der benötigte ":" im id-Attribut.
Es währe sowas Problemlos möglich gewesen:
<p id="myID" xml:id="myID" lang="en" xml:lang"en">
aber nicht sowas:
<p id="my:ID" xml:id="my:ID" lang="en" xml:lang"en">
Andererseits währe die Einführung von xml:id doch problemlos möglich gewesen. Neben den vielen Besonderheiten die zwecks Rückwärtskompatibilität zu HTML beschlossen wurden, währe es doch ein Einfaches gewesen zu sagen "keine : in id-Attributen verwenden".
Wenn jemand seine HTML in ein XHTML-Dokumenten umschreiben möchte, währe es halt ein Punkt mehr gewesen, den er zu beachten hätte.


_______________________________________
mfg
Thomas Mell

www.validome.org

04.09.2006 02:33:43
  Zitieren
Gurkenpapst
Gast



Das hast du natürlich recht, es wäre aber nicht mal eine Einschränkung zur Kompatiblität mehr gewesen, diese existiert ja jetzt auch (wenn auch andersrum).

Angesichts der häufigen Nutzung von id-Attributen für JavaScript hätte man dann aber auch dort einiges doppelt ausführen müssen. Ein NS-Equivalent für getElementById() gibt es desweiteren auch gar nicht, oder? Auch die Bindung an CSS-Selektoren hätte erweitert werden müssen.

Wie auch immer, in Spezifikationen muss man eh immer Kompromisse eingehen und trotz großer Sorgfalt wird man Unstimmigkeiten oder eher ungünstige Vorgaben nicht immer ausschließen können.


04.09.2006 17:19:55
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hallo,

Ein NS-Equivalent für getElementById() gibt es desweiteren auch gar nicht, oder?

Doch, gibt es -> http://www.php.net/manual/de/function.d ... namens.php


Wie auch immer, in Spezifikationen muss man eh immer Kompromisse eingehen und trotz großer Sorgfalt wird man Unstimmigkeiten oder eher ungünstige Vorgaben nicht immer ausschließen können.

Richtig, doch währe es doch wohl das Wenigste, Fehler und Unstimmigkeiten zu beseitigen wenn man drauf hingewiesen wird. Dagegen wehrt sich das W3C aber Erfolgreich seit 8 Jahren (lieber neue Specs mit neuen Fehlern produzieren).
Das Schema habe ich übrigens angepasst.


_______________________________________
mfg
Thomas Mell

www.validome.org

21.09.2006 16:05:51
  Zitieren
Seiten: 1   Beitrag schreiben
Wechsel zu

Die letzten Beiträge aus diesen Forum

Valid HTML 4.01