Riutilizzo dei tipi e derivazioni
Nel linguaggio XSD (XML Schema Definition), i tipi globali complessi consentono di definire un tipo di dati strutturato che può essere riutilizzato, e potenzialmente ridefinito, in vari punti dello schema. L'esempio più classico è forse rappresentato da una struttura di indirizzo che contiene nome, via, città, paese e così via. Inoltre, il nome stesso potrebbe essere una struttura contenente le stringhe del nome proprio e del cognome. Se questa struttura complessa viene definita a livello globale, è possibile utilizzarla in più punti dello schema, ad esempio per l'indirizzo di spedizione e per l'indirizzo di fatturazione.
XSD fornisce inoltre i meccanismi per derivare un tipo da un altro. Si tratta sia di tipi di contenuto semplici che di tipi di contenuto complessi. È possibile, ad esempio, derivare un nuovo tipo da un tipo stringa semplice (come xs:string) in modo che il nuovo tipo accetti come valori validi solo alcune stringhe specifiche. In XSD questo tipo di derivazione è noto come derivazione per restrizione, perché i valori consentiti dal tipo derivato sono più restrittivi di quelli consentiti dal tipo di base.
Il tipo di indirizzo suggerito in precedenza può essere un esempio di derivazione che coinvolge un tipo complesso. Si supponga che il tipo di indirizzo debba ospitare gli indirizzi con un paese specifico, dove il paese stesso è già previsto nell'indirizzo. Per estendere tale tipo di indirizzo in modo che possa gestire gli indirizzi esteri, è possibile derivare un nuovo tipo dal tipo di indirizzo originale, quindi includere informazioni aggiuntive nel tipo derivato, ad esempio il paese. In XSD questo tipo di derivazione è noto come derivazione per estensione, perché il tipo derivato estende il tipo di base.
In questa sezione viene descritto il riutilizzo dei tipi e vengono illustrati i modi in cui è possibile utilizzare la derivazione per ridefinire i tipi quando vengono riutilizzati.