Approfondimenti su XML Schema e XML Namespace

Nella terza lezione del corso on line si esaminano da un lato definizione, differenze tra XML Schema e DTD e dall’altro definizione, collisioni di tag, dichiarazione di Namespace.

XML Schema
L’alternativa alla DTD, che come abbiamo detto nella lezione precedente è
il documento che descrive e permette di validare la struttura logica del documento
XML, è costituita dall’XML Schema.
L’alternativa si è resa necessaria in quanto la sintassi della DTD, oltre
ad essere articolata e poco leggibile, non permette la definizione dei tipi di
dato contenuti nel documento XML, in quanto non è possibile descrivere
il formato dei contenuti all’interno dei tag (tutti i dati sono di tipo alfa-numerico).

XML Schema è lo standard definito dal W3C (World Wide Web Consortium)
che oltre a offrire la possibilità di validare il modello del contenuto
(come la DTD), permette di descrivere e quindi validare il tipo di dato contenuto
nel documento XML.

XML Schema, inoltre, è a sua volta un documento XML; questo permette
di avere un’immagine visuale e immediata della struttura del documento che descrive
(si veda immagine linkata a fondo pagina).

Le caratteristiche che permettono una definizione flessibile del tipo di dato
sono:

  • tipi di dato complessi
  • tipi di dato definiti dall’utente (archetypes)
  • raggruppamento degli attributi

Nell’esempio seguente è rappresentato come può essere rappresentato
un codice di avviamento postale all’interno di un documento XML

<elementType
name="cap">
  <datatypeRef
name="CodiceAvviamentoPostale"/>
</elementType>
<datatype
name="CodiceAvviamentoPostale">
  <basetype
name="string"/>
  <lexicalRepresentation>
    <lexical>99999</lexical>
    <lexical>I-99999</lexical>
  </lexicalRepresentation>
</datatype>

La descrizione ci mostra come il CAP possa essere rappresentato sia in forma
numerica a cinque cifre (99999), sia in forma numerica dall’indicazione del
Paese e cinque cifre numeriche (I-99999).
Questo permette una validazione più accurata dei contenuti del documento
XML.

In conclusione, XML Schema – che estende la DTD a un livello più moderno
e consistente – è una specifica del W3C che nel tempo sostituirà
la sintassi delle DTD. Con XML Schema, si possono costruire complessi content
models
e supportare la definizione di tipi di dato complessi.

XML Namespace
Spesso nella definizione di un documento XML si riscontrano dei conflitti dovuti
a elementi che hanno lo stesso nome ma significati diversi.

<?xml
version="1.0"?>
<order>
  <title>The
XML Handbook</title>
  <isbn>0130811521</isbn>
  <price
currency="USD">44.95</price>
  <title>Dr.</title>
  <forename>Paul</forename>
  <lastname>Smith</lastname>
  <address>
… </address>
  <creditcard
cardtype="Visa"> … </creditcard>
  <phone>
… </phone>
  <email>
… </email>
</order>

Nel nostro esempio vediamo che il tag "title" viene utilizzato sia
per descrivere il titolo di un libro che come appellativo del cliente che fa
l’ordine. Per risolvere questo conflitto si utilizzano i Namespace.

Namespace è lo standard che definisce delle categorie in relazione ai
tag, stabilendo il prefisso da anteporre ai nomi dei tag:

<?xml
version="1.0"?>
<order
    xmlns:bk="http://www.net-standard.com/namespaces/books"
    xmlns:cust=http://www.net-standard.com/namespaces/customer
    xmlns:fin=http://www.net-standard.com/namespaces/financial
>
  <bk:title>The
XML Handbook</bk:title>
  <bk:isbn>0130811521</bk:isbn>
  <bk:price
fin:currency="USD">44.95</bk:price>
  <cust:title>Dr.</cust:title>
  <cust:forename>Paul</cust:forename>
  <cust:lastname>Smith</cust:lastname>
  <cust:address>
… </cust:address>
  <cust:creditcard
fin:cardtype="Visa"
>… </cust:creditcard>
  <cust:phone>
… </cust:phone>
  <cust:email>
… </cust:email>
</order>

L’esempio precedente viene quindi risolto tramite la definizione di tre Namespace
(bk, cust, fin) che precedono gli elementi associati.

Concludendo, i Namespace definiscono un formato standard al fine di permettere
lo scambio di documenti e risolvendo possibili conflitti tra nome del tag e
significato che vogliono rappresentare.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome