Eindeutigkeit mit key/keyref

Die Wahrung der Eindeutigkeit von Elementen, wie es in relationalen Datenbanken über Schlüsselfelder gehandhabt wird, kann auch in einem XML-Schema realisiert werden. Dazu gibt es die Elemente key und keyref. Während das Element key zur Definition der Eindeutigkeit verwendet wird, wird mit dem Element keyref Bezug auf ein key-Element genommen.

Zur Illustration soll dieses kurze Beispiel (Ausschnitt) genügen:

<xs:element name="betriebskindergarten">

	  <xs:complexType>
		<xs:sequence>
             	<xs:element name="mitarbeiter" type="mitarbeiterTyp" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
	   </xs:complexType>

         <xs:key name="MitarbeiterID">
	      <xs:selector xpath="mitarbeiter"/>
	       <xs:field xpath="@mnr"/>
	 </xs:key>

      <xs:keyref name="KinderCode" refer="MitarbeiterID">
	    <xs:selector xpath="mitarbeiter/kinder"/>
	    <xs:field xpath="@mnr"/>
	  </xs:keyref>

</xs:element>

Zum obigen Beispiel sollte noch angemerkt werden, dass die key- & keyref-Elemente nicht direkt unter dem schema-Element angegeben werden dürfen. Deshalb muss scheinbar die Definition dieser „Schlüsselbeziehungen“ innerhalb eines Elements erfolgen. Bei einer anderen Vorgehensweise, erhält man bei Validierung (eine) Fehlermeldung(en). Der Autor hat dazu keine Erklärung gefunden. Viele gefundene Muster-Beispiele haben dies so gemacht, sodass der Autor dieses Vorgehen zur Kenntnis nehmen musste.
Noch einen Kommentar zum Syntax des key-/keyref-Elements: Mit dem Element selector wird angegeben, für welches Element die Einschränkung gilt. Im Beispiel ist es das Element „mitarbeiter“. Dies geschieht über das Attribut xpath, dem als Wert ein XPATH-Ausdruck übergeben wird. Das Element field dient dazu, das Element - innerhalb des angegebenen Elements bei selector - zu nennen, was eindeutig sein muss. Auch diese Angabe erfolgt über ein XPATH-Ausdruck.

Es sei erwähnt, dass es auch ein Element unique gibt. Dies unterscheidet sich vom Element key insofern, dass auch Elemente mit Nullwerten zugelassen werden (vgl.Vonhoegen, 2009, S. 151-154).

siehe auch: XML-Schema

Kategorie: XML, X

Quelle(n):

  • Vonhoegen, Helmut (2009): Einstieg in XML. Grundlagen, Praxis, Referenz. 5., aktualisierte Auflage. Bonn: Galileo Press. S. 151-154