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.
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.
<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>
<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>
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.
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>
Die Wiedergabe von xsd:attribute-Elementen wird nicht unterstützt. Der Benutzer kann nur den Namen des Attributs ändern.
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"/>