Associações de Arquivos XML a DTDs e a Esquemas XML

Quando um arquivo XML é associado a uma DTD ou esquema XML, ele é limitado por regras estruturais contidas na DTD ou no esquema XML. Para ser considerado um arquivo XML válido, um documento deve ser acompanhado por uma DTD ou um esquema XML e estar de acordo com todas as declarações na DTD ou no esquema XML.

Existem duas maneiras diferentes de associar arquivos XML a DTDs ou a esquemas XML.

  1. Associação Direta - O arquivo XML contém o nome de uma DTD em sua declaração doctype (por exemplo, <!DOCTYPE root-element SYSTEM " dtdfile.dtd" >, em que dtdfile.dtd é o nome do arquivo DTD) ou contém o caminho de um esquema XML no atributo schemaLocation do elemento raiz do arquivo XML (por exemplo, <xsi:schemaLocation="http://www.ibm.com schema.xsd">, em que schema.xsd é o nome do esquema XML.
  2. Entrada do Catálogo XML - É possível registrar DTDs e arquivos esquema XML no Catálogo XML e associá-los a uma Chave que os representa. É possível referir-se a uma Chave de DTD ou de arquivo esquema XML a partir de um arquivo XML em vez de referir-se diretamente à DTD ou ao arquivo esquema XML. Uma entrada do Catálogo XML contém duas partes - a Chave (que representa a DTD ou o esquema XML) e um URI (que contém informações sobre o local da DTD ou do esquema XML).

Como Funciona uma Associação

Associando um Arquivo XML a uma DTD
Se um arquivo XML estiver associado a uma DTD, uma tag DOCTYPE, como a seguinte, será incluída no arquivo XML:
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">

InvoiceId é o identificador público do arquivo DTD. Ele é utilizado para associar o arquivo XML a um arquivo DTD (neste caso, o arquivo DTD é Invoice.dtd). Se o identificador público InvoiceId corresponder à Chave da entrada do Catálogo XML para Invoice.dtd, o URI da entrada do Catálogo XML (que contém informações sobre o local de Invoice.dtd) será utilizado para localizar a DTD. Caso contrário, o identificador do sistema de DOCTYPE ("C:\mydtds\Invoice.dtd"), que se refere diretamente ao local do sistema de arquivos da DTD, será utilizado para localizar a DTD.

Nota: Também é possível utilizar um identificador do sistema como uma Chave em uma entrada do Catálogo XML. Se você utilizar um identificador do sistema como uma Chave, uma tag DOCTYPE, como a seguinte, será incluída em um arquivo XML:

<!DOCTYPE Root-name SYSTEM "MyDTD.dtd"> 

em que MyDTD.dtd é o identificador do sistema que corresponde à Chave de uma entrada do Catálogo XML.

Associando um Arquivo XML a um Esquema XML

Se um arquivo XML estiver associado a um esquema XML, um ou mais atributos de local do esquema serão incluídos no arquivo XML. As informações no schemaLocation são fornecidas como uma "sugestão" para o processador XML. Os exemplos a seguir mostram atributos schemaLocation.

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

No Exemplo 1, a 'sugestão' de schemaLocation ('C:\myschemas\PurchaseOrder.xsd') refere-se diretamente ao local do sistema de arquivos ou URI do esquema XML. Neste caso, o arquivo esquema será localizado diretamente pelo processador XML.

No Exemplo 2, a 'sugestão' schemaLocation ('PO.xsd') refere-se a uma entrada do Catálogo XML. PO.xsd corresponde à Chave da entrada do Catálogo XML para PurchaseOrder.xsd, e o URI da entrada do Catálogo XML (que contém informações sobre o local de PurchaseOrder.xsd) será utilizado para localizar o esquema XML.

Nos dois exemplos, http://www.ibm.com na tag xsi:schemaLocation é um URI que identifica o espaço de nomes para o esquema XML.

Também é possível utilizar um espaço de nomes como uma Chave para uma entrada do Catálogo XML. Se você utilizar um espaço de nomes como uma Chave, uma tag schemaLocation, como a seguinte, será incluída em um arquivo XML:
<purchaseOrder xmlns:="www.ibm.com"
xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

O atributo schemaLocation aponta para a Chave e o local real do esquema.

A DTD ou Esquema XML Reside em um Servidor Remoto

Várias funções no editor XML, como validação e assistente de conteúdo, requerem a disponibilidade de uma DTD ou de um esquema XML. A documentação do produto fornece informações de uso para casos em que a DTD ou esquema XML reside em sua máquina local. No entanto, em muitos casos, a DTD ou esquema XML pode residir em um servidor remoto, por exemplo:

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

Normalmente, este caso não representa nenhum problema, porque a DTD ou esquema XML pode ser recuperado do servidor remoto. No entanto, se você estiver atrás de um firewall e não tiver um sistema compatível com SOCKS, o ambiente de trabalho não fornecerá nenhuma maneira de você especificar um servidor socks para recuperar uma DTD ou esquema XML. Se não puder tornar seu sistema compatível com SOCKS, a solução alternativa para este problema será recuperar uma cópia da DTD ou do esquema XML (utilizando um navegador da Web, por exemplo) e salvar essa cópia em sua máquina local. Em seguida, você pode colocar uma cópia local no mesmo projeto que seu arquivo XML ou utilizar o Catálogo XML para associar um identificador público ao local da DTD (local).

Nota: Se você tiver um arquivo XML associado a um esquema XML ou a uma DTD que esteja em outro lugar na rede e estiver trabalhando em uma máquina desconectada da rede, poderá seguir as etapas descritas anteriormente se desejar utilizar o assistente de conteúdo ou validar seu arquivo XML.

Vantagens de Associações de Entrada do Catálogo XML

Se você criar uma associação direta entre um arquivo XML e um esquema XML ou arquivo DTD, a qualquer momento que alterar o local do esquema ou DTD, será necessário capturar e atualizar todos os arquivos XML de referência com o novo local da DTD ou esquema. No entanto, se você associar um arquivo XML a um esquema XML ou Chave DTD, quando alterar o local do esquema ou DTD, será necessário atualizar apenas a entrada do Catálogo XML em vez de cada arquivo XML individual.

Por exemplo, você tem uma DTD chamada "Building.dtd", que está associada a cinco arquivos XML - Office.xml, House.xml, Apartment.xml, Bank.xml e PostOffice.xml. Você move o arquivo DTD Building.dtd para um novo local. Se tiver uma associação de direção entre Building.dtd e todos os arquivos XML, você terá que atualizar a declaração <DOCTTYPE> em cada arquivo XML para refletir o novo local de Building.dtd. No entanto, se você tiver uma associação do Catálogo XML e todos os arquivos XML se referirem apenas à Chave de Building.dtd, será necessário atualizar apenas o URI e todos os arquivos XML apontarão para o novo local de Building.dtd.

Atualizando uma Entrada no Catálogo XML

Depois de atualizar uma entrada no Catálogo XML, poderá ser necessário atualizar a visualização do editor XML para que ela utilize as novas informações. Para isso, clique no botão da barra de ferramentas Recarregar Dependências Este gráfico é o botão da barra de ferramentas Recarregar Dependências e a visualização será atualizada utilizando as configurações atuais do Catálogo XML. Será necessário atualizar a visualização do editor XML apenas quando você tiver um arquivo XML aberto que faça referência à entrada do Catálogo XML que foi atualizado.

Para obter informações adicionais, consulte as tarefas relacionadas.

(c) Direitos Autorais 2001, World Wide Web Consortium (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University).

Conceitos relacionados
Editor XML
Tarefas relacionadas
Editando com Restrições de DTD ou de Esquema XML
Editando Declarações DOCTYPE
Incluindo Entradas no Catálogo XML
Atualizando Arquivos XML com Alterações Feitas em DTDs e Esquemas
Editando Informações de Espaço de Nomes
Editando Instruções de Processamento XML
Editando na Visualização Design
Editando na Visualização Origem