Indicatore di XML Schema
Con l'indicatore, possiamo controllare l'uso di elementi in modalità documento.
indicatore
Ci sono sette indicatori:
Indicatori di ordine:
- tutto
- scelta
- sequenza
indicatore di occorrenza:
- maxOccurs
- minOccurs
Indicatore Gruppo:
- nome del gruppo
- nome attributeGroup
indicatore ordine
indicatori di ordine vengono utilizzati per definire l'ordine degli elementi.
Tutti indicatore
<Tutti> indicatore in conformità con le disposizioni del sub-elementi possono apparire in qualsiasi ordine, e ogni elemento figlio deve apparire solo una volta:
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Nota: Quando si utilizza il <tutto> indicatore, è possibile mettere <minOccurs> è impostato su 0 o 1, ma solo l'indicatore <maxOccurs> è impostato su 1 (poi spiegare <minOccurs> e <maxOccurs>).
Indicatore scelta
<Scelta> indicatore fornisce un sotto-elemento si verificano o si può verificare un altro elemento figlio (o l'altro):
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>
Indicatore di sequenza
<Sequenza> elemento figlio deve essere specificato in un ordine specifico:
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
indicatore di occorrenza
indicatori evento sono usati per definire la frequenza di un elemento verificarsi.
Nota: Per tutte le e l'indicatore "Ordine" "Gruppo" (qualsiasi, tutto, la scelta, la sequenza , il nome del gruppo e di riferimento del gruppo), che maxOccurs e minOccurs valori predefiniti sono 1.
indicatore maxOccurs
<MaxOccurs> indicatore può specificare il numero massimo di volte può verificarsi un elemento:
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Gli esempi sopra riportati dimostrano che l'elemento "child_name" bambino può apparire l'elemento meno "persona" una volta (dove il valore predefinito di minOccurs è 1), appare al massimo 10 volte.
indicatore minOccurs
<MinOccurs> indicatore possono richiedere un numero minimo di volte può verificarsi un elemento:
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Gli esempi sopra riportati dimostrano che l'elemento "child_name" bambino ci può essere un minimo di 0 a elemento "persona", appare al massimo 10 volte.
Suggerimento: per rendere il numero di occorrenze di un elemento non è limitato, si prega di utilizzare il maxOccurs = "senza limiti" questa dichiarazione:
Un esempio pratico:
Chiamato "Myfamily.xml" file XML:
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>Hege Refsnes</full_name>
<child_name>Cecilie</child_name>
</person>
<person>
<full_name>Tove Refsnes</full_name>
<child_name>Hege</child_name>
<child_name>Stale</child_name>
<child_name>Jim</child_name>
<child_name>Borge</child_name>
</person>
<person>
<full_name>Stale Refsnes</full_name>
</person>
</persons>
Sopra questo file XML contiene un elemento radice denominato "persone" di. All'interno di questo elemento radice, abbiamo definito tre elemento "persona". Ogni elemento "persona" deve contenere un elementi "FULL_NAME", ma può contenere fino a 5 elementi "child_name".
Questo è il file di schema "family.xsd":
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
indicatore di Gruppo
Indicatore di gruppo per diversi lotti di elementi relativi alla definizione.
Gruppo Element
gruppo di elementi definiti dal gruppo ha dichiarato:
...
</xs:group>
È necessario definire una dichiarazione all'interno del gruppo tutto, scelta o elementi di sequenza. Il seguente esempio definisce un gruppo denominato "persongroup", che definisce un insieme di elementi che devono essere presenti secondo un preciso ordine:
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
Dopo aver definito il gruppo è completato, è possibile fare riferimento ad essa in un'altra definizione di:
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:group ref="persongroup"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Property Group
Attributo gruppi definiti dalla dichiarazione attributeGroup:
...
</xs:attributeGroup>
L'esempio seguente definisce un gruppo di proprietà denominato "personattrgroup" di:
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
Dopo aver definito un set completo di attributi, è possibile fare riferimento in un'altra definizione, in questo modo:
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>