Generación de esquema XML

Este tema trata del comportamiento de la generación del esquema XML. Por ejemplo, podría utilizar el esquema generado a partir de un archivo de definición de mensajes para validar posteriormente los documentos de instancias XML escritos por WebSphere Business Integration Message Broker.

Generación flexible

La generación flexible afecta a la complejidad de la devolución de los tipos que establecen Validación de contenido en Open o OpenDefined o establecen Composición en UnorderedSet en el esquema generado. Observe que este esquema de validación permitirá una gama más amplia de mensajes que la validación del analizador MRM.

La validación de contenido se establece en Open o Open Defined
Aquí un tipo complejo (global o anónimo) ha sustituido su contenido por un elemento único de tipo anyType. El siguiente patrón de validación se utiliza para tipos complejos con la Validación de contenido establecida en Open:
<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax" 
			minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
</element>

En el caso de que Validación de contenido esté establecida en OpenDefined, se utiliza el patrón siguiente. (Los espacios de nombres listados son los definidos en el conjunto de mensajes que contiene.)

<element name="xmlNameOfMessage">
	<complexType>
		<sequence>
			<any processContent="lax" 
  			minOccurs="0" maxOccurs="unbounded"
 				namespace="http://www.ns1 http://www.ns2" />
		</sequence>
	</complexType>
</element>
La composición se ha establecido en UnorderedSet
En el caso de que Composición esté establecida en UnorderedSet, para imitar el aspecto no ordenado, se inserta una elección con la cardinalidad adecuada. Esto se muestra a continuación.
<element name="xmlNameOfMessage">
	<complexType>
		<sequence maxOccurs="unbounded" 
		 minOccurs= "(minOccurs of original sequence) * 
          (items in original sequence)">
			<choice>
			      .. sequence contents ..
			</choice>
		</sequence>
	</complexType>
</element>

Generación rigurosa

La generación rigurosa afecta a la complejidad de la devolución de los tipos que establecen Validación de contenido en Open o OpenDefined o establecen Composición en UnorderedSet en el esquema generado. Observe que este esquema de validación permitirá una gama más pequeña de mensajes que la validación del analizador MRM.

Strict (estricto) es la opción de generación por omisión y genera un esquema que coincide con el esquema que se encuentra en el archivo de definición de mensajes, sin las extensiones de modelos.

La validación de contenido se ha establecido en Open/OpenDefined
Un tipo complejo (global o anónimo) perderá la posibilidad de contener elementos autodefinidos y se cierra.
La composición se ha establecido en UnorderedSet
Un tipo complejo (global o anónimo) perderá la posibilidad de contener elementos autodefinidos y se convierte en una secuencia.

Devolución de xsd:elements

Si se especifica un formato físico XML al generar el esquema, la personalización del formato físico se aplica al modelo lógico. Estas propiedades controlan la devolución real de un elemento en el modelo cuando aparece en un mensaje para un formato físico XML. Consulte la sección Opciones de devolución de mensajes XML si desea ver las diferentes opciones de devolución disponibles. A continuación, se muestra un ejemplo de la generación de las diferentes opciones de devolución disponibles para elemento locales; observe que estos ejemplos no modifican el espacio de nombre de las propiedades Nombre de atributo de ID o Nombre de atributo de valor y presuponen que todos los elementos especificados en complexType1 son de string de tipo incorporado de esquema.

    <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>

Devolución de xsd:attributes

La devolución de xsd:Attributes no está soportada. El usuario sólo puede cambiar el nombre del atributo.

Tipos simples y elementos compuestos intercalados

Se modelan en el archivo de definición de mensajes como elementos con minOccurs y maxOccurs establecidos en 0 y tienen uno de los tipos ComIbmMrm_xxx predefinidos. Durante la generación del esquema, el tipo de estos elementos cambia por el tipo base del tipo ComIbmMrm_xxx respectivo.

Si hay tipos simples globales que heredan de uno de estos tipos ComIbmMrm_xxx, éstos cambian para heredar del tipo base del tipo ComIbmMrm_xxx correspondiente.

Los archivos de esquema generados no tendrán apariciones de estos tipos ComIbmMrm_xxx.

Por ejemplo, el elemento global con el tipo definido siguiente:

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

producirá el archivo de esquema generado y un elemento global con el tipo base xsd correspondiente tal como se define a continuación:

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

Conceptos relacionados
Diseño de mensajes
El modelo de mensaje

Tareas relacionadas
Desarrollo de modelos de mensajes
Trabajar con un archivo de definición de mensajes
Trabajo con los objetos del modelo de mensajes

Referencia relacionada
Información de referencia del modelo de mensaje
Propiedades del objeto del modelo de mensaje