Message Sets: XML Schema generation

The behavior of XML Schema generation. For example, use the schema generated from a message definition file to validate XML instance documents written by IBM® Integration Bus.

Lax generation

Lax generation affects how complex types that have Content Validation set to Open or OpenDefined or have Composition set to UnorderedSet are rendered in the generated schema. Note that such a validating schema will permit a wider range of messages than MRM parser validation.

Content Validation is set to Open or OpenDefined
Here a complex type (global or anonymous) has its content replaced by a single wildcard element that repeats an unbounded number of times. The following generation pattern is used for complex types with Content Validation set to Open:
<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax" 
			minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
</element>

Where Content Validation is set to OpenDefined, the following pattern is used. (The namespaces listed are all those defined in the containing message set.)

<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax" 
  			minOccurs="0" maxOccurs="unbounded"
 				namespace="http://www.ns1 http://www.ns2" />
		</sequence>
	</complexType>
</element>
Composition is set to UnorderedSet
Where Composition is set to UnorderedSet, to mimic the unordered aspect, a choice is inserted with appropriate cardinality. This is shown as follows:
<element name="xmlNameOfMessage">
	<complexType>
		<sequence maxOccurs="unbounded" 
		 minOccurs= "(minOccurs of original sequence) * 
          (items in original sequence)">
			<choice>
			      .. sequence contents ..
			</choice>
		</sequence>
	</complexType>
</element>

Strict generation

Strict generation affects how complex types that have Content Validation set to Open or OpenDefined or have Composition set to UnorderedSet are rendered in the generated schema. Note that such a validating schema will permit a narrower range of messages than MRM parser validation.

Strict is the default generation option and generates a schema that matches the schema held in the message definition file, without the model extensions.

Content Validation set to Open/OpenDefined
A complex type (global or anonymous) will lose the ability to contain self-defining elements and becomes closed.
Composition set to UnorderedSet
A complex type (global or anonymous) will lose the ability to be unordered and becomes a sequence.

Rendering of xsd:elements

If an XML physical format is specified when generating the schema, the wire format customization is applied to the logical model. These properties control how an element in the model is rendered when it appears in a message for an XML wire format. See Message Sets: XML rendering options for the different render options available. The following is a generated schema example showing what is generated for the different render options available for local elements; note these examples do not modify the Namespace of any ID Attribute Name or Value Attribute Name properties and assume that all elements specified in the complexType1 are of schema built-in type string.

    <xsd:complexType name="complexType1">
        <xsd:sequence>
        	<!-- Local element Render = 'XMLElement' -->
            <xsd:element name="localElement1" type="xsd:string"/>
        	<!-- Local element Render = 'XMLElementAttrID' 
                                         ID Attribute Name = 'id' -->
            <xsd:element name="localElement2">
                <xsd:complexType>
                    <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                            <xsd:attribute name="id" type="xsd:string"/>
                        </xsd:extension>
                    </xsd:simpleContent>
                </xsd:complexType>
            </xsd:element>
        	<!-- Local element Render = 'XMLElementAttrVal' 
                                        Val Attribute Name = 'val' -->
            <xsd:element name="localElement3">
                <xsd:complexType>
                    <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                            <xsd:attribute name="val" type="xsd:string"/>
                        </xsd:extension>
                    </xsd:simpleContent>
                </xsd:complexType>
            </xsd:element>
        	<!-- Local element Render = 'XMLElementAttrIDVal' 
        	     ID Attribute Name = 'id' Val Attribute Name = 'val' -->
            <xsd:element name="localElement4">
                <xsd:complexType>
                    <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                            <xsd:attribute name="val" type="xsd:string"/>
                            <xsd:attribute name="id" type="xsd:string"/>
                        </xsd:extension>
                    </xsd:simpleContent>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
        	<!-- Local element Render = 'XMLAttribute' -->
        <xsd:attribute name="localElement5" type="xsd:string"/>
    </xsd:complexType>

Rendering of xsd:attributes

The rendering of xsd:Attributes is not supported. The user can only change the name of the attribute.

Embedded simple types and Compound Elements

These are deprecated objects that are found only if the message set was created with WebSphere® MQ Integrator Broker Version 2.1.

They are modeled in the message definition file as elements with both minOccurs and maxOccurs set to 0 and have one of the predefined ComIbmMrm_xxx types. During the schema generation, the type of such elements is changed to the base type of the respective ComIbmMrm_xxx type.

If there are global simple types that inherit from one of these ComIbmMrm_xxx types, these are changed to inherit from the base type of the corresponding ComIbmMrm_xxx type.

Generated schema files will not have any occurrence of these ComIbmMrm_xxx types.

For example the global element with type defined as follows:

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

will result in the generated schema file and a global element with the corresponding xsd base type defined as follows:

<element name="globalElement1" type="hexBinary"/>