Existe un número de características del esquema XML que no están soportadas o que tienen un soporte de algún modo limitado.
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.
El siguiente XML es 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.
Estas declaraciones del esquema se listan a continuación:
El siguiente XML muestra un ejemplo de cada una de esta 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. Esta especificación 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.
Puede aceptar, rechazar o modificar estas construcciones basándose en las preferencias establecidas en la página de preferencias del Importador de esquema XML (o el archivo de opciones de importación mqsicreatemsgdefs).
Si especifica "rechazar" en el momento de la construcción, la importación se detiene y se informa del error.
Si especifica "modificar" (opción predeterminada) en el momento de la construcción, el importador modifica el archivo de la definición del mensaje resultante como se indica a continuación:
Estas modificaciones son las modificaciones equivalentes que realizaba el mandato de importador de esquema XML de la Versión 2.1.
Si 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.
El siguiente XML muestra un ejemplo de cada una de esta 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: redefine --> <redefine schemaLocation="test.xsd"/> <!-- Característica soportada: import --> <import schemaLocation="test1.xsd" namespace="http://www.ibm1.com"/> <!-- Característica soportada: list --> <simpleType name="type1"> <list itemType="string" /> </simpleType> <!-- Característica soportada: union --> <simpleType name="type2"> <union memberTypes="string" /> </simpleType> <!-- Característica soportada: abstract complex type --> <complexType name="type3" abstract="true"></complexType> <!-- Característica soportada: abstract element --> <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>