Associazioni di file XML a DTD e schemi XML

Quando un file XML è associato a un DTD o ad uno schema XML, viene collegato mediante regole strutturali contenute nel DTD o nello schema XML. Per essere considerato un file XML valido, il documento deve essere accompagnato da un DTD o da uno schema XML ed essere conforme a tutte le dichiarazioni presenti nel DTD o nello schema XML.

Esistono due modi diversi per associare i file XML ai DTD o agli schemi XML.

  1. Associazione diretta - Il file XML contiene il nome di un DTD nella dichiarazione doctype (ad esempio, <!DOCTYPE root-element SYSTEM " dtdfile.dtd" >, dove dtdfile.dtd è il nome del file DTD) oppure contiene il percorso di uno schema XML nell'attributo schemaLocation dell'elemento root del file XML (ad esempio, <xsi:schemaLocation="http://www.ibm.com schema.xsd">, dove schema.xsd è il nome dello schema XML.
  2. Voce di catalogo XML - È possibile registrare i file DTD e dello schema XML nel catalogo XML ed associarli a una chiave che li rappresenti. È quindi possibile fare riferimento a un DTD o un file schema XML chiave da un file XML invece che fare riferimento direttamente al DTD o al file schema XML. Una voce di catalogo XML contiene due parti, una chiave, che rappresenta un DTD o uno schema XML e un URI, che contiene informazioni sul percorso del DTD o dello XML.

Funzionamento dell'associazione

Associazione di un file XML a un DTD
Se un file XML viene associato a un DTD, una DOCTYPE simile a quella riportata di seguito verrà inclusa nel file XML:
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">

InvoiceId è l'identificativo pubblico del file DTD. Esso è utilizzato per associare il file XML a un file DTD (in questo caso, il file DTD è Invoice.dtd). Se l'identificativo pubblico InvoiceId corrisponde alla chiave della voce di catalogo XML per Invoice.dtd, allora l'URI della voce di catalogo XML (che contiene le informazioni sul percorso di Invoice.dtd) viene utilizzato per individuare il DTD. Altrimenti, verrà utilizzato l'identificativo di sistema di DOCTYPE ("C:\mydtds\Invoice.dtd"), che fa riferimento direttamente al percorso del file system del DTD.

Nota: è possibile utilizzare anche un identificativo di sistema come chiave in una voce di catalogo XML. Se si utilizza un identificativo di sistema come chiave, nel file XML verrà inclusa una tag DOCTYPE simile a quella riportata di seguito:

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

dove MyDTD.dtd è l'identificativo di sistema che corrisponde alla chiave della voce di catalogo XML.

Associazione di un file XML con uno schema XML

Se un file XML viene associato a uno schema XML, uno o più attributi di percorso dello schema verranno inclusi nel file XML. Le informazioni in schemaLocation sono fornite come suggerimento al processore XML. I seguenti esempi mostrano gli attributi di schemaLocation.

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

Nell'Esempio 1, il suggerimento di schemaLocation ('C:\myschemas\PurchaseOrder.xsd') fa riferimento direttamente al percorso del file system o all'URI dello schema XML. In questo caso, il file schema verrà individuato direttamente dal processore XML.

Nell'Esempio 2, il suggerimento di schemaLocation ('PO.xsd') fa riferimento a una voce di catalogo XML. PO.xsd corrisponde alla chiave della voce di catalogo XML per PurchaseOrder.xsd e verrà utilizzato l'URI della voce di catalogo XML (che contiene informazioni sul percorso di PurchaseOrder.xsd) per individuare lo schema XML.

In entrambi gli esempi, http://www.ibm.com nella tag xsi:schemaLocation è un URI che identifica lo spazio nomi per lo schema XML.

È inoltre possibile utilizzare anche un identificativo di sistema come chiave for una voce di catalogo XML. Se si utilizza uno spazio nomi come chiave, nel file XML verrà inclusa una tag schemaLocation simile a quella riportata di seguito:
<purchaseOrder xmlns:="www.ibm.com"
xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

L'attributo schemaLocation fa riferimento sia alla chiave che al percorso corrente dello schema.

Il DTD o lo schema XML si trova su un server remoto

Diverse funzioni nell'editor XML, come ad esempio la funzione di convalida e l'Assistente ai contenuti, richiedono la disponibilità di un file DTD o di uno schema XML. La documentazione del prodotto fornisce le informazioni sull'utilizzo per i casi in cui il file DTD o lo schema XML si trovano sulla macchina locale. Tuttavia, in molti casi, il file DTD o lo schema XML si può trovare su un server remoto, ad esempio:

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

Di solito, questo caso non presenta alcun problema in quanto il file DTD o lo schema XML possono essere richiamati dal server remoto. Tuttavia, se si utilizza un firewall e non si ha un sistema SOCKS, il workbench non fornisce un modo per specificare un server socks per richiamare un file DTD o uno schema XML. Se non è possibile utilizzare un sistema SOCKS, allora è possibile richiamare una copia del file DTD o dello schema XML (mediante un browser Web, ad esempio) e salvare la copia sulla macchina locale. Quindi, è possibile posizionare una copia locale nello stesso progetto del file XML oppure utilizzare il catalogo XML per associare un identificativo pubblico al percorso di un DTD.

Nota: se si ha un file XML associato a uno schema XML o a un file DTD che si trova in un altro percorso della rete e si lavora su una macchina non connessa alla rete, è possibile seguire i passi descritti precedentemente se si desidera utilizzare l'Assistente ai contenuti o la funzione di convalida del file XML.

Vantaggi delle associazioni alle voci di catalogo XML

Se si crea una associazione diretta tra un file XML e uno schema XML o un file DTD, ogni volta che viene modificato il percorso dello schema o del DTD è necessario tracciare e aggiornare tutti i file XML di riferimento con la nuova posizione del DTD o dello schema. Se tuttavia, si associa un file XML a uno schema XML o a una chiave DTD, quando si modifica il percorso dello schema o del DTD, è necessario aggiornare soltanto la voce di catalogo XML invece che ogni singolo file XML.

Ad esempio, si assuma di avere un DTD denominato "Building.dtd" associato a cinque file XML, Office.xml, House.xml, Apartment.xml, Bank.xml e PostOffice.xml. Il file DTD Building.dtd viene spostato in un nuovo percorso. Se è presente una associazione di direzione tra Building.dtd e tutti i file XML, sarà necessario aggiornare la dichiarazione <DOCTTYPE> in ogni file XML in modo da riflettere il nuovo percorso di Building.dtd. Se, tuttavia, è disponibile una associazione di catalogo XML e tutti i file XML fanno riferimento alla chiave di Building.dtd, allora è necessario aggiornare soltanto l'URI e i file XML punteranno alla nuova posizione di Building.dtd.

Aggiornamento di una voce nel catalogo XML

Dopo aver aggiornato una voce nel catalogo XML, potrebbe essere necessario aggiornare la vista dell'editor XML in modo che vengano utilizzate le nuove informazioni. Per far ciò, fare clic sul pulsante Ricarica dipendenze Questo grafico illustra il pulsante della barra degli strumenti Ricarica dipendenze e la vista verrà aggiornata in base alle impostazioni correnti del catalogo XML. È necessario aggiornare la vista dell'editor XML solo quando si ha un file XML che fa riferimento a una voce del catalogo XML che è stata aggiornata.

Per ulteriori informazioni, fare riferimento alle attività correlate.

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

Concetti correlati
Editor XML
Attività correlate
Modifica con vincoli di DTD o schema XML
Modifica delle dichiarazioni DOCTYPE
Aggiunta di voci al catalogo XML
Aggiornamento di file XML con modifiche apportate a DTD e schemi
Modifica delle informazioni sullo spazio nomi
Modifica delle istruzioni di elaborazione XML
Modifica nella vista Progettazione
Modifica nella vista Origine