Share |

venerdì 7 maggio 2010

XSD: Gli Indicatori di Frequenza

In questo articolo mostrerò come poter irrobustire uno Schema_XSD avvalendomi degli Indicatori di Frequenza.

Grazie ad essi è possibile stabilire la frequenza, sia massima che minima, con cui possono o devono comparire, nel file XML da validare, gli elementi XSD definiti nel proprio XSD_Schema.

Gli indicatori di frequenza sono:

  • minOccurs;
  • maxOccurs;

L'indicatore minOccurs

L'indicatore minOccurs indica il numero minimo di volte in cui un elemento XSD, complex_type o simple_type che sia, può comparire all'interno di un documento o altro elemento XML.


L'indicatore maxOccurs

Invece, l'indicatore maxOccurs indica il numero massimo di volte che l'elemento corrispondente può comparire nel documento XML.


Esempi pratici

Se si definisce un elemento complex type cosi fatto:

<xs:complexType name="piantaItem"> 
  <xs:all>
    <xs:element name="nome" type="xs:string" 
        minOccurs="1" maxOccurs="unbounded" />
    <xs:element name="esterno" type="xs:boolean" />
  </xs:all>
</xs:complexType>

E' stabilito che nel documento XML l'elemento nome deve comparire almeno 1 volta(minOccurs="1").
Invece, utilizzando l'indicatore maxOccurs valorizzato con unbounded non si pongono limiti di presenza a tale elemento.

Gli indicatori di frequenza si possono utilizzare anche all'interno di Indicatori_di_Ordinamento.
Definendo un elemento Complex Type cosi fatto:

<xs:complexType name="piantaItem"> 
  <xs:sequence maxOccurs="2">
    <xs:element name="nome" type="xs:string" />
    <xs:element name="esterno" type="xs:boolean" />
  </xs:sequence>
</xs:complexType>

E' stabilito che nel documento XML potranno figurare al massimo 2 ripetizioni dell'elemento chiamato piantaItem.

In conclusione, gli Indicatori di Frequenza sono molti utili, in quanto aumentano il controllo sull'utilizzo degli elementi XSD definiti e rendono easy il riutilizzo dell'interfaccia XSD creata.

Alla prossima, MA.

0 commenti:

Posta un commento

Non ti è chiaro qualcosa?
No problem, posta il tuo dubbio ;)

..... e ricordati di firmarlo!