XML-Schema generieren

Dieser Abschnitt beschreibt das Verhalten bei der Generierung eines XML-Schemas. Sie können beispielsweise das aus einer Nachrichtendefinitionsdatei generierte Schema verwenden, um von WebSphere Message Broker geschriebene XML-Instanzdokumente zu überprüfen.

Laxe Generierung

Die laxe Generierung wirkt sich darauf aus, wie komplexe Typen, für die Inhaltsauswertung auf Offen oder Offen/Definiert oder für die Zusammensetzung auf ElementeInBeliebigerReihenfolge gesetzt ist, im generierten Schema wiedergegeben werden. Beachten Sie, dass ein solches Prüfungsschema ein größeres Spektrum an Nachrichten zulässt als die Prüfung durch den MRM-Parser.

Inhaltsauswertung ist auf 'Offen' oder 'Offen/Definiert' gesetzt
In diesem Fall wird der Inhalt eines komplexen Typs (global oder anonym) durch ein einzelnes Element des Typs anyType ersetzt. Das folgende Generierungsmuster wird für komplexe Typen, für die Inhaltsauswertung auf Offen gesetzt ist, verwendet:
<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax" 
			minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
</element>

Wenn Inhaltsauswertung auf Offen/Definiert gesetzt ist, wird folgendes Muster verwendet. (Die aufgelisteten Namespaces sind alle in der enthaltenen Nachrichtengruppe definiert.)

<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax" 
  			minOccurs="0" maxOccurs="unbounded"
 				namespace="http://www.ns1 http://www.ns2" />
		</sequence>
	</complexType>
</element>
Zusammensetzung ist auf 'ElementeInBeliebigerReihenfolge' gesetzt
Wenn Zusammensetzung auf ElementeInBeliebigerReihenfolge gesetzt ist, wird eine Auswahl mit einer geeigneten Rangfolge eingefügt, um den Aspekt der beliebigen Reihenfolge abzubilden. Dies wird im folgenden Beispiel gezeigt.
<element name="xmlNameOfMessage">
	<complexType>
		<sequence maxOccurs="unbounded" 
		 minOccurs= "(minOccurs der ursprünglichen Folge) *
          (Elemente in ursprünglicher Reihenfolge)">
			<choice>
			      .. Inhalt der Folge ..
			</choice>
		</sequence>
	</complexType>
</element>

Strikte Generierung

Die strikte Generierung wirkt sich darauf aus, wie komplexe Typen, für die Inhaltsauswertung auf Offen oder Offen/Definiert oder für die Zusammensetzung auf ElementeInBeliebigerReihenfolge gesetzt ist, im generierten Schema wiedergegeben werden. Beachten Sie, dass ein solches Prüfungsschema ein kleineres Spektrum an Nachrichten zulässt als die Prüfung durch den MRM-Parser.

Standardmäßig ist die strikte Generierung ausgewählt, d. h., es wird ein Schema generiert, das dem in der Nachrichtendefinitionsdatei enthaltenen Schema ohne die Modellerweiterungen entspricht.

Inhaltsauswertung ist auf 'Offen' oder 'Offen/Definiert' gesetzt
Ein komplexer Typ (global oder anonym) verliert die Fähigkeit, selbstdefinierende Elemente zu enthalten, und wird zu einem geschlossenen Typ.
Zusammensetzung ist auf 'ElementeInBeliebigerReihenfolge' gesetzt
Ein komplexer Typ (global oder anonym) verliert die Fähigkeit, Elemente in beliebiger Reihenfolge zu enthalten, und wird zu einer Reihenfolge.

Wiedergabe von 'xsd:element'-Elementen

Wenn bei der Generierung des Schemas ein physisches XML-Format angegeben wird, wird auf das logische Modell die Anpassung an das physische Format angewendet. Über diese Eigenschaften wird gesteuert, wie ein Element im Modell tatsächlich wiedergegeben wird, wenn es in einer Nachricht für ein physisches XML-Format erscheint. Unter XML-Wiedergabeoptionen finden Sie eine Beschreibung der verschiedenen verfügbaren Wiedergabeoptionen. Es folgt ein Beispiel für ein generiertes Schema, das zeigt, was für die verschiedenen Wiedergabeoptionen, die für lokale Elemente verfügbar sind, generiert wird. Beachten Sie, dass in diesen Beispielen der Namespace der Eigenschaften 'ID-Attributname' oder 'Wert für Attributname' nicht geändert wird und davon ausgegangen wird, dass alle in 'KomplexerTyp1' angegebenen Elemente den schemaintegrierten Typ 'string' haben.

    <xsd:complexType
name="KomplexerTyp1">
        <xsd:sequence>
        <!-- Wiedergabe lokales Element = 'XMLElement' -->
            <xsd:element name="LokalesElement1" type="xsd:string"/>
        	<!-- Wiedergabe lokales Element = 'XMLElementAttrID'
                                         ID Attribute Name = 'id' -->
            <xsd:element name="LokalesElement2">
                <xsd:complexType>
                    <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                            <xsd:attribute name="id" type="xsd:string"/>
                        </xsd:extension>
                    </xsd:simpleContent>
                </xsd:complexType>
            </xsd:element>
        	<!-- Wiedergabe lokales Element = 'XMLElementAttrVal'
                                        Val Attribute Name = 'val' -->
            <xsd:element name="LokalesElement3">
                <xsd:complexType>
                    <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                            <xsd:attribute name="wert" type="xsd:string"/>
                        </xsd:extension>
                    </xsd:simpleContent>
                </xsd:complexType>
            </xsd:element>
        	<!-- Wiedergabe lokales Element = 'XMLElementAttrIDVal'
        ID Attribute Name = 'id' Val Attribute Name = 'val' -->
            <xsd:element name="LokalesElement4">
                <xsd:complexType>
                    <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                            <xsd:attribute name="wert" type="xsd:string"/>
                            <xsd:attribute name="id" type="xsd:string"/>
                        </xsd:extension>
                    </xsd:simpleContent>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
        <!-- Wiedergabe lokales Element = 'XMLAttribute' -->
        <xsd:attribute name="LokalesElement5" type="xsd:string"/>
    </xsd:complexType>

Wiedergabe von 'xsd:attribute'-Elementen

Die Wiedergabe von xsd:attribute-Elementen wird nicht unterstützt. Der Benutzer kann nur den Namen des Attributs ändern.

Eingebettete einfache Typen und Verbundelemente

Diese Typen und Elemente werden in der Nachrichtendefinitionsdatei als Elemente modelliert, für die sowohl minOccurs als auch maxOccurs auf 0 gesetzt sind und die einen der vordefinierten ComIbmMrm_xxx-Typen haben. Während der Schemagenerierung wird der Typ dieser Elemente in den Basistyp des jeweiligen ComIbmMrm_xxx-Typs geändert.

Wenn globale einfache Typen vorhanden sind, die von einem dieser ComIbmMrm_xxx-Typen übernommen werden, werden sie dahingehend geändert, dass sie vom Basistyp des entsprechenden ComIbmMrm_xxx-Typs übernommen werden.

Generierte Schemadateien enthalten keinen dieser ComIbmMrm_xxx-Typen.

Ein globales Element kann beispielsweise wie folgt mit einem Typ definiert sein:

<element
name="GlobalesElement1" type="ns1:ComIbmMrm_BaseValueBinary"/>

Das Ergebnis in der generierten Schemadatei ist ein globales Element, das mit dem entsprechenden xsd-Basistyp definiert ist:

<element
name="GlobalesElement1" type="hexBinary"/>
Zugehörige Konzepte
Nachrichten modellieren
Das Nachrichtenmodell
XML Wire Format: Beziehung zum logischen Modell
Zugehörige Tasks
Nachrichtenmodelle entwickeln
Mit Nachrichtendefinitionsdateien arbeiten
Mit Nachrichtenmodellobjekten arbeiten
Zugehörige Verweise
Nachrichtenmodellverweisinformationen
Eigenschaften von Nachrichtenmodellobjekten
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ad15780_