Вы находитесь на странице: 1из 4

Introduccin al lenguaje XSD (XML Schema

Definition)
XSD es un formato para definir la estructura de un documento XML. XSD sustituye al anterior formato DTD, y
aade funcionalidad para definir la estructura XML con ms detalle.
Ejemplo de documento XSD:
1 <?xml version="1.0"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3 <xs:element name="note">
4
<xs:complexType>
5
<xs:sequence>
6
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
7
<xs:element name="heading" type="xs:string"/>
8
<xs:element name="body" type="xs:string"/>
9
</xs:sequence>
10
</xs:complexType>
11
12 </xs:element>
13</xs:schema>
Como podemos ver, el propio documento XSD est tambin escrito en XML.

Cmo hacer referencia en un documento XML a su


especificacin XSD
Una vez escrita una especificacin XSD, podemos puede escribir un documento XML, y hacer constar en el mismo
que debe ser conforme a dicha especificacin. Esto se hace aadiendo algunos atributos al elemento raz del
documento XML.
En el ejemplo siguiente, vemos un documento XML que es conforme a la especificacin note.xsd presentada ms
arriba:
1 <?xml version="1.0"?>
2 <note
3 xmlns="http://www.openalfa.com"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://www.openalfa.com note.xsd">
<to>Tove</to>
6
<from>Jani</from>
7
<heading>Reminder</heading>
8
<body>Don't forget me this weekend!</body>
9
10</note>
En la lnea 3, indicamos que el namespace al que pertenecen los elementos que aparecen en el documento es
http://www.openalfa.com
En la lnea 4, indicamos que tambin pueden aparecer elementos del namespace
http://www.w3.org/2001/XMLSchema-instance, y deben ir precedidos por el prefijo xsi.
En la lnea 5, el atributo xsi:schemaLocation indica la ubicacin del esquema XSD contra el que se debe validar el
documento XML (En este caso un documento denominado note.xsd). Como vemos, este atributo utiliza el prefijo
xsi:, y por lo tanto se trata de un atributo definido en el namespace de la lnea 4.

Elementos, atributos y tipos de datos simples

En el esquema se definen los elementos de que puede constar el documento XML, y los tipos de datos que pueden
contener, mediante lineas de la forma:
<xs:element name="nombre_del_elemento" type="tipo_de_datos" />
Los tipos de datos ms comunes son:

xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time

Un elemento tambin puede tener atributos. Los atributos se definen igual que los elementos, sustituyendo xs:element
por xs:attribute. Ejemplos:
1<xs:attribute name="lang" type="xs:string" use="required"/>
2<xs:attribute name="lang" type="xs:string" use="optional" default="es"/>
Tambin podemos crear nuevos tipos de datos, estableciendo restricciones sobre los valores posibles de un tipo de
datos predefinido. Ejemplos;
1
<xs:element name="age">
2
<xs:simpleType>
3
<xs:restriction base="xs:integer">
4
<xs:minInclusive value="0"/>
5
<xs:maxInclusive value="120"/>
6
</xs:restriction>
7
</xs:simpleType>
8 </xs:element>
9 <xs:element name="car">
10 <xs:simpleType>
11
<xs:restriction base="xs:string">
12
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
13
<xs:enumeration value="BMW"/>
14
</xs:restriction>
15
16 </xs:simpleType>
17</xs:element>
18
19<xs:element name="letter">
20<xs:simpleType>
21<xs:restriction base="xs:string">
22<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
23
</xs:simpleType>
24
</xs:element>
25

Restricciones aplicables a tipos de datos simples


Constraint

Description

enumeration

Defines a list of acceptable values

fractionDigits

Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero

length

Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero

maxExclusive
maxInclusive

Specifies the upper bounds for numeric values (the value must be less than this value)
Specifies the upper bounds for numeric values (the value must be less than or equal to this value)

maxLength

Specifies the maximum number of characters or list items allowed. Must be equal to or greater than
zero

minExclusive

Specifies the lower bounds for numeric values (the value must be greater than this value)

minInclusive

Specifies the lower bounds for numeric values (the value must be greater than or equal to this
value)

minLength

Specifies the minimum number of characters or list items allowed. Must be equal to or greater than
zero

pattern
totalDigits

Defines the exact sequence of characters that are acceptable


Specifies the exact number of digits allowed. Must be greater than zero

whiteSpace

Specifies how white space (line feeds, tabs, spaces, and carriage returns) is handled

Tipos de Datos Compuestos


Se pueden definir tipos de datos compuestos mediante elementos <xs:complexType>. Los tipos de datos compuestos
contienen un conjunto de tipos de datos simples o compuestos. Estos se pueden agrupar mediante indicadores de
orden como <xs:sequence> y tambin pueden emplear indicadores de ocurrencia, como explicamos ms adelante.
1 <xs:element name="employee" type="fullpersoninfo"/>
2
3 <xs:complexType name="personinfo">
4
<xs:sequence>
5
<xs:element name="firstname" type="xs:string"/>
6
<xs:element name="lastname" type="xs:string"/>
7
</xs:sequence>
8 </xs:complexType>
9
10<xs:complexType name="fullpersoninfo">
11 <xs:complexContent>
<xs:extension base="personinfo">
12
<xs:sequence>
13
<xs:element name="address" type="xs:string"/>
14
<xs:element name="city" type="xs:string"/>
15
<xs:element name="country" type="xs:string"/>
16
</xs:sequence>
17
</xs:extension>
18
19 </xs:complexContent>
20</xs:complexType>
En el ejemplo de arriba podemos ver las definiciones de:

o
o
o

Un tipo compuesto denominado personinfo


Un tipo compuesto fullpersoninfo, definido como una extension del tipo personinfo. Esto se
hace empleando los tags <xs:complexContent> y <xs:extension>.
Un elemento employee del tipo fullpersoninfo

Indicadores
Existen siete indicadores que pueden ser utilizados en la definicin de un tipo compuesto.

Indicadores de orden:
o
o
o

<xs:all></xs:all> Los elementos que contiene pueden aparecer en cualquier orden.


<xs:choice></xs:choice> Slo puede aparecer uno de los elementos que contiene
<xs:sequence></xs:sequence> Los elementos que contiene deben aparecer exactamente en el
mismo orden en que estn definidos

Indicadores de ocurrencia:
Por defecto, los elementos definidos como parte de un tipo compuesto deben aparecer exactamente una vez. Los
atributos maxOccurs and minOccurs modifican este requisito:

o
o

maxOccurs=n Atributo que indica que el elemento puede aparecer varias veces, hasta un
mximo de n veces. Si especificamos maxOccurs=unbounded, el elemento puede aparecer un
nmero indefinido de veces.
minOccurs=n Atributo que indica que el elementos debe aparecer un mnimo de n veces.
minOccurs=0, significa que el elemento es opcional, y puede no aparecer.

Indicadores de grupo:
o

Group name Podemos definir y asignar un nombre a un grupo de elementos de la forma


<xs:group name=nombre_grupo></xs:group>.
Una vez definido, en la definicin de un tipo de datos compuesto podemos hacer referencia al
mismo utilizando la sintaxis <xs:group ref=nombre_grupo/>
attributeGroup name De la misma forma, podemos definir y asignar un nombre a un grupo de
atributos de la forma <xs:attributeGroup name=nombre_grupo></xs:attributeGroup>
Una vez definido, podemos hacer referencia a dicho grupo con la sintaxis <xs:attributegroup
ref=nombre_grupo/>

Referencia WEB: http://www.w3schools.com/xml/schema_intro.asp

Вам также может понравиться