Capitolo IV: Ampliare i documenti XML |
Dichiarazioni del tipo di elemento Il tipo di elemento è dichiarato nellelemento ElementType. Ogni dichiarazione del tipo di elemento deve includere un attributo Name, che definisce il tipo di elemento. Ad esempio. La dichiarazione del tipo di elemento riportata di seguito dichiara un tipo di elemento con il nome Plant: <ElementType name="plant"> Il tipo di contenuto di elemento può essere dichiarato con lattributo content. In questo modo il contenuto dellelemento è vincolato al tipo specificato. TIPO DI CONTENUTO Ogni tipo di elemento può contenere una delle quattro categorie relative al contenuto: vuoto, solo testo, solo sottoelementi o una combinazione di testo e sottoelementi. I valori possibili sono i seguenti:
Oltre ai vincoli relativi al contenuto, una dichiarazione del tipo di elemento può anche specificare il pattern in cui gli elementi nella dichiarazione appaiono, utilizzando lattributo order. ORDINAMENTO DEL CONTENUTO Lattributo order vincola il pattern per i tipi di elementi dichiarati in una dichiarazione del tipo di elemento. I valori possibili sono i seguenti:
Lesempio seguente mostra la dichiarazione del tipo di elemento Plant, che contiene i sottoelementi che devono essere ordinati in modo sequenziale: <ElementType name="name" content="textOnly"/> <ElementType name="growth" content="mixed"/> <ElementType name="saleinfo" content="mixed"/> <ElementType name="plant" content="eltOnly" order="seq"> <element type="name"/> <element type="growth"/> <element type="saleinfo"/> </ElementType> E possibile applicare altri vincoli raggruppando i riferimenti degli elementi mediante lelemento Group. Questo elemento supporta lattributo order con gli stessi valori utilizzati per lelemento ElementType. Ecco un esempio che utilizza lelemento Group: <ElementType name="name" content="textOnly"/> <ElementType name="zone" content="textOnly"/> <ElementType name="light" content="textOnly"/> <ElementType name="price" content="textOnly"/> <ElementType name="plant" content="eltOnly" order="seq"> <element type="name"/> <group order="one"> <element type="zone"/> <element type="light"/> <element type="price"/> </group> </ElementType> In questo caso il tipo di elemento Plant deve contenere un nome a cui deve seguire uno degli elementi Zone, Light o Price. QUANTITA DI ELEMENTI E GRUPPI Come nelle DTD XML, è possibile applicare vincoli in modo da determinare la posizione e il numero delle volte in cui un elemento o un gruppo può essere ripetuto allinterno di un documento. Gli attributi minOccurs e maxOccurs possono essere specificati negli elementi Element e Group. Lattributo minOccurs specifica il numero minimo delle ripetizioni di un elemento, mentre maxOccurs quello massimo. Nella seguente tabella indichiamo le possibili combinazioni di valori per gli attributi minOccurs e maxOccurs con i relativi significati:
Il valore predefinito per ambedue gli attributi minOccurs e maxOccurs è 1. Questo significa che, se non specificato diversamente, gli elementi devono occorrere una sola volta allinterno di un determinato tipo di elemento. Nellesempio che segue il gruppo deve occorrere almeno una volta, quindi anche più volte: <ElementType name="name" content="textOnly"/> <ElementType name="zone" content="textOnly"/> <ElementType name="light" content="textOnly"/> <ElementType name="price" content="textOnly"/> <ElementType name="plant" content="eltOnly" order="seq"> <element type="name"/> <group minOccurs="1" maxOccurs="*" order="one"> <element type="zone"/> <element type="light"/> <element type="price"/> </group> </ElementType> |