Schemabezogene Markup in XML-Dokumenten

Schemabezogene Markup in XML-Dokumenten umfasst xsi:nil, xsi:type, xsi:schemaLocationund xsi:noNamespaceSchemaLocation.

Zur schemabezogenen Markup in XML-Dokumenten gehören die folgenden Elemente:

xsi:nil

Wenn ein XML-Element in der XML-Dokumentinstanz auf xsi:nil gesetzt wird, wird das zugehörige dynamische Klassenfeld auf null gesetzt. Der auf dieses Feld angewendete Operator isunknown gibt true zurück. Anders ausgedrückt, wenn ein XML-Objekt mit der Methode driver.writeObject serialisiert wird, werden diesem Objekt die folgenden Informationen hinzugefügt:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Beispiel für die Zuordnung von xsi:nil in einem XML-Dokument

Das folgende Beispiel veranschaulicht die Zuordnung von xsi:nil in einem XML-Dokument. Die Regel detectPersonWithMissingAddress verwendet das Schlüsselwort isunknown, um eine Person zu finden, deren Adresse nicht bekannt ist.

Erläuterungen zu diesem Beispiel:

  • xsi ist der Name des Namespace.

  • Die Instanz http://www.w3.org/2001/XMLSchema ist die URL.

  • nil ist ein Element des Namespace.

Im Folgenden sehen Sie das Schema:

<element name="person">
  <complexType>
    <sequence>
     <element name="surname"/>
     <element name="address" nillable="true"/>
   </sequence>
  <complexType>
</element>

Im Folgenden sehen Sie einen Auszug aus einem XML-Dokument:

<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <surname>Smith</surname>
  <address xsi:nil="true"/>
</person>

Im Folgenden sehen Sie die Regel:

rule detectPersonWithMissingAddress
{
  when {
    Person ( address isunknown );
  }
  then {
   ...
  }
}

XML-Namespaces stellen universell eindeutige Namen für Elemente und Attribute bereit. Entwickler können die Namen für die folgenden Aktionen verwenden:

  • Fragmente aus verschiedenen Dokumenten ohne Namenskonflikte kombinieren

  • Wiederverwendbare Codemodule schreiben, die für bestimmte Elemente und Attribute aufgerufen werden können. Universell eindeutige Namen gewährleisten, dass solche Module nur für die richtigen Elemente und Attribute aufgerufen werden.

  • Definieren Sie Elemente und Attribute, die in anderen Schemas ohne das Risiko von Namenskonflikten wiederverwendet werden können.

xsi:type

Zum Eingrenzen des Typs eines Elements im XML-Dokument können Sie xsi-Polymorphie verwenden. Dieses Feature ersetzt den Standardtyp des Elements durch einen Subtyp.

Beispiel für die Zuordnung von xsi:type in einem XML-Dokument

Das folgende Beispiel veranschaulicht, wie xsi-Polymorphie verwendet wird. In dem Beispiel werden ein Schema und ein Auszug aus einem XML-Dokument verwendet.

Im Folgenden sehen Sie das Schema:

<element name="person" type="person"/>
  <complexType name=" person " >
    <sequence>
      <element name="name">
      <element name="surname">
    </sequence>
  </complexType>
  <complexType name=" inhabitant ">
    <complexContent>
     <extension base="person">
      <sequence>
        <element name="address"/>
      </sequence>
     </extension>
  </complexType>

Im Folgenden sehen Sie einen Auszug aus einem XML-Dokument:

<person xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:type="inhabitant">
  <name>John</name>
  <surname>Smith</surname>
  <address>123 Downing Street, London</address>
</person>

xsi:schemaLocation und xsi:noNamespaceSchemaLocation

Diese Funktionen werden vom Parser unterstützt. Die generierten Informationen werden nicht in der XML-Bindung verwendet.