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