Tim Tepaße: nur eine ID pro Element erlaubt (Mit tollen Kästchengrafiken!)

Beitrag lesen

Hallo Thomas,

Dann ist, wie schon gesagt wäre aber eine 1:1 beziehung nicht mehr
gegeben.

Ja, aber mein Postinggrund ist ja eben genau der, daß ich hier keine
strikte 1:1-Beziehung sehe, eine Eindeutigkeit wird ja nur in eine
Richtung benötigt. Ich versuche einen Grund zu erkennen, wieso diese
Eindeutigkeit in beide Richtungen benötigt wird.

Ich verwende in sehr vielen Fällen IDs um Links zu generieren, oder
bestimmte Inhalte anzuzeigen, da wäre es fatal, wenn ein Element plötzlich
mehr als einen ID-Wert hätte. Z.B. bei Anzeige einer Unterseite eines
Dokuments, oder den Link auf dieselbe.

Ich kann Dir hier nicht ganz folgen. Wo liegt denn das fatale daran, die
IDs bleiben doch alle weiterhin für diesen Zweck nutzbar. Oder missverstehe
ich Dich hier gerade? Kannst Du das noch mal mehr erklären?

Ebenso in vielen anderen Bereichen wo ein ID als Vergleichbasis dient.

Ich sehe nämlich nicht, wieso mehr eindeutige IDs nicht weiterhin als
Vergleichsbasis dienen können.

Wenn wir schon genau sein wollen: genaugenommen ist deine ID id="descartes
huygens" kein ID-Typ sonder ein IDREFS-Typ, (..)

Nein. Mein id="descartes huygens" würde ein hypothetischer Datentyp
namens IDS, also eine Liste oder der Plural von IDS, ähnlich wie NMTOKENS
der Plural von NMTOKEN ist. IDREFS ist der Plural von IDREF und das ist
sehr streng genommen keine ID, sondern nur ein Verweis auf eine ID, wie
ich gerade schon bei Andreas schrieb: [pref:t=81022&m=471688]. Sozusagen
Pointer auf Pointer auf Elemente. Ja, diese Unterscheidung ist etwas sehr
streng bis analfixiert, ja. ;-)

Aber IDREF und IDREFS als Datentypen werden auch nur in solchen Fällen
benutzt, in der DTD von HTML 4 Strict finde ich sie nur bei den Attributen
for für das Element label und beim Attribut headers für das Element th,
in beiden Fällen dienen sie explizit dafür, von dem jeweiligen Element
eine »Verknüpfung« auf das bzw. die jeweiligen anderen Elemente zu
schaffen.

denn weder Descarter noch Huygens sind verschwunden, sondern nur wo anders
hingekommen (in dem Fall ins Archiv). Und wenn sie doch ganz verschwunden
sind, brauchst du auch keine ID.

Der Clou ist ja, sie sind nicht wirklich verschwunden, im Bereich Archiv
auf demselben Dokument existieren ja noch minimale Informationen über sie,
in diesem Fall ein Link auf mehr Informationen. Gut, ich merke langsam, daß
mein hypothetischen Beispiel sehr bemüht wird. ;-)

Außderdem: deine Antwort löst deine Frage auch nicht, denn es kann auch
vorkommen, dass aus id="descartes huygens"  ein id="descartes" wird, womit
ein Anker  href="#huygens" auch wieder ins Leere führen würde.

Das hatte ich nicht rausgestellt gestern abend - meine Frage zielt ja
nicht auf eine konkrete Lösung für unsere jetztige, nicht perfekte
Realität, sondern auf Spekulationen darüber, weswegen es keinen Wert
IDS gibt. Ich sehe nichts, was »im Prinzip« dagegen sprechen würde,
trotzdem gibt es ihn nicht. Was mich wundert. :-)

Dürfte eine ID mehr als nur einen Wert haben, würde das auch sehr viel
mehr von der Software verlangen: Parsen würde viel aufwendiger ausfallen.
Es müssten viele Funktionalitäten geändert werden.

Ja, das stimmt. Einiges wurde ja auch schon hier im Thread angesprochen.
Und eine Änderung jetzt, wo es SGML und HTML und XML schon eine ziemliche
Zeitlang gibt, wäre Wahnsinn.

Aber auch SGML und XML würden nicht ungeschont davonkommen: IDREF und
IDREFS müssen dann ebenfalls neu definiert werden.

Das verstehe ich nicht. IDREF und IDREFS sind Referenzen zu IDs, könnten
also wie bisher definiert bleiben. Es sei denn, man will noch etwas neues
hinzufügen, eine Referenz auf ein Element mit einer festen _Menge_ von IDs,
also ein IDSETREF oder noch schlimmer ein IDSETREFS. Aber da geht mir
wirklich die Phantasie aus, wozu man das brauchen könnte.

The purpose of IDS is to allow one element to refer to another:

Ja. Wenn Du mir nochmal die Kästchengrafik verzeihst:

___________                       _______
     |           |  hat ein Attribut   |       |
     | element 1 | ------------------> | IDREF |
     |___________|  vom Typ IDREF(S)   |_______|
                                           |
                                           |
                  das auf die ID 1         |
          o--------------------------------o
          |            weist ...
          V
       ______                             ___________
      |      |      die das weitere      |           |
      | ID 1 | ------------------------> | element 2 |
      |______|   Element identifiziert   |___________|

^
       ______                                  |
      |      |   ... und ID 2 identifiziert    |
      | ID 2 | --------------------------------o
      |______|   das Element auch, problemlos.

Ich sehe da immer noch keine grundlegende Änderung der Funktionsweise
von IDs, nämlich das eindeutige Identifizieren von Elementen.

Tim