Professional Documents
Culture Documents
Agenda (1/2)
Lo que vamos a ver en esta seccin
XML Schema
XSD
Schema
Tipos XSD
- Tipos simples
- Tipos complejos
- Tipos de datos
Agenda (2/2)
Lo que vamos a ver en esta seccin
DTD
Introduccin a los DTD.
Bloques de construccin.
Elementos.
Atributos.
Entidades.
Validaciones.
Ejemplos.
XSD
XSD
XSD (XML Schema Definition)
Describe la estructura de un documento XML.
Es una alternativa en XML a los DTD.
Qu define un XSD?
Elementos vlidos.
Atributos de los elementos.
Qu elementos son hijos de otros.
Cuntos hijos y en qu orden.
Elementos vacos o que pueden tener texto.
Tipos de dato de elementos y atributos.
Valores por defecto.
El elemento Schema
Es el elemento raz del esquema
Atributos:
- xmlns:xs= http://www.w3.org/2001/XMLSchema
Elementos y tipos de datos del esquema.
- targetNamespace="http://www.w3schools.com"
Namespace del que vienen los elementos definidos.
- xmlns="http://www.w3schools.com"
Namespace por defecto
- elementFormDefault="qualified
Usar el cualificador (prefijo) del namespace
Referenciando un XSD
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd"
<?xml version="1.0"?>
<note xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Ejemplo No. 1
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XSD
XML
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Tipos XSD
Tipos Ms Comunes:
- xs:string
xs:boolean
- xs:decimal
xs:date
- xs:integer
xs:time
Ver:
- http://www.w3schools.com/schema/schema_facets.asp
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
De conjunto de valores:
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:pattern value="[a-z]"/>
<xs:pattern value="male|female"/>
De longitud:
<xs:length value="8"/>
Tipos complejos
Son elementos XML que contienen otros elementos o
atributos. Pueden ser:
- Elementos vacos.
- Elementos que contiene solo otros elementos.
- Elementos que contienen solo texto.
- Elementos que contienen otros elementos y texto.
- Todos los anteriores pueden incluir atributos.
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="letter">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs:element name="shipdate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
DTD
DTD
El propsito de un DTD (Document Type Definition) es
definir los bloques de construccin legales de un
documento XML.
Un DTD define la estructura del documento con una lista
de elementos y atributos legales.
Un DTD puede ser declarado dentro de un documento
XML document, o mediante una referencia externa.
Declaracin interna
Si el DTD es declarado dentro del archivo XML, slo basta
con encerrarlo en una definicin DOCTYPE con la
siguiente sintaxis:
<!DOCTYPE root-element [element-declarations]>
Declaracin externa
Si el DTD es declarado en un archivo externo, slo basta
con tener una definicin DOCTYPE con la siguiente
sintaxis:
<!DOCTYPE root-element SYSTEM "filename">
Elementos
Attributos
Entidades.
PCDATA.
CDATA.
Declarando elementos
En una DTD, los elementos XML se incluyen en una
declaracin similar a la del DOCTYPE, pero usando el tipo
ELEMENT, con la siguiente sintaxis:
<!ELEMENT nombre-del-elemento categoria>
Elementos vacos
Los elementos vacos son declarados con la palabra clave
o categora EMPTY:
<!ELEMENT nombre-del-elemento EMPTY>
Ejemplo:
<!ELEMENT mensaje EMPTY>
Ejemplo:
<!ELEMENT para (#PCDATA)>
Ejemplo:
<!ELEMENT contenido ANY>
Ejemplo:
<!ELEMENT mensaje (para,de,encabezado,cuerpo)>
mensaje (para,de,encabezado,cuerpo)>
para (#PCDATA)>
de (#PCDATA)>
encabezado (#PCDATA)>
cuerpo (#PCDATA)>
Para el ejemplo:
<!ELEMENT mensaje (contenido)>
Para el ejemplo:
<!ELEMENT mensaje (contenido+)>
Para el ejemplo:
<!ELEMENT mensaje (contenido*)>
Para el ejemplo:
<!ELEMENT mensaje (contenido?)>
Contenido mezclado
Aqu se presenta una mezcla de las declaraciones que
anteriormente mencionamos. En este ejemplo, el elemento
mensaje puede contener cero o ms ocurrencias de
caracteres de datos a interpretar o de los elementos para,
de, encabezado o cuerpo:
<!ELEMENT mensaje
(#PCDATA|para|de|encabezado|cuerpo)*>
Declarando atributos
En una DTD, una declaracin de atributo tiene la siguiente
sintaxis:
Declarando atributos
Ejemplo:
Para el DTD
<!ATTLIST pago tipo CDATA "efectivo">
Para el documento XML:
<pago tipo="efectivo" />
Tipos de atributos
Valores requeridos
<!ATTLIST nombre-elemento nombre tipo defecto
#REQUIRED>
En la DTD:
<!ATTLIST persona numero CDATA #REQUIRED>
XML vlido:
<persona numero="5677" />
XML no vlido:
<persona />
Valores implicados
<!ATTLIST nombre-elemento nombre tipo #IMPLIED>
Atributo que no est forzado a tener un valor por defecto.
En la DTD:
<!ATTLIST contacto fax CDATA #IMPLIED>
XML vlido:
<contacto fax="567-8901234" />
XML vlido:
<contacto />
Valores fijos
<!ATTLIST nombre-elemento nombre tipo #FIXED>
Atributo que siempre deber tener un valor fijo.
En la DTD:
<!ATTLIST estudiante institucion CDATA #FIXED
"Politecnico">
XML vlido:
<estudiante institucion="Politecnico" />
XML no vlido:
<estudiante institucion="U de A" />
Valores enumerados
<!ATTLIST elemento atributo (en1|en2|..) defecto>
Atributo que siempre se mueve en un conjunto de valores.
En la DTD:
<!ATTLIST pago tipo (efectivo|cheque) "cheque">
XML vlido:
<pago tipo="efectivo" />
O tambin:
<pago tipo="cheque" />
Referencias
http://www.w3schools.com/xml
http://www.w3schools.com/schema/default.asp
http://validator.w3.org/check
http://www.w3schools.com/schema/schema_elements_ref.asp
http://www.xfront.com/BestPracticesHomepage.html
http://www.w3schools.com/schema/schema_facets.asp
www.presentationpoint.com