El prefijo "xsi" es el prefijo de espacio de nombres utilizado por convenio para el espacio de nombres del esquema XML para las instancias. Los documentos XML
pueden contener elementos que tengan un atributo xsi:type. Esto proporciona un tipo de datos explícito para el elemento.
El analizador MRM XML es sensible a los atributos xsi:type del documento XML.
Modifica el tipo de datos del elemento como corresponde y añade el atributo xsi:type
al árbol del mensaje.
El grabador MRM XML es sensible a los atributos xsi:type del árbol del mensaje.
En la salida devuelve atributos xsi:type según la propiedad del conjunto de mensajes del formato físico XML Política de salida
para atributos xsi:type. Por ejemplo, se pueden eliminar los atributos xsi:type o pueden ser
la salida de todos los elementos o la salida según normas especificadas en el estándar SOAP.
Si se ha habilitado la validación para un flujo de mensajes WebSphere Message Broker, la lógica
de validación es sensible a los atributos xsi:type y los utiliza para modificar la validación
del elemento. También validará los valores de los atributos
xsi:type utilizando las normas descritas en Esquema XML Parte 1: Estructuras en el sitio Web W3C (World Wide Web
Consortium).
Hay varios puntos immportantes que se han de recordar cuando se analizan y escriben documentos
XML que contiene atributos xsi:type.
- Para detectar y utilizar los atributos xsi:type, el conjunto de mensajes debe estar habilitado
para el espacio de nombres. Para que un conjunto de mensajes esté habilitado para el espacio de nombres,
consulte la propiedad del conjunto de mensajes Utilizar espacios de nombres.
- Si el valor del atributo xsi:type contiene un prefijo de espacio de nombres, el analizador MRM XML ampliará el prefijo
en un URI totalmente calificado.
Si posteriormente el grabador MRM XML devuelve como salida el atributo xsi:type, no se utilizará automáticamente el mismo prefijo para el valor. Puede controlar los
prefijos que se utilizan en la salida utilizando la lista de Valores del espacio de nombres
en las propiedades del conjunto de mensajes del formato físico XML. Si no se proporciona un prefijo, el grabador
XML asignará un prefijo por omisión.
- Si el atributo xsi:type de un elemento no se resuelve en un tipo del modelo, entonces el
comportamiento depende de si se ha habilitado la validación MRM.
Si no se lleva a cabo la validación, MRM presupone que el tipo del elemento es el declarado en el modelo y continúa. Si se lleva a cabo la validación, se generará una excepción de validación.
- Si se habilita la validación MRM, cualquier atributo xsi:type necesario debe estar presente
en el árbol del mensaje en el punto en que se lleva a cabo la validación. Se necesita un atributo
xsi:type cuando su valor es diferente del tipo de datos del elemento como se define en el modelo
de mensaje (esto comúnmente sucede cuando se utiliza la derivación del tipo de esquema XML).
- Si se lleva a cabo la validación en un mensaje de entrada, entonces el analizador MRM XML
se asegura de que los atributos xsi:type aparezcan en el árbol del mensaje, como se ha descrito anteriormente.
- Si se lleva a cabo la validación en un mensaje de salida debe asegurarse de que los atributos
xsi:type correctos aparezcan en el árbol del mensaje. Debe asegurarse de que sólo los
atributos xsi:type necesarios se copian del árbol del mensaje de entrada al árbol de mensaje de salida o se han creado explícitamente en el árbol del mensaje de salida.
- Si está utilizando tipos simples que sean xsd:unions, entonces se puede utilizar un atributo
xsi:type para dirigir el analizador MRM XML cuando se resuelve la unión.
- Si está utilizando WebSphere
Message Broker Versión
6.0 y ha migrado de una versión
anterior que no era sensible a los atributos xsi:type attributes, es posible que observe
algunos cambios de comportamiento. Por ejemplo, en WebSphere
Message Broker Versión
6.0,
los atributos xsi:type ya no se tratan como atributos autodefinidos, por
lo que aparecen en el árbol del mensaje con el nombre ‘type’ en lugar
de ‘@type’.
Si la lógica del flujo de mensajes es sensible a los atributos
xsi:type en el árbol del mensaje, cambie el flujo de mensajes para
satisfacer el nuevo comportamiento. Si desea retener la lógica de una versión anterior de WebSphere Message Broker en
los flujos de mensajes, consulte Notas sobre la migración de flujos de mensajes.
Para obtener más información acerca de los atributos xsi:type, consulte el documento XML Schema Part
0: Primer en el sitio Web del World Wide Web Consortium (W3C).