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.
<!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.
<!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.
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:
<purchaseOrder xmlns="http://www.ibm.com" xsi:schemaLocation="http://www.ibm.com C:\myschemas\PurchaseOrder.xsd"> <shipTo country="US"> ...
<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.
<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.
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.
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 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.