XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML...
Transcript of XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML...
![Page 1: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/1.jpg)
XML SCHEMA (XSD) Introducción a XML
![Page 2: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/2.jpg)
XML Schema: Introducción
Un archivo XML Schema:
• Define los elementos que pueden aparecer en un documento
• Define los atributos que pueden aparecer en un documento
• Define que elementos son elementos hijos en la jerarquía
• Define el orden de los elementos hijos
• Define la cantidad de elementos hijos
• Define si un elemento es vacío (empty) o puede incluir texto
• Define los tipos de datos para los elementos y los atributos
• Define los valores por default y fijos para los elementos y los atributos
![Page 3: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/3.jpg)
XML Schema: Introducción
• XML Schemas son extensibles a futuras adiciones
• XML Schemas son más ricos y poderosos que los DTDs
• XML Schemas están escritos de acuerdo a la sintaxis XML
• XML Schemas soportan tipos de datos
• XML Schemas soportan namespaces
![Page 4: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/4.jpg)
Esquema XML (XML Schema)
Soportado por W3C (http://www.w3.org/XML/Schema):
XML Schema was approved as a W3C Recommendation on 2 May 2001 and a second edition incorporating many
errata was published on 28 October 2004
![Page 5: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/5.jpg)
XML Schema: Introducción
Con el soporte de tipos de datos:
• Es fácil describir el contenido del documento que es permisible
• Es fácil validar si los datos son correctos
• Es fácil trabajar con datos provenientes de una base de datos
• Es fácil definir restricciones en los datos (facetas)
• Es fácil definir patrones de datos (formato de los datos)
• Es fácil convertir datos entre diferentes tipos
![Page 6: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/6.jpg)
XML Schema: Introducción
Beneficios de que XML Schema se escriba en XML
• No es necesario aprender un nuevo lenguaje
• Se puede usar el mismo editor de XML
• Se puede usar el mismo parser de XML para verificar la sintaxis de los archivos XML Schema
• Se puede transformar el esquema con XSLT
![Page 7: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/7.jpg)
XML Schema: Comunicación segura de
datos Suponga la siguiente fecha: "03-11-2004“
3 de Noviembre del 2004 o 11de Marzo de 2004?
• Un elemento XML con el tipo de dato siguiente:
• <date type="date">2004-03-11</date>
• Asegura el entendimiento del contenido entre aplicaciones, debido a que el tipo de dato XML conocido como “date” requiere el formato "YYYY-MM-DD".
![Page 8: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/8.jpg)
De DTD a XML Schema <?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>To write Tove!</body> </note>
<!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<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>
</xs:schema>
![Page 9: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/9.jpg)
Referencia al archivo de definición
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "http://www.mysite.com/dtd/note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
<?xml version="1.0"?>
<note
xmlns="http://www.mysite.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mysite.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
![Page 10: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/10.jpg)
Declaración en el esquema
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.mysite.com" xmlns="http://www.mysite.com" elementFormDefault="qualified"> ... ...
</xs:schema>
Elemento
raíz
Elementos y tipos
del esquema vienen
de www.w3.org/...
Prefijo
Elementos definidos
(to, from, …) vienen
de www.mysite.com Namespace por default
Namespace
qualified
![Page 11: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/11.jpg)
Referencia al XML Schema
<?xml version="1.0"?> <note
xmlns="http://www.mysite.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mysite.com note.xsd">
<to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body>
</note>
Los elementos usados
están declarados en este
namespace Namespace de la instancia
del XML Schema
Namespace
Nombre y
ubicación del XML
Schema
![Page 12: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/12.jpg)
Elementos simples
• No puede contener otros elementos o atributos
• Puede contener únicamente “texto”
• Tipos incluidos en la definición XML Schema (boolean, string, date,
etc.), o
• Un tipo personalizado que el usuario puede definir
![Page 13: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/13.jpg)
Sintaxis de los elementos simples
<xs:element name="xxx" type="yyy"/>
• Tipos más comunes:
• xs:string
• xs:decimal
• xs:integer
• xs:boolean
• xs:date
• xs:time
![Page 14: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/14.jpg)
Elementos simples: Ejemplo <lastname>Aguilar</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>
Definición
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/><xs:element
name="dateborn" type="xs:date"/>
</xs:schema>
![Page 15: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/15.jpg)
Valores default y fijo
Elementos simples pueden tener un valor por defecto o un valor fijo
especificado.
Un valor por defecto se asigna automáticamente al elemento cuando no se
especifica ningún otro valor.
En el siguiente ejemplo el valor por defecto es "rojo":
<xs:element name="color" type="xs:string" default="red"/>
Un valor fijo también se asigna automáticamente al elemento, y no se puede
indicar otro valor.
En el siguiente ejemplo el valor fijo es "rojo":
<xs:element name="color" type="xs:string" fixed="red"/>
![Page 16: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/16.jpg)
Validador de XSL y XML //XSDValidator.java
import java.io.File;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
![Page 17: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/17.jpg)
Validador de XSL y XML
public class XSDValidator {
public static void main(String[] args) {
if(args.length !=2){
System.out.println("Usage : XSDValidator <file-name.xsd> <file-name.xml>" );
}else{
boolean isValid = validateXMLSchema(args[0],args[1]);
if(isValid){
System.out.println(args[1] + " is valid against " + args[0]);
}else {
System.out.println(args[1] + " is not valid against " + args[0]);
}
}
}
![Page 18: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/18.jpg)
Validador de XSL y XML public static boolean validateXMLSchema(String xsdPath, String xmlPath){
try {
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File(xsdPath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (IOException e){
System.out.println("Exception: "+e.getMessage());
return false;
}catch(SAXException e1){
System.out.println("SAX Exception: "+e1.getMessage());
return false;
}
return true;
}
}
![Page 19: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/19.jpg)
Prueba
• Javac XSDValidator.java
• Java XSDValidator note.xsd note.xml
![Page 20: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/20.jpg)
Sintaxis de los Atributos
Todos los atributos se declaran como tipos simples.
Los elementos simples no pueden tener atributos. Si un elemento tiene atributos, se considera de tipo complejo.
Pero el atributo siempre es declarado como un tipo simple.
Sintaxis:
<xs:attribute name="xxx" type="yyy"/> • Tipos más comunes:
• xs:string
• xs:decimal
• xs:integer
• xs:boolean
• xs:date
• xs:time
![Page 21: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/21.jpg)
Atributos: Ejemplo
Uso: <lastname lang="EN">Smith</lastname>
Definición: <xs:attribute name="lang" type="xs:string"/>
Los atributos son opcionales por defecto. Para especificar que se requiere el atributo, utilice "use":
<xs:attribute name="lang" type="xs:string" default="EN"/>
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
<xs:attribute name="lang" type="xs:string" use="required"/>
Default, fixed, optional/required
![Page 22: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/22.jpg)
XSD: Restricciones o facetas
Las restricciones son usadas para definir valores aceptables para los elementos o atributos XML. Estas restricciones se llaman facetas.
• Restringiendo valores:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
----- Incluir texto
</xs:schema>
![Page 23: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/23.jpg)
XSD: Restricciones en los tipos de datos
![Page 24: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/24.jpg)
XSD: Restricciones en un conjunto de
valores
<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="car" type="carType"/>
<xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
Para limitar el contenido de un elemento XML a un conjunto de valores
aceptables, usamos la restricción enumeración. El siguiente ejemplo define un
elemento llamado "car" con una restricción. Los únicos valores aceptables son:
Audi, Golf, BMW:
El tipo carType puede ser
utilizado por otros
elementos, ya que no es
parte del elemento de
"coche".
![Page 25: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/25.jpg)
XSD: Restricciones en una serie de
valores <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Uso de
patrones
restricción,
solo una letra
minúscula
Uso de
patrones
restricción,
tres letras
mayúsculas
![Page 26: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/26.jpg)
XSD: Restricciones en una serie de
valores <xs:element name="initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Uso de
patrones
restricción,
solo una letra
x, y, z
![Page 27: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/27.jpg)
XSD: Restricciones en una serie de
valores <xs:element name="prodid">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-
9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Cinco dígitos en
secuencia
Cero o más
letras en
secuencia
![Page 28: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/28.jpg)
XSD: Restricciones en una serie de
valores <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Conjunto de
letras (uno o
más), iniciando
con una
minúscula y una
mayúscula
Sólo uno male o
female
![Page 29: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/29.jpg)
XSD: Restricciones en una serie de
valores <xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
Exactamente 8
letras
minúsculas o
mayúsculas
Exactamente 8
letras
minúsculas,
mayúsculas o
números
![Page 30: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/30.jpg)
XSD: Restricciones sobre los caracteres
de espacio
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Para especificar cómo los caracteres de espacio en blanco se deben
manipular, usamos la restricción de espacio en blanco.
La restricción de
espacio en blanco
es ajustada a
"preserve", lo que
significa que el
procesador XML no
eliminará cualquier
carácter de
espacio en blanco
El procesador XML
reemplazará todos los
caracteres de espacios en
blanco (saltos de línea,
tabulaciones, espacios y
retornos de carro) con
espacios
![Page 31: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/31.jpg)
XSD: Restricciones sobre los caracteres
de espacio
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
El procesador XML removerá los espacios en blanco redundantes (saltos de línea, tabuladores, espacios son reemplazados con espacios; espacios en blanco antes y después de cada línea son removidos; múltiples espacios en blanco son reducidos a un solo espacio en blanco)
![Page 32: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/32.jpg)
XSD: Restricciones sobre la longitud
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Para limitar la
longitud de un
valor en un
elemento, usamos
las restricciones de
length, maxLength
y minLength.
El valor debe
ser
exactamente
ocho
caracteres:
el valor debe ser
mínimo cinco
caracteres y
máximo ocho
caracteres:
![Page 33: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/33.jpg)
XSD: Elementos complejos
• Un elemento complejo es un elemento XML que contiene otros elementos y/o atributos.
• Existen cuatro tipos de elementos complejos: • Elementos vacíos
• Elementos que contienen solamente otros elementos
• Elementos que contienen solamente texto
• Elementos que contienen tanto otros elementos como texto
![Page 34: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/34.jpg)
XSD: Tipos de elementos complejos
<product pid="1345"/>
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
<food type="dessert">Ice cream</food>
<description> It happened on <date lang="norwegian">03.03.99</date> ....
</description>
Elementos vacíos
Elementos que
contienen solamente
otros elementos
Elementos que
contienen solamente
texto
Elementos que
contienen tanto otros
elementos como
texto
![Page 35: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/35.jpg)
XSD: Definición de un elemento complejo
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
<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>
Definición
Employee contiene otros elementos complejos
Declarado directamente cada elemento
Los
elementos
hijos deben
aparecer en
el mismo
orden en que
se declaran.
![Page 36: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/36.jpg)
XSD: Definición de un elemento complejo
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType> Definición
El elemento "employee" puede tener un atributo de tipo que hace referencia al
nombre del tipo complejo a usar:
![Page 37: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/37.jpg)
XSD: Definición de un elemento complejo
<xs:element name="employee" type="fullpersoninfo"/> <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:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> Definición
Varios elementos pueden referir al mismo tipo complejo
![Page 38: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/38.jpg)
XSD: Definición de un elemento complejo
<xs:element name="employee" type="fullpersoninfo"/> <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:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
También puede ser un elemento base complejo en un elemento complejo existente
y añadir algunos elementos, como este:
![Page 39: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/39.jpg)
XSD: Elementos complejos vacíos <product prodid="1345" />
<xs:element name="product">
<xs:complexType>
<xs:complexContent>
<xs:restriction base="xs:integer">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element> Definición
<xs:element name="product"> <xs:complexType> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType> </xs:element>
<xs:element name="product" type="prodtype"/> <xs:complexType name="prodtype"> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType>
![Page 40: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/40.jpg)
XSD: Elementos complejos que contienen
solamente elementos <person> <firstname>John</firstname> <lastname>Smith</lastname> </person>
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> Definición
<xs:element name="person" type="persontype"/> <xs:complexType name="persontype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence>
</xs:complexType>
![Page 41: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/41.jpg)
XSD: Elementos complejos que contienen
solamente texto <xs:element name="somename"> <xs:complexType> <xs:simpleContent> <xs:extension base="basetype"> .... .... </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> O <xs:element name="somename"> <xs:complexType> <xs:simpleContent> <xs:restriction base="basetype"> .... .... </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element>
Expandir o limitar
el tipo base simple
Este tipo sólo contiene
contenido simple (texto
y atributos), por lo
tanto, añadimos un
elemento simpleContent
a todo el contenido. Al
utilizar contenido
simple, debe definir una
extensión o una
restricción en el
elemento
simpleContent.
![Page 42: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/42.jpg)
XSD: Elementos complejos que contienen
solamente texto
<shoesize country="france">35</shoesize>
<xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> Definición
<xs:element name="shoesize" type="shoetype"/> <xs:complexType name="shoetype"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType>
![Page 43: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/43.jpg)
XSD: Elementos complejos mixtos
<letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter>
<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>
Definición
Hace posible que los
datos de tipo caracter
aparezcan entre los
elementos hijo de
“letter”
![Page 44: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/44.jpg)
XSD: Elementos complejos mixtos
<letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter>
<xs:element name="letter" type="lettertype"/> <xs:complexType name="lettertype" 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>
Definición
![Page 45: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/45.jpg)
XSD: Indicadores
Existen siete tipos de indicadores:
• Indicadores de orden: • All
• Choice
• Sequence
• Indicadores de ocurrencia: • maxOccurs
• minOccurs
• Indicadores de grupo: • Group name
• attributeGroup name
![Page 46: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/46.jpg)
Indicadores de orden: ALL
Especifica que los elementos hijo pueden aparecer en cualquier
orden, y que cada elemento hijo puede ocurrir solamente una vez.
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
![Page 47: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/47.jpg)
Indicadores de orden: CHOICE
Especifica que los elementos hijo puede aparecer
(uno o el otro).
<xs:element name="person">
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>
![Page 48: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/48.jpg)
Indicadores de orden: SEQUENCE
Especifica que los elementos hijo deben aparecer en estricta
secuencia, tal y como se han definido.
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
![Page 49: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/49.jpg)
Indicadores de ocurrencia
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string“
maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element>
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>
Indicadores maxOccurs y minOccurs (número de veces que un elemento
hijo puede ocurrir)
maxOccurs="unbounded"
![Page 50: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/50.jpg)
XSD: Ejercicio (Escribir archivo XSD para Familia.xml)
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="familia.xsd"> <person> <full_name>Hege Refsnes</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>Tove Refsnes</full_name> <child_name>Hege</child_name> <child_name>Stale</child_name> <child_name>Jim</child_name> <child_name>Borge</child_name> </person> <person> <full_name>Stale Refsnes</full_name> </person> </persons>
![Page 51: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/51.jpg)
XSD: Respuesta a Práctica 8 (Archivo Familia.xsd para Familia.xml)
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs=“unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
![Page 52: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/52.jpg)
Ejercicio • Obtener el correspon-
diente archivo XSD
<?xml version="1.0"?>
<class>
<student rollno="393">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
<student rollno="493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>Vinni</nickname>
<marks>95</marks>
</student>
<student rollno="593">
<firstname>Jasvir</firstname>
<lastname>Singh</lastname>
<nickname>Jazz</nickname>
<marks>90</marks>
</student>
</class>
![Page 53: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/53.jpg)
Solución <?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name='class'>
<xs:complexType>
<xs:sequence>
<xs:element name='student' type='StudentType'
minOccurs='0' maxOccurs='unbounded' />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="StudentType">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="nickname" type="xs:string"/>
<xs:element name="marks" type="xs:positiveInteger"/>
</xs:sequence>
<xs:attribute name='rollno' type='xs:positiveInteger'/>
</xs:complexType>
</xs:schema>
![Page 54: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/54.jpg)
XSD: Indicadores de grupo Grupos de elementos (Se debe usar ALL, CHOICE o SEQUENCE)
<xs:group name="groupname"> ... </xs:group>
<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo"> <xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType>
Indicadores
de grupo se
utilizan para
definir
conjuntos
relacionados
de elementos.
![Page 55: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/55.jpg)
XSD: Indicadores de grupo Grupo de atributos
<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>
Indicadores
de grupo se
utilizan para
definir
conjuntos
relacionados
de elementos.
![Page 56: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/56.jpg)
XSD: Definiciones extensibles Motivación <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<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:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
![Page 57: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/57.jpg)
XSD: Definiciones extensibles
Motivación
<person> <firstname>Hege</firstname> <lastname>Refsnes</lastname> <children> <childname>Cecilie</childname> </children> </person> <person> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="persons.xsd">
<person>
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
</person>
<person>
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
![Page 58: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/58.jpg)
XSD: Definiciones extensibles <any>
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:any minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.mysite.com" xmlns="http://www.mysite.com" elementFormDefault="qualified"> <xs:element name="children"> <xs:complexType> <xs:sequence> <xs:element name="childname" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
El elemento <any> nos
permite ampliar el
documento XML con
elementos no
especificados por el
esquema.
![Page 59: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/59.jpg)
XSD: Definiciones extensibles <any>
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns="http://www.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd http://www.mysite.com children.xsd"> <person> <firstname>Hege</firstname> <lastname>Refsnes</lastname> <children> <childname>Cecilie</childname> </children> </person> <person> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons>
![Page 60: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/60.jpg)
XSD: Definiciones extensibles Motivación
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns="http://www.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd"> <person gender="female"> <firstname>Hege</firstname> <lastname>Refsnes</lastname> </person> <person gender="male"> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons>
![Page 61: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/61.jpg)
XSD: Definiciones extensibles <anyAttribute>
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:element>
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www. mysite.com" xmlns="http://www.mysite.com" elementFormDefault="qualified"> <xs:attribute name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:schema>
![Page 62: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/62.jpg)
XSD: Definiciones extensibles <anyAttribute>
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns="http://www.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd http://www.mysite.com attribute.xsd"> <person gender="female"> <firstname>Hege</firstname> <lastname>Refsnes</lastname> </person> <person gender="male"> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons>
![Page 63: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/63.jpg)
XSD: Manejando idiomas (Bloqueando la sustitución de elementos)
<customer> <name>John Smith</name> </customer>
<cliente> <nombre>John Smith</nombre> </cliente>
<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="nombre" substitutionGroup="name"/>
<xs:complexType name="custinfo">
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>
<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name=“nombre" substitutionGroup="customer"/>
![Page 64: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/64.jpg)
XSD: Sustitución de elementos
El uso correcto de substitutionGroup:
• El tipo de los elementos sustituibles debe ser el mismo o derivado del tipo del elemento principal. Si el tipo del elemento sustituible es el mismo que el tipo del elemento principal, entonces no es necesario especificar el tipo del elemento sustituible.
• Todos los elementos en substitutionGroup (el elemento principal y los elementos sustituibles) debe ser declarados como elementos globales, de otro modo no funcionara.
Que son los elementos globales?
• Los elementos globales son aquellos que son hijos inmediatos del elemento del "schema“.
• Los elementos locales son aquellos que se encuentran anidados dentro de otros elementos.
![Page 65: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/65.jpg)
XSD: Práctica 9 (Despacho de órdenes, construye el XSD) <?xml version="1.0" encoding="ISO-8859-1"?> <shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson> <shipto> <name>Ola Nordmann</name> <address>Langgt 23</address> <city>4000 Stavanger</city> <country>Norway</country> </shipto> <item> <title>Empire Burlesque</title> <note>Special Edition</note> <quantity>1</quantity> <price>10.90</price> </item> <item> <title>Hide your heart</title> <quantity>1</quantity> <price>9.90</price> </item> </shiporder>
![Page 66: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/66.jpg)
XSD: Respuesta a Práctica 9 <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="item" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string" minOccurs="0"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>
![Page 67: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/67.jpg)
Diseño: dividiendo el esquema
• Definir todos los elementos y atributos primero, y
redireccionar a ellos usando el atributo ref: <?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>
![Page 68: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/68.jpg)
<!-- definition of complex elements -->
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="note" minOccurs="0"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element ref="item"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="orderid" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
![Page 69: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/69.jpg)
XSD: Respuesta alternativa a Práctica 9 <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- definition of simple elements --> <xs:element name="orderperson" type="xs:string"/> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> <!-- definition of attributes --> <xs:attribute name="orderid" type="xs:string"/> <!-- definition of complex elements --> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element ref="address"/> <xs:element ref="city"/> <xs:element ref="country"/> </xs:sequence> </xs:complexType> </xs:element>
<xs:element name="item"> <xs:complexType> <xs:sequence> <xs:element ref="title"/> <xs:element ref="note" minOccurs="0"/> <xs:element ref="quantity"/> <xs:element ref="price"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element ref="orderperson"/> <xs:element ref="shipto"/> <xs:element ref="item" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute ref="orderid" use="required"/> </xs:complexType> </xs:element> </xs:schema>
![Page 70: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/70.jpg)
Usando tipos nombrados
• Esto se hace al nombrar los elementos simpleType y
complexType, y luego apunte a ellos a través del atributo
“type” del elemento.
![Page 71: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/71.jpg)
XSD: Respuesta alternativa a Práctica 9 <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="stringtype"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:simpleType name="inttype"> <xs:restriction base="xs:positiveInteger"/> </xs:simpleType> <xs:simpleType name="dectype"> <xs:restriction base="xs:decimal"/> </xs:simpleType> <xs:simpleType name="orderidtype"> <xs:restriction base="xs:string"> <xs:pattern value="[0-9]{6}"/> </xs:restriction> </xs:simpleType> <xs:complexType name="shiptotype"> <xs:sequence> <xs:element name="name" type="stringtype"/> <xs:element name="address" type="stringtype"/> <xs:element name="city" type="stringtype"/> <xs:element name="country" type="stringtype"/> </xs:sequence> </xs:complexType>
<xs:complexType name="itemtype"> <xs:sequence> <xs:element name="title" type="stringtype"/> <xs:element name="note" type="stringtype" minOccurs="0"/> <xs:element name="quantity" type="inttype"/> <xs:element name="price" type="dectype"/> </xs:sequence> </xs:complexType> <xs:complexType name="shipordertype"> <xs:sequence> <xs:element name="orderperson" type="stringtype"/> <xs:element name="shipto" type="shiptotype"/> <xs:element name="item" maxOccurs="unbounded" type="itemtype"/> </xs:sequence> <xs:attribute name="orderid" type="orderidtype" use="required"/> </xs:complexType> <xs:element name="shiporder" type="shipordertype"/> </xs:schema>
![Page 72: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/72.jpg)
XSD: Tipos de datos (String)
Tipos de datos usados para valores que contienen
cadenas de caracteres.
• Definición: • <xs:element name="customer" type="xs:string"/>
• Uso: • <customer>John Smith</customer>
• <customer> John Smith </customer>
![Page 73: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/73.jpg)
XSD: Tipos de datos (Derivados de String)
![Page 74: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/74.jpg)
XSD: Tipos de datos (NormalizedString)
• Contienes caracteres, pero el procesador XML removerá los saltos de línea, avances de carro y tabuladores (sustitución con espacios).
• Definición: • <xs:element name="customer" type="xs:normalizedString"/>
• Uso: • <customer>John Smith</customer>
• <customer> John Smith </customer>
![Page 75: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/75.jpg)
XSD: Tipos de datos (Token)
• Contienes caracteres, pero el procesador XML removerá los saltos de línea, avances de carro, tabuladores y múltiples espacios (sustitución con espacios). Adicionalmente, remueve los espacios al inicio y final de cada línea.
• Definición: • <xs:element name="customer" type="xs:token"/>
• Uso: • <customer>John Smith</customer>
• <customer> John Smith </customer>
![Page 76: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/76.jpg)
XSD: Tipos de datos (Restricciones sobre String)
Las restricciones que pueden ser usadas con los
tipos de datos String son las siguientes:
• enumeration
• length
• maxLength
• minLength
• pattern (NMTOKENS, IDREFS, and ENTITIES cannot
use this constraint)
• whiteSpace
![Page 77: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/77.jpg)
XSD: Tipos de datos (Date)
El tipo de dato Date especifica una fecha y debe ser especificado de la siguiente manera “YYYY-MM-DD“, donde:
• YYYY indica el año
• MM indica el mes
• DD indica el día
• Definición: • <xs:element name="start" type="xs:date"/>
• Uso: • <start>2002-09-24</start>
• Zona: • <start>2002-09-24Z</start>
• <start>2002-09-24-06:00</start>
• <start>2002-09-24+06:00</start>
![Page 78: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/78.jpg)
XSD: Tipos de datos (Time)
El tipo de dato Time especifica una hora y debe ser especificado de la siguiente manera “hh:mm:ss“, donde:
• hh indica la hora
• mm indica el minuto
• ss indica el segundo
• Definición: • <xs:element name="start" type="xs:time"/>
• Uso: • <start>09:00:00</start>
• <start>09:30:10.5</start>
• Zona: • <start>09:30:10Z</start>
• <start>09:30:10-06:00</start>
• <start>09:30:10+06:00</start>
![Page 79: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/79.jpg)
XSD: Tipos de datos (DateTime) El tipo de dato DateTime especifica una fecha con una determinada hora y debe ser especificado de la siguiente manera “YYYY-DD-MMThh:mm:ss“, donde:
• YYYY indica el año
• MM indica el mes
• DD indica el día
• T indica el inicio de la sección hora requerida
• hh indica la hora
• mm indica el minuto
• ss indica el segundo
• Definición: • <xs:element name="startdate" type="xs:dateTime"/>
• Uso: • <startdate>2002-05-30T09:00:00</startdate>
• <startdate>2002-05-30T09:30:10.5</startdate>
• Zona: • <startdate>2002-05-30T09:30:10Z</startdate>
• <startdate>2002-05-30T09:30:10-06:00</startdate>
• <startdate>2002-05-30T09:30:10+06:00</startdate>
![Page 80: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/80.jpg)
XSD: Tipos de datos (Duration)
El tipo de dato Duration es usado para especificar un intervalo de tiempo y debe ser especificado de la siguiente manera “PnYnMnDTnHnMnS“, donde:
• P indica el periodo (requerido)
• nY indica el número de años
• nM indica el número de meses
• nD indica el número de días
• T indica el inicio de la sección hora (en caso de usar horas)
• nH indica el número de horas
• nM indica el número de minutos
• nS indica el número de segundos
• Definición: • <xs:element name="period" type="xs:duration"/>
• Uso: • <period>P5Y</period>
• <period>P5Y2M10D</period>
• <period>P5Y2M10DT15H</period>
• <period>PT15H</period>
• Intervalo negativo: • <period>-P10D</period>
![Page 81: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/81.jpg)
XSD: Tipos de datos (Date y Time)
![Page 82: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/82.jpg)
XSD: Tipos de datos (Restricciones en Date y Time)
Las restricciones que pueden ser usadas con los
tipos de datos Date/Time son las siguientes:
• enumeration
• maxExclusive
• maxInclusive
• minExclusive
• minInclusive
• pattern
• whiteSpace
![Page 83: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/83.jpg)
XSD: Tipos de datos (Numeric: Decimal o Integer)
Valores Numéricos con Decimales Definición:
• <xs:element name="prize" type="xs:decimal"/> • Uso:
• <prize>999.50</prize>
• <prize>+999.5450</prize>
• <prize>-999.5230</prize>
• <prize>0</prize>
• <prize>14</prize>
Valores Numéricos sin Decimales (Enteros) • Definición:
• <xs:element name="prize" type="xs:integer"/>
• Uso: • <prize>999</prize>
• <prize>+999</prize>
• <prize>-999</prize>
• <prize>0</prize>
![Page 84: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/84.jpg)
XSD: Tipos de datos (Restricciones en Numeric)
Las restricciones que pueden ser usadas con los tipos de datos Numeric son las siguientes:
• enumeration
• fractionDigits
• maxExclusive
• maxInclusive
• minExclusive
• minInclusive
• pattern
• totalDigits
• whiteSpace
![Page 85: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/85.jpg)
XSD: Tipos de datos (Numeric)
![Page 86: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/86.jpg)
XSD: Otros Tipos de Datos
boolean, base64Binary, hexBinary, float, double, anyURI, QName, and NOTATION.
boolean
• Definición: • <xs:attribute name="disabled" type="xs:boolean"/>
• Uso: • <prize disabled="true">999</prize>
![Page 87: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/87.jpg)
XSD: Otros Tipos de Datos
• base64Binary (Base64-encoded binary data)
• hexBinary (hexadecimal-encoded binary data)
Binary
• Definición: • <xs:element name="blobsrc" type="xs:hexBinary"/>
![Page 88: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/88.jpg)
XSD: Otros Tipos de Datos
boolean, base64Binary, hexBinary, float, double, anyURI,
QName, and NOTATION.
anyURI
• Definición:
• <xs:attribute name="src" type="xs:anyURI"/>
• Uso: • <pic src="http://www.mysite.com/images/smiley.gif" />
![Page 89: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/89.jpg)
XSD: Tipos de datos (Otros tipos)
![Page 90: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/90.jpg)
XSD: Tipos de datos (Restricciones en los otros tipos)
Las restricciones que pueden ser usadas son las siguientes: • enumeration (un tipo de dato Boolean no puede usar esta
restricción)
• length (un tipo de dato Boolean no puede usar esta restricción)
• maxLength (un tipo de dato Boolean no puede usar esta restricción)
• minLength (un tipo de dato Boolean no puede usar esta restricción)
• pattern
• whiteSpace
![Page 91: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/91.jpg)
Esquema: Un ejemplo
<Schema name = "libreria4_esq.xml"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name = "autor" content="textOnly“
dt:type="string">
<description>
<title>Autor</title>
<body>Autor o editor</body>
</description>
</ElementType>
<ElementType name = "titulo" content="textOnly"
dt:type="string">
<description>
<title>Título</title>
<body>Título</body>
</description>
</ElementType>
<ElementType name = "precio" content="textOnly"
dt:type="float">
<description>
<title>Precio</title>
<body>Precio sin IVA</body>
</description>
</ElementType>
<ElementType name = "libro" content="eltOnly" model="closed">
<description>
<title>Libro</title>
<body>Libro de la librería</body>
</description>
<element type="autor" minOccurs="1" maxOccurs="*" />
<element type="titulo" minOccurs="1" maxOccurs="1" />
<element type="precio" minOccurs="1" maxOccurs="1" />
</ElementType>
<ElementType name = "libreria4" content="eltOnly" model="closed">
<description>
<title>Librería</title>
<body>La librería</body>
</description>
<element type="libro" minOccurs="0" maxOccurs="*" />
</ElementType>
</Schema>
NOTAS:
Hacemos referencia a los “name space” de Microsoft
Es importante destacar que el tipo “libro” es una composición (usamos eltOnly) de “autor”, “titulo” y “precio”.
“libreria4” es una composición de elementos del tipo “libro”.
![Page 92: XML Schema (XSD) - cs.buap.mxmtovar/doc/WSO/XML_XSD.pdf · XML Schema: Introducción Un archivo XML Schema: • Define los elementos que pueden aparecer en un documento • Define](https://reader030.fdocuments.net/reader030/viewer/2022021521/5bb23d0d09d3f285758c4573/html5/thumbnails/92.jpg)
XSD: Práctica 10
• Escribir un esquema para archivos XML usando XML Schema, en donde se consideren instancias XML que cumplan las restricciones realizadas en la práctica 5 (catálogo de libros).
• Reescribir el archivo XML para que incluya en su prólogo el correspondiente archivo .xsd.