Thomas J.S.: nur eine ID pro Element erlaubt (Mit tollen Kästchengrafiken!)

Beitrag lesen

Hallo Tim,

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.

Weil z.B. ein  &pageid=p3  nicht eindeutig sein kann wenn es in XML so existiert: <page id="p3 p5">, denn es könnte dann ja ebenso gut &pageid=p5 heissen.

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?

Siehe oben (und du kannst dazu auch das XSL TuT ansehen, wo ich ID und IDREFS benütze).
Wie gesagt: wenn ein Elemente mehrere IDs hat, wäre das dann für den Prozessor nicht wirklich eindeutig, d.h. der Prozessor müsste umgeschrieben werden (gut, dass ist wieder ein Randargument, gebe ich zu).
Was passiert aber wenn ich auf ein Element mit IDREFS referenzieren will: es steht dann irgendwo z.B.: referto="p3 p5 p6 p9", aber wenn hier jemand einen Fehler macht und beide IDs angibt, würde es eine doppelte Ausgabe erzeugen, weil es ja _zwei_ IDs gibt, auch wenn das Element nur einmal existiert.

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

Welche ID soll den Prozessor nehmen?

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

und das ist sehr streng genommen keine ID, sondern nur ein Verweis auf eine ID, [...] Sozusagen Pointer auf Pointer auf Elemente.

Dazu sind aber IDREFS da. Du kannst ja eine ganze Kette von Elementen auf diese Weise verknüpfen.

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.

Eben, was hindert dann uns daran IDREFS zu benützen: archiv.xml#descartes (bzw. man füge hier den entsprechenden XPointer ein)

Gut, ich merke langsam, daß
mein hypothetischen Beispiel sehr bemüht wird. ;-)

Ok, gehen wir zurück zur Theorie. ;-)

Ich sehe nichts, was »im Prinzip« dagegen sprechen würde,
trotzdem gibt es ihn nicht. Was mich wundert. :-)

Ich denke das Wort "eindeutig" ist eindeutig genug um zu sagen, dass etwas wirklich eindeutig sein soll ;-)

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.

Da IDREF auf eine ID referenziert muss diese dann, (nun wie denn eigentlich ?) neu definiert werden, wenn eine ID mehrere Werte haben kann. Oder wenn man jetzt eine IDS einführen würde, wäre die Frage von IDREFS insofern noch immer nicht gelöscht, dass es dann noch immer zwei oder mehrere (quasi)identische Referenzen auf ein Element geben kann, was dann wie schon gesagt auch zu mehrfachen Ausgabe führen kann.

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.

<elementA idrefs="e1 e2">
<elementA idrefs="e1">
<elementA idrefs="e2">

<elementB ids="e1 e2">

Es identifiziert nicht eindeutig: denn <elementB> kann duch die ID e1 *und/oder* !! durch die ID e2 identifiziert werden.
Das ist aus der sicht des Elements ebenso nicht eindeutig wie aus der sicht der ID bzw. IDS, denn es ist dann ja eine "und/oder" und nicht eine "ausschlißlich" Beziehung.

Grüße
Thomas