Cuando se importa un esquema XML a un conjunto de mensajes que soporta espacios de nombres, se acepta la construcción Redefinir (redefine), pero hace que se visualice un mensaje de error en la lista de tareas ya que no está totalmente soportada.
A continuación se muestra un ejemplo de la construcción Redefinir (redefine):
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Característica no soportada: redefinir --> <redefine schemaLocation="test.xsd"/> </schema>
Cuando se importa un esquema XML a un conjunto de mensajes que soporta los espacios de nombres, las construcciones indicadas más abajo se aceptan, pero se ignoran y no se despliegan en el intermediario. Cuando el usuario intenta importar un esquema que contiene una o varias de estas construcciones, se emite un aviso que indica que se ignorarán. Podrá suprimir estas construcciones, pero no hay propiedades que se puedan configurar para las mismas.
Si extrae el modelo lógico para el mensaje (por ejemplo utilizando el recurso de generación de esquema), estas construcciones se ignoran y no se incluyen en el esquema de salida.
A continuación se proporciona una lista de estas declaraciones de esquema:
A continuación se muestra un ejemplo de cada una de estas construcciones:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Característica aceptada: exclusiva --> <element name="element1" type="string"> <unique name="unique1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </unique> </element> <!-- Característica aceptada: clave --> <element name="element2" type="string"> <key name="key1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </key> </element> <!-- Característica aceptada: referencia de clave --> <element name="element3" type="string"> <keyref name="keyref1" refer="ibm:key1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </keyref> </element> </schema>
El problema se produce cuando un esquema XML que tiene un espacio de nombres de destino incluye otro esquema XML que no tiene ningún espacio de nombres de destino. La Ubicación de esquema creada en el modelo de mensaje para la inclusión (include) sólo especifica el nombre de archivo. Esto no tiene en cuenta que los archivos de definición de mensajes de inclusión e incluidos están en directorios diferentes en el modelo de mensaje.
Puede arreglar el problema desde el entorno de trabajo seleccionando el separador Propiedades del archivo de definición de mensajes de inclusión en el Editor de definiciones de mensajes. Suprima la entrada include que tiene la ubicación de esquema incorrecta y, a continuación, añada otra entrada include, seleccionando el archivo correcto en el menú Archivo.
El usuario tiene la opción de aceptar, rechazar o modificar estas construcciones basándose en las preferencias establecidas por el usuario en la página de preferencias del Importador de esquema XML (o el archivo de opciones de importación mqsicreatemsgdefs).
Si el usuario especifica "rechazar" en el momento de la construcción, la importación se detiene y se informa del error.
Si el usuario especifica "modificar" (opción predeterminada) en el momento de la construcción, el importador modifica archivo de la definición del mensaje resultante como se indica a continuación:
Tenga en cuenta que, por motivos de compatibilidad, estas modificaciones son las modificaciones equivalentes que realizaba el mandato de importador de esquema XML de la Versión 2.1.
Si el usuario especifica "aceptar" en el momento de la construcción, el importador importa la construcción tal cual. Esto puede dar como resultados errores de lista de tareas dependiendo de la construcción, como se ha descrito anteriormente para conjuntos de mensajes con soporte de espacios de nombres.
A continuación se muestra un ejemplo de cada una de estas construcciones:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Característica soportada: redefinir --> <redefine schemaLocation="test.xsd"/> <!-- Característica soportada: importar --> <import schemaLocation="test1.xsd" namespace="http://www.ibm1.com"/> <!-- Característica soportada: listar --> <simpleType name="type1"> <list itemType="string" /> </simpleType> <!-- Característica soportada: unión --> <simpleType name="type2"> <union memberTypes="string" /> </simpleType> <!-- Característica soportada: tipo complejo abstracto --> <complexType name="type3" abstract="true"></complexType> <!-- Característica soportada: elemento abstracto --> <element name="element" type="string" abstract="true"></element> </schema>
La lista de construcciones y la acción tomada es la misma que para un conjunto de mensajes con soporte de espacio de nombres, como se ha descrito anteriormente.
Cuando se importa un esquema XML a un conjunto de mensajes que no soporta espacios de nombres, no se puede importar un documento de esquema que tenga un espacio de nombres de destino que no esté calificado con un prefijo. Por ejemplo:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns="http://www.ibm.com"> </xsd:schema>