Associações de ficheiros XML com DTDs e esquemas XML

Quando um ficheiro XML é associado a uma DTD ou esquema XML, está sujeito a quaisquer regras estruturais contidas na DTD ou esquema XML. Para ser considerado um ficheiro XML válido, um documento tem de ser acompanhado por uma DTD ou esquema XML e estar em conformidade com todas as declarações na DTD ou esquema XML.

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

  1. Associação directa - O ficheiro XML contém o nome de uma DTD na declaração doctype (por exemplo, <!DOCTYPE root-element SYSTEM " dtdfile.dtd" >, em que dtdfile.dtd corresponde ao nome do ficheiro DTD) ou o caminho de um esquema XML no atributo schemaLocation do elemento raiz do ficheiro XML (por exemplo, <xsi:schemaLocation="http://www.ibm.com schema.xsd">, em que schema.xsd corresponde ao nome do esquema XML.
  2. Entrada do catálogo - É possível registar ficheiros DTD e ficheiros de esquema XML no Catálogo XML e associá-los a uma Chave que os represente. Em seguida, poderá consultar uma Chave de um ficheiro DTD ou de esquema XML, em vez de consultar directamente o ficheiro de DTD ou de esquema XML. Uma entrada do Catálogo XML contém duas partes - a Chave (que representa uma DTD ou um esquema XML) e um URI (que contém informações sobre a DTD ou sobre a localização de um esquema XML).

Modo de funcionamento de uma associação

Associar um ficheiro XML a uma DTD
Se um ficheiro XML for associado a uma DTD, é incluído no ficheiro XML um identificador DOCTYPE como o que se descreve em seguida:
<!DOCTYPE root-name PUBLIC "InvoiceId"
"C:\mydtds\Invoice.dtd">

InvoiceId corresponde ao identificador público do ficheiro DTD. É utilizado para associar o ficheiro XML a um ficheiro DTD (neste caso, o ficheiro DTD é Invoice.dtd). Se o identificador público InvoiceId corresponder à Chave da entrada do Catálogo XML para Invoice.dtd, é utilizado o URI da entrada do Catálogo XML (que contém informações acerca da localização de Invoice.dtd) para localizar a DTD. Caso contrário, o identificador do sistema DOCTYPE ("C:\mydtds\Invoice.dtd"), que se refere directamente à localização do sistema de ficheiros da DTD, é utilizado para localizar a DTD.

Nota: É possível utilizar um identificador de sistema como Chave numa entrada do Catálogo XML. Se utilizar um identificador de sistema como, por exemplo, uma Chave, é incluído um identificador DOCTYPE como o seguinte num ficheiro XML:

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

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

Associar um ficheiro XML a um esquema XML

Se um ficheiro XML estiver associado a um esquema XML, são incluídos no ficheiro XML um ou mais atributos de localização de esquema. As informações contidas em schemaLocation são facultadas como "sugestão" para o processador de XML. Os exemplos seguintes apresentam 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' schemaLocation ('C:\myschemas\PurchaseOrder.xsd') refere-se directamente à localização do sistema de ficheiros ou URI do esquema XML. Neste caso, o ficheiro de esquema será localizado directamente pelo processador de 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 a localização de PurchaseOrder.xsd) será utilizado para localizar o esquema XML.

Em ambos os exemplos, http://www.ibm.com no identificador xsi:schemaLocation corresponde a um URI que identifica o espaço de nomes do esquema XML.

É igualmente possível utilizar um espaço de nomes como Chave para uma entrada do Catálogo XML. Se utilizar um espaço de nomes como Chave, é incluído um identificador schemaLocation como o que se segue num ficheiro XML:
<purchaseOrder xmlns:="www.ibm.com"
xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

O atributo schemaLocation indica tanto a Chave como a localização efectiva do esquema.

A DTD ou esquema XML residem num servidor remoto

Muitas das funções do editor XML, tais como a validação e a assistência de conteúdo, requerem a disponibilidade de uma DTD ou de um esquema XML. A documentação do produto faculta informações de utilização para casos em que a DTD ou esquema XML residam na máquina local. Contudo, em muitos casos, a DTD ou o esquema XML podem residir num servidor remoto, por exemplo:

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

Geralmente, este caso não apresenta problemas, uma vez que a DTD ou esquema XML podem ser obtidos a partir do servidor remoto. Contudo, se estiver protegido por uma firewall e não tiver um sistema com um serviço activado para SOCKS, a área de trabalho actualmente não faculta uma maneira de especificar um servidor socks para obter uma DTD ou um esquema XML. Caso não seja possível ter um serviço activado para SOCKS no sistema, a solução alternativa para este problema consiste em obter uma cópia da DTD ou esquema XML (utilizando um browser da Web, por exemplo) e guardar essa cópia na máquina local. Em seguida, pode colocar uma cópia local no mesmo projecto como o seu ficheiro XML ou utilizar o Catálogo XML para associar um identificador público com a localização da DTD (local).

Nota: Se um ficheiro XML estiver associado a um esquema XML ou a uma DTD que esteja noutra localização da rede e o utilizador estiver a trabalhar numa máquina que não esteja ligada à rede, poderá executar os passos descritos anteriormente, caso pretenda utilizar a assistência de conteúdos ou validar o ficheiro XML.

Vantagens das associações de entradas do Catálogo XML

Se criar uma associação directa entre um ficheiro XML e um esquema XML ou ficheiro de DTD, sempre que alterar a localização do esquema ou da DTD terá de localizar e actualizar todos os ficheiros XML referenciados com a nova localização da DTD ou do esquema. Se, contudo, associar um ficheiro XML a um esquema XML ou Chave de DTD, quando alterar a localização do esquema ou da DTD, só necessitará de actualizar a entrada do Catálogo XML, em vez de actualizar todos os ficheiros XML.

Por exemplo, supondo que existe uma DTD designada por "Building.dtd", que esteja associada a cinco ficheiros XML - Office.xml, House.xml, Apartment.xml, Bank.xml e PostOffice.xml. O utilizador move o ficheiro Building.dtd da DTD para uma nova localização. Caso exista uma associação de direcção entre o ficheiro Building.dtd e todos os ficheiros XML, terá de actualizar a declaração <DOCTTYPE> de todos os ficheiros XML para reflectir a nova localização do ficheiro Building.dtd. Se, contudo, existir uma associação de Catálogo XML e todos os ficheiros XML se referirem apenas à Chave do ficheiro Building.dtd, o utilizador só necessitará de actualizar o URI e todos os ficheiros XML indicarão a nova localização do ficheiro Building.dtd.

Actualizar uma entrada no Catálogo XML

Após ter actualizado uma entrada no Catálogo XML, poderá ser necessário renovar a vista do editor XML para que esta utilize as novas informações. Para efectuar este procedimento, faça clique no botão da barra de ferramentas Recarregar dependências Este gráfico corresponde ao botão da barra de ferramentas e a vista será actualizada mediante a utilização das definições actuais do Catálogo XML. O utilizador só precisa de renovar a vista do editor XML quando tiver aberto um ficheiro XML que faça referência à entrada do Catálogo XML que foi actualizada.

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

(c) Copyright 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
Editar com restrições de DTD ou de esquema XML
Editar declarações DOCTYPE
Adicionar entradas ao Catálogo XML
Actualizar ficheiros XML com alterações feitas a DTDs e esquemas
Editar informações de espaço de nomes
Editar instruções de processamento XML
Editar na vista Concepção
Editar na vista Origem