XDTD

Una sintassi semplificata per XML Schema 1.1.
È disponibile un'interfaccia web per la conversione di XDTD in XML Schema.

Cos'è

XDTD è una sintassi con la quale scrivere schema per la convalida di documenti XML. Gli schema scritti con XDTD hanno la stesso potere espressivo di quelli scritti con XML Schema ma sono molto più semplici da scrivere e da leggere.

XDTD estende XML DTD con nuove dichiarazioni, introducendo i concetti di tipo semplice e tipo complesso presenti in XML Schema. XDTD è completamente compatibile all'indietro: ogni DTD valido è un XDTD valido.

Esempi

Compatibilità con DTD
<!ELEMENT poesia (autore, titolo?, strofa+)>
<!ATTLIST poesia
    lingua (it|en|fr|de|jp) #REQUIRED
    codice ID #IMPLIED
> 
Tipi di XML Schema al posto di #PCDATA e CDATA
<!ATTLIST edificio
    indirizzo /(via|viale|piazza) [a-zA-Z ]+ [0-9]+/ #REQUIRED
    abitabile #boolean; #REQUIRED
    numero-piani #integer;[1,] #OPTIONAL
>
Definizione di tipi semplici e complessi
<!TYPE # indirizzo /(via|viale|piazza) [a-zA-Z ]+ [0-9]+/>
<!TYPE @ dizionario (titolo, autore+, prefazione, lemma+, appendice*)>
Definizione di elementi in più namespace
<!ELEMENT metadata:autore (nome, cognome, homepage)>
<!ELEMENT doc:articolo (metadata:autore{1,5}, titolo, contenuto)>
Gruppi di elementi e attributi
<!GROUP ## personali
    nome    #string; #REQUIRED
    cognome #string; #REQUIRED
    nascita #date;   #REQUIRED
>

<!ELEMENT atleta EMPTY>
<!ATTLIST atleta
    ##personali;
    record #string; #REQUIRED
>

Come si usa

Attualmente è disponibile un'interfaccia web che permette di convertire uno schema dalla sintassi XDTD alla sintassi XML canonica di XML Schema.

Non appena completata, l'applicazione richiamata dall'interfaccia web sarà disponibile come applicazione standalone.

Storia di XDTD

XDTD nasce come aggiornamento di DTD++, altra sintassi alternativa a quella ufficiale di XML Schema.

L'iniziale lavoro di aggiornamento è sfociato in una riscrittura completa che ha semplificato ulteriormente i concetti di base e esteso la sintassi fino a coprire la totalità del modello di XML Schema.