XML Schema

**XML Schema** publicate como recommendation per le World Wide Web Consortium (W3C) in le maio 2001 es un linguage de description de formato de documento XML permittente definir le structura e le typo de contento de un documento XML. Iste definition permitte notabilemente verificar le validitate de iste documento.

Il es possibile describer un organisation de vocabularios de origines differente, per le usage del spatios de nomines. Il es possibile combinar le schemas mesme, e exprimer un combination pro le documento contenite, como alcuno qui parlarea de geographia e de sociologia in un mesme texto.

Il es equalmente possibile, post un validation, de saper con qual regula un information particular ha essite verificate: illo es le serie de validation post-schema, o PSVI (post-schema-validation infoset).

Un definition se compone de un o plure documentos XML, usualmente nominate *XML Schema Definition* in anglese, o file **XSD**.

Un instantia de un *XML Schema* es un pauc le equivalente de un *definition de typo de documento* (DTD). XML Schema apporta totevia plure differentias con le DTD: illo permitte per exemplo definir dominios de validitate pro le valor de un campo, durante que illo non es possibile in un DTD; in contrasto, illo non permitte definir entitates; XML Schema es mesme un documento XML, durante que le DTD es documentos SGML.

Iste linguage de description de contento de documentos XML es mesme definite per un schema, e le marcationes de definition de illo es auto-definiente (isto es un exemplo de definition recursive).

Le recommendation del W3C 1.0 se compone de un documento de presentation (non normative), de un documento specificante como definir le structura, e de un documento specificante como definir le datos. Le ultime edition, de version 1.0, de iste recommendation, data de 2004. Le W3C travalia actualmente super le version 1.1 cuje objectivo es definir le notiones de version de schema, e coercitiones secundo le presentia de tal o tal valor.

## Modello de XML Schema
Le recommendation specifica le validation del documentos XML a partir de un modello abstracte; illo forni le formato XML.

Pro iste modello abstracte, un schema es un ensemble de componentes, tal como:
* le declaration de elementos (le notion de elementos veni del recommendation XML),
* le declaration de attributos (illo veni anque del recommendation XML),
* le definition de typos simple (valores constituite unicamente a partir de un catena de characteres),
* le definition de typos complexe (valores constituite de attributos e de altere valores).

Illo introduce equalmente le typo *anyType* (ulle typo), base de tote le typos usate.

Cata componente es inquadrate per un unitate de information, al senso del recommendation *XML Information Set* (nominate *Infoset*) del W3C.

Pro iste que es del usage, XML Schema permitte de definir elementos e typos de valor o in particular, o localmente a un contexto nominate. Le combination de iste duo modos permitte definir quatro technicas:
* *pupas russe* (on describe le elementos per installar los le unes in le alteres), 
* *trenchos de salamis* (definitiones global del elementos, ma local del typos), 
* *persianas venetian* o *jalousies* (definition local del elementos, ma global del typos), 
* *jardin de Eden* (definition global del elementos e del typos).

XML Schema determina le unicitate como un combination de nodos, relativemente a un contexto, comparante a lor componentes. Assi, on pote per exemplo affirmar e verificar que un persona es unic, in le contexto de un adressario, comparante a su nomine e su prenomine.

## Typos de datos

Le typos de datos integrate es:
* *string*
** *normalizedString*, basate super *string*
*** *token*, basate super *normalizedString*
**** *language*, basate super *token*
**** *NMTOKEN*, basate super *token*, e *NMTOKENS* deriva de illo
**** *Name*, basate super *token*
***** *NCName*, basate super *Name*
****** *ID*, basate super *NCName*
****** *IDREF*, basate super *NCName*, e *IDREFS* deriva de illo 
****** *ENTITY*, basate super NCName, e *ENTITIES* deriva de illo 
* *duration*
* *dateTime*
* *date*
* *time*
* *gYear*
* *gYearMonth*
* *gMonth*
* *gMonthDay*
* *gDay*
* *boolean*
* *NOTATION*
* *QName* (Nomine Qualificate)
* *anyURl*
* *base64Binary*
* *hexBinary*
* *float*
* *double*
* *decimal*
** *integer*, basate super *decimal*
*** *long*, basate super *integer*
**** *nonNegativeInteger*, basate super *long*
***** *positiveInteger*, basate super *nonNegativeInteger*
***** *unsignedLong*, basate super *nonNegativeInteger*
****** *unsignedInt*, basate super *unsignedLong*
******* *unsignedShort*, basate super *unsignedInt*, e *unsignedByte* deriva de illo 
**** *int*, basate super *long*
***** *short*, basate super *int*, e *byte* deriva de illo 
*** *nonPositiveInteger*, basate super integer, e *negativeInteger* deriva de illo 

## Exemplo
Un exemplo de file XSD (persona.xsd):

```xml
<?xml version="1.0" encoding="UTF-8"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="persona">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="nomine" type="xs:string" />
          <xs:element name="prenomine" type="xs:string" />
          <xs:element name="data_nascentia" type="xs:date" />
          <xs:element name="establimento" type="xs:string" />
          <xs:element name="num_tel" type="xs:string" />
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:schema>
```


Sequite de un file XML valide:


```xml
<?xml version="1.0" encoding="UTF-8"?>
  <persona xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="persona.xsd">
    <nomine>MBODJ</nomine>
    <prenom>Babacar</prenom>
    <data_nascentia>1996-10-06</data_nascentia>
    <establimento>NIIT</establimento>
    <num_tel>764704140</num_tel>
  </persona>
```


## Implementation del Dublin Core
XML Schema corresponde a un alte nivello de formalisation in le schemas de classification. XML Schema permitte implementar le standard Dublin Core de metadatos.

Le nomines de elementos es indicate in le modo sequente:

: 
: 
:  
:  
:  
:  
:  
:  
:  
:  
:  
:  
:  
:  
: 

## Exemplo de usage
XML Schema es usate conjunctemente con le formulario XForms pro validar le datos desde le sasimento.

## Historia
XML schema es le conclusion de diverse propositiones veniente essentialmente de Microsoft in cooperation con le Universitate de Edinburgh in 1998. Illo trova su origine in le linguage de description SGML. Le DTD habente trovate lor limites, Microsoft ha proponite de usar XML pro describer documentos XML con formatos como *XML-Data* o *Document Content Description* e ha recipite le appoio del Universitate de Darmstadt (Germania) in 1999. Le ensemble del propositiones ha convergite verso un prime specification de XML schema initio maio 2001.

## Referentias


## Bibliographia
* *Les web services*. Techniques, démarches e outils XML, WSDL, SOAP, UDDI, RosettaNet, UML. Hubert Kadima, Valérie Monfort, Dunod, 2003.

## Vide etiam
### Ligamines externe
*  A Short History of XML Schema Languages
*  Le pagina super XML Schema del W3C
*  Traduction francese del recommendation del W3C super le schemas XML del 2de maio 2001 Tomo 0 e Tomo 1; le tomo 2 del recommendation non es traducite.