Tutti gli attributi sono dichiarati come tipi semplici.
Che cosa è un attributo?
Elementi semplici non possono avere attributi. Se un elemento ha attributi, è considerato di tipo complesso. Ma l'attributo stesso è sempre dichiarato come un tipo semplice.
Come definire un attributo?
La sintassi per definire un attributo è:
<xs:attribute name="xxx" type="yyy"/>
dove xxx è il nome dell'attributo e yyy specifica il tipo di dati dell'attributo.
XML Schema ha un sacco di tipi di dati incorporati. I tipi più comuni sono:
- xs: string
- xs: decimal
- xs: integer
- xs: boolean
- xs: date
- xs: time
Esempio
Ecco un elemento XML con un attributo:
<lastname lang="EN">Smith</lastname>
E qui è la corresponding definizione di attributo:
<xs:attribute name="lang" type="xs:string"/>
Valori predefiniti e fissi per gli attributi
Gli attributi possono avere un valore predefinito o un valore fisso specificato.
Un valore predefinito viene assegnato automaticamente al attributo quando non viene specificato alcun altro valore.
Nel seguente esempio il valore di default è "EN" :
<xs:attribute name="lang" type="xs:string" default="EN"/>
Un valore fisso viene anche assegnato automaticamente l'attributo, e non è possibile specificare un altro valore.
Nel seguente esempio il valore fisso è "EN" :
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Attributi opzionali e obbligatori
Gli attributi sono facoltativi per impostazione predefinita. Per specificare che è richiesto l'attributo, utilizzare la "use" l'attributo:
<xs:attribute name="lang" type="xs:string" use="required"/>
Restrizioni contenuti
Quando un elemento XML o un attributo ha un tipo di dati definito, si pone restrizioni sul contenuto dell'elemento o l'attributo di.
Se un elemento XML è di tipo "xs:date" e contiene una stringa del tipo "Hello World" , l'elemento non convalidare.
Con schemi XML, è possibile anche aggiungere le proprie restrizioni per gli elementi XML e attributi. Queste restrizioni sono chiamati sfaccettature. Si può leggere di più su aspetti nel prossimo capitolo.