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.
<!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.
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.
<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"> ....
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.
<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.
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.
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 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).