Archivi tag: xsd

XML TUTORIAL – 5 – XSD E PARSER

Per poter validare un file XML occorre indicare al parser dove recuperare lo schema. Tale informazione può essere indicata  nell’elemento radice del file usando i tag xmlns:xsi e xsi:noNamespaceSchemaLocation.

L’attributo xmlns:xsi indica un URL che specifica la modalità con cui si indicherà il riferimento allo schema XML, mentre l’attributoxsi:noNamespaceSchemaLocation indica il nome e l’eventuale percorso del file contenente lo schema XML di riferimento.

Concetto fondamentale è quello del namespace, che permette di individuare univocamente un tipo all’interno del file xml, qualora all’interno del file sia presenti grammatiche diverse.

Per namespace si intende un insieme di nomi di elementi e nomi di attributi identificati univocamente da un identificatore.

Per definire un namespace si usa l’attributo xmlns associato al root element, come nel seguente esempio:

Questa formula indica che l’elemento articolo ed i suoi sottoelementi utilizzano i nomi definiti nel namespace identificato dall’identificatore http://www.valeriofinazzo.it/libro. Il valore del namespace è una stringa libera, che per prassi, viene indicata tramite una URI, Uniform Resource Identifier.

È possibile creare delle abbreviazioni per fare riferimento ai namespace, costituite da caratteri alfanumerici seguiti da due punti (:) dichiarati nel root element ed utilizzati come prefissi dei nomi degli elementi.

Es. <lib:libro titolo=”Titolo” xmlns:lib=”http://www.valeriofinazzo.it/libro”  >

XML TUTORIAL – 4 – XML SCHEMA DEFINITION

Dopo aver visto i limiti del DTD analizziamo l’altra soluzione che li supera e permette una definizione univoca di tutte le caratteristiche di un file xml.

L’XML Schema introduce il concetto di tipo di dato semplice per definire gli elementi che non possono contenere altri elementi e non prevedono attributi. Tali dati semplici possono essere utilizzati per definire elementi più complessi.

Sono previsti dei dati predefiniti come ad esempio l’integer, che definisce un numero intero oppure è possibile definire altri tipi semplici.

Ad esempio <xs:element name=”nome” type=”xs:string” /> preveve che l’elemento name in un documento XML possa contenere una sequenza di caratteri.

A partire dai dati predefiniti è possibile definire altri tipi di dati semplici, potendo aggiungere ulteriori restrizioni. Ad esempio possiamo ridefinire l’elemento nome aggiungendo che sia una stringa di almeno 5 caratteri. La definizione di un tipo semplice utilizza il tag simpleType.

In altre parole, la dichiarazione indica che l’elemento <quantita> è di tipo semplice e prevede una restrizione sul tipo di dato intero predefinito accettando valori compresi tra 1 e 100.

Per dato complesso si intende un elemento che possa contenere altri elementi o avere attributi. La definizione di un elemento complesso si avvale del tag complexType. Per definire gli elementi che un elemento complesso sono disponibili 3 costruttori diversi:

  • <xs:sequence> Consente di definire una sequenza ordinata di sottoelementi
  • <xs:choice> Consente di definire un elenco di sottoelementi alternativi
  • <xs:all> Consente di definire una sequenza non ordinata di sottoelementi

Per ciascuno di questi costruttori e per ciascun elemento è possibile definire il numero di occorrenze previste utilizzando gli attributi minOccurs e maxOccurs.

Per definire gli attributi di un elemento si usa il tag <xs:attribute>, che può essere dichiarato opzionale o obbligatorio.