Asociaciones de archivos XML con DTD y esquemas XML

Cuando un archivo XML se asocia con una DTD o esquema XML, está enlazado mediante cualquier norma estructural contenida en la DTD o esquema XML. Para que sea considerado un archivo XML válido, un documento debe estar acompañado por una DTD (o un esquema XML) y debe ajustarse a todas las declaraciones de la DTD o del esquema XML.

Hay dos modos diferentes de asociar archivos XML con DTD o esquemas XML.

  1. Asociación directa - El archivo XML contiene el nombre de una DTD en su declaración doctype (por ejemplo, <!DOCTYPE root-element SYSTEM "dtdfile.dtd" >, donde dtdfile.dtd es el nombre del archivo DTD) o contiene la vía de acceso de un esquema XML en el atributo schemaLocation del elemento root del archivo XML (por ejemplo, <xsi:schemaLocation="http://www.ibm.com/schema.xsd">, donde schema.xsd es el nombre del esquema XML.
  2. Entrada del catálogo XML - Puede registrar archivos del esquema XML y DTD en el catálogo XML y asociarlos a una clave que les represente. A continuación, puede hacer referencia a una clave del archivo del esquema XML o DTD desde un archivo XML en lugar de hacer referencia directamente en el archivo del esquema XML o DTD. Una entrada del catálogo XML contiene dos partes, la clave (que representa la DTD o el archivo del esquema XML) y un URI (que contiene información acerca de la ubicación de la DTD o del esquema XML).

Cómo funciona una asociación

Asociando un archivo XML con una DTD
Si un archivo XML está asociado con una DTD, se incluye un código DOCTYPE como el siguiente en el archivo XML:
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">

InvoiceId es identificador público del archivo DTD. Se utiliza para asociar el archivo XML a un archivo DTD (en este caso, el archivo DTD es Invoice.dtd). Si el identificador público InvoiceId se corresponde con la clave, de la entrada del catálogo XML para Invoice.dtd, entonces el URI de la entrada del catálogo XML (que contiene información acerca de la ubicación de Invoice.dtd) se utiliza para localizar la DTD. De lo contrario, se utiliza el identificador del sistema DOCTYPE ("C:\mydtds\Invoice.dtd"), que hace referencia directamente a la ubicación del sistema de archivos de la DTD para localizar la DTD.

Nota: también puede utilizar un identificador del sistema como clave en una entrada de catálogo XML. Si utiliza un identificador del sistema como una clave, se incluirá un código DOCTYPE como el siguiente en un archivo XML:
<!DOCTYPE Root-name SYSTEM "MyDTD.dtd"> 

donde MiDTD.dtd es el identificador del sistema que se corresponde con la clave de una entrada de catálogo XML.

Asociación de un archivo XML con un esquema XML

Si se asocia un archivo XML con un esquema XML, se incluyen uno o más atributos de ubicación de esquema en el archivo XML. La información de schemaLocation se proporciona como una sugerencia para el procesador XML. Los ejemplos siguientes muestran los atributos schemaLocation:

Ejemplo 1
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com C:\myschemas\PurchaseOrder.xsd">
<shipTo country="US">
...
Ejemplo 2
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com PO.xsd">
<shipTo country="US">
....

En el ejemplo 1, la sugerencia schemaLocation ('C:\myschemas\PurchaseOrder.xsd') hace referencia directamente a la ubicación del sistema de archivos o al URI del esquema XML. En este caso, el procesador XML localizará directamente el archivo del esquema.

En el ejemplo 2, la sugerencia schemaLocation ('PO.xsd') hace referencia a una entrada de catálogo XML. PO.xsd se corresponde con la clave, Key, de la entrada de catálogo XML para PurchaseOrder.xsd y el URI de la entrada del catálogo XML que contiene información acerca de la ubicación de PurchaseOrder.xsd se utilizará para localizar el esquema XML.

En ambos ejemplo, http://www.ibm.com en el código xsi:schemaLocation es un URI que identifica el espacio de nombres del esquema XML.

También puede utilizar un espacio de nombres como una clave para una entrada de catálogo XML. Si utiliza un espacio de nombres como una clave, se incluye un código schemaLocation como el siguiente en un archivo XML:
<purchaseOrder xmlns:="www.ibm.com"
xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

El atributo schemaLocation apunta a la clave y a la ubicación real del esquema.

DTD o el esquema XML residen en un servidor remoto

Varias funciones del editor XML como, por ejemplo, la validación y la ayuda de contenido, requieren que haya disponible una DTD o un esquema XML. La documentación del producto proporciona información de uso para los casos en los que la DTD o el esquema XML residen en la máquina local. No obstante, en muchos casos, la DTD o el esquema XML pueden residir en un servidor remoto, por ejemplo:

<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">

Normalmente, este caso no supone ningún problema, porque la DTD o el esquema XML se pueden recuperar desde el servidor remoto. No obstante, si está detrás de un cortafuegos y no tiene un sistema habilitado para SOCKS, el área de trabajo no proporciona actualmente un modo para que especifique un servidor socks con el que recuperar una DTD o esquema XML. Si no puede habilitar el sistema para SOCKS, la solución alternativa para este problema es recuperar una copia de la DTD o esquema XML (utilizando un navegador Web, por ejemplo) y guardar esta copia en la máquina local. A continuación, puede colocar una copia local en el mismo proyecto que el archivo XML o utilizar el catálogo XML para asociar un identificador público con la ubicación (local) de la DTD.

Nota: si tiene un archivo XML asociado con un esquema XML o DTD en otro lugar de la red y está trabajando en una máquina desconectada de dicha red, puede seguir los pasos anteriores si desea utilizar la asistencia de contenido o validar el archivo XML.

Ventajas de las asociaciones de la entrada de catálogo XML

Si crea una asociación directa entre un archivo XML o un esquema XML o archivo DTD, siempre que cambie la ubicación del esquema o DTD tendrá que localizar y actualizar todos los archivos XML que hagan referencia a la misma con la nueva ubicación del esquema o DTD. No obstante, si asocia un archivo XML con un esquema XML o clave DTD, entonces, cuando cambia la ubicación del esquema o DTD, sólo tendrá que actualizar la entrada del catálogo XML, en lugar de cada archivo XML individual.

Por ejemplo, tiene una DTD denominada Building.dtd, asociada a cinco archivos XML, Office.xml, House.xml, Apartment.xml, Bank.xml y PostOffice.xml. Traslada el archivo DTD Building.dtd a una nueva ubicación. Si tiene una asociación de dirección entre Building.dtd y todos los archivos XML, tendrá que actualizar la declaración <DOCTTYPE> en cada archivo XML para que refleje la nueva ubicación de Building.dtd. Si, no obstante, tiene una asociación de catálogo XML y todos los archivos XML hacen referencia simplemente a la clave de Building.dtd, entonces sólo tiene que actualizar el URI y todos los archivos XML apuntarán a la nueva ubicación de Building.dtd.

Actualización de una entrada en el catálogo XML

Una vez actualizada una entrada en el catálogo XML, es posible que tenga que renovar la vista del editor XML de modo que utilice la nueva información. Para hacerlo, pulse el botón de la barra de herramientas Recargar dependencias Este gráfico es el botón de la barra de herramientas Recargar dependencias y la vista será actualizada utilizando los valores del catálogo XML actuales. Sólo tiene que renovar la vista del editor XML cuando tiene un archivo XML abierto que hace referencia a la entrada del catálogo XML que se ha actualizado.

Para obtener más información, consulte las tareas relacionadas.

Conceptos relacionados
Editor XML
Tareas relacionadas
Edición con DTD o restricciones de esquema XML
Editar declaraciones DOCTYPE
Adición de entradas al catálogo XML
Actualizar archivos XML con cambios hechos en DTD y esquemas
Editar de información de espacio de nombres
Edición de instrucciones de procesado XML
Editar en la vista Diseño
Editar en la vista Fuente