XML SCHEMA (XSD) Introducción a XML

Documentos relacionados
Tabla de Contenidos. Diseño Basado en Componentes. DTD y XML Schema DTD. DTD. Declaración de tipo (i) Plantillas de validación de documentos XML

Clase 03. WSDL y más XML. Mg. A. G. Stankevicius. Segundo Cuatrimestre

XML Schema. Departamento de Informática Universidad de Oviedo

DTD y XML SCHEMA. Ingeniería de la Información

Descripción. Atributos. Version Descripción Uso Valor Prefijado 1.0 Tipo Base. Atributo requerido que indica la versión del complemento.

Estructura Elementos Elemento: Fideicomisonoempresarial Diagrama

Contenido. Complemento de SPEI de Tercero a Tercero

Contenido. Complemento Leyendas Fiscales. Estructura

Contenido. Complemento PFintegranteCoordinado

Contenido. Complemento Concepto de Instituciones Educativas Privadas

Contenido. Complemento para Gastos del Consorcio derivados de la Ejecución de un Contrato de Exploración o Extracción de Hidrocarburos.

Descripción Complemento para incorporar información de servicios parciales de construcción de inmuebles destinados a casa habitación.

Estructura Elementos Elemento: obrasarteantiguedades Diagrama

Complemento para expresar los pagos que se realizan a residentes en el extranjero

Contenido. Complemento Concepto Para Acreditamiento del IEPS

Estructura Elementos Elemento: Arrendamientoenfideicomiso Diagrama

Tema IV. XML IV. XML Schemas

Descripción Complemento para la expedición de comprobantes fiscales por la donación en la facilidad fiscal de Pago en Especie Atributos

Contenido. Complemento Nomina. Estructura

Contenido. Complemento Donatarias

Estructura. Elementos Elemento: NotariosPublicos Diagrama

Documentación GT_Complemento_Cambiaria xsd Factura Electrónica en Línea

Estructura Elementos Elemento: certificadodedestruccion Diagrama

Estructura. Elementos Elemento: Premios Diagrama. Complemento para expresar los premios obtenidos en un periodo o ejercicio.

Presentación de inspecciones de ascensores

Documentación GT_Complemento_Referencia_Nota xsd Factura Electrónica en Línea

Estructura Elementos Elemento: ConsumoDeCombustibles Diagrama

Introducción y características.

Estructura. Elementos Elemento: Intereseshipotecarios Diagrama. Contenido. Complemento de Intereses hipotecarios

Contenido. Complemento Concepto VentaVehiculos

Definir las características y contenido de los archivos donde se reporta la Identificación subordinadas del exterior.

Contenido. Formato SelloDigitalContElec. Se deberá utilizar el siguiente estándar XSD, validando su forma y sintaxis en un archivo con extensión XML.

DESCRIPCIÓN DE LOS FORMATOS DE FICHEROS DE INTERCAMBIO DE CANDIDATOS A OBTENER CÓDIGO DE IDENTIFICACIÓN ESCOLAR (CIE)

Contenido. Complemento Consumo de Combustibles.

Anexo 26-BIS de la Resolución Miscelánea Fiscal para Códigos de Seguridad para la Industria Tabacalera a través de servicios

Validación de un XML

Resolución No XX (28 OCT 2016) Anexo No. 11 Especificaciones Técnicas FONDO DE CESANTIAS Formato Versión 1

El formato 2530 Información de Fundadores, debe enviarse en uno o varios archivos XML que cumplan las siguientes especificaciones:

MANUAL TÉCNICO Sistema Declaración Informativa de Máquinas Fiscales (DIMAFI) Versión 1.1

Resolución ( 8 de Marzo del 2016 ) Anexo No. 6 Especificaciones Técnicas FONDO DE CESANTIAS Formato Versión 1

Definir las características y contenido de los archivos donde se reporta la Relación de IVA Descontable por Importaciones.

UAFSE-FSE2007 FSE2007. Formato de fichero de Indicadores. Formato de fichero de Indicadores FSE2007. Página 1 de 9. Versión: v1.0 Fecha : 14/07/2008

Definir las características y contenido de los archivos, donde se reporta la Información de Estados financieros consolidados-grupos económicos.

Resolución ( 8 de Marzo del 2016 ) Anexo No. 5 Especificaciones Técnicas FONDOS DE PENSIONES OBLIGATORIAS Formato Versión 1

Resolución No X (28 OCT 2016) Anexo No. 59 Especificaciones Técnicas INFORMACION DE LA COMPRA DE BONOS ELECTRONICOS Formato Versión 1

Definir las características y contenido de los archivos donde se reporta la Información de las Declaraciones Tributarias.

Definir las características y contenido de los archivos, donde se reporta la Información de Estados financieros consolidados-grupos económicos.

Definir las características y contenido de los archivos correspondientes al formato 1480 versión 9 donde se reporta INFORMACION VEHICULOS.

Contenido. Complemento Concepto PorCuentadeTerceros

Definir las características y contenido de los archivos donde se reportan los Descuentos tributarios.

Martes 29 de septiembre de 2015 DIARIO OFICIAL (Tercera Sección) 37

Proveedores de Servicio de generación y envío de Comprobantes Fiscales Digitales. Contenido. Módulo <Complemento>

Tecnología XML. Unidad: 3 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Protocolo para el envío de Información DATOS DE DECLARACIONES DEL SECTOR VITIVINÍCOLA (INFOVI) Gestión de Mercados del Sector Vitivinícola (INFOVI)

Resolución del 29 de Octubre de 2015 Anexo No. 12 Especificaciones Técnicas DESCUENTOS TRIBUTARIOS SOLICITADOS Formato Versión 7

Contenido. Complemento Concepto VentaVehiculos

El formato debe enviarse en un archivo XML que cumpla las siguientes especificaciones.

Resolución No XX (28 OCT 2016) Anexo No. 9 Especificaciones Técnicas FONDOS DE PENSIONES OBLIGATORIAS Formato Versión 1

SGML (Standard Generalized Markup Language)

Definir las características y contenido de los archivos donde se reporta el Impuesto a las ventas por pagar (Descontable).

Encabezado Contenido Información 1 Contenido Información 2... Contenido Información N

Definir las características y contenido de los archivos donde se reportan el Impuesto a las Ventas por Pagar (Generado) e Impuesto al Consumo..

Tomo DCCXXV No. 12 México, D.F., lunes 17 de febrero de 2014 CONTENIDO

Impuesto a las Ventas por Pagar (Descontable) Formato Versión 7

El formato debe enviarse en un archivo XML que cumpla las siguientes especificaciones.

Encabezado Contenido Información 1 Contenido Información 2... Contenido Información N

Definir las características y contenido de los archivos, donde se reporta la Información de Estados financieros consolidados-grupos económicos.

XML Schema. Departamento de Informática Universidad de Oviedo

Impuesto A Las Ventas Por Pagar (Generado) E Impuesto Al Consumo En Consorcios Y Uniones Temporales Formato Versión 2

El nombre de cada uno de los archivos, debe especificarse mediante la siguiente secuencia de caracteres:

Resolución No XX (28 OCT 2016) Anexo No. 10 Especificaciones Técnicas FONDOS DE PENSIONES VOLUNTARIAS Formato Versión 8

Definir las características y contenido de los archivos, donde se reporta la Elaboración de facturación por litógrafos y tipógrafos.

ESPECIFICACIÓN DE REQUISITOS PARA EL TRATAMIENTO Y ENVÍO DE DATOS DE TELESEGUIMIENTO DE BIOMCASA, SOLCASA Y GEOCASA

RESOLUCIÓN No (OCT. 26/06) Anexo No. 09 Especificaciones Técnicas

Definir las características y contenido de los archivos donde se reporta el Ventas con tarjetas de crédito

Versión 1.1 del Complemento de Comercio Exterior para CFDI (especificaciones técnicas)

Resolución No. ( ) Anexo No. 2 Especificaciones Técnicas INFORMACIÓN DE REGISTROS CATASTRALES Y DE IMPUESTO PREDIAL Formato Versión 10

Definir las características y contenido de los archivos donde se reporta la información de registros catastrales y de impuesto predial.

Encabezado Contenido Información 1 Contenido Información 2... Contenido Información N

Impuesto a las Ventas por Pagar (descontable) en Consorcios y Uniones Temporales Formato Versión 1

Definir las características y contenido de los archivos correspondientes al formato 1480 versión 9 donde se reporta información de Vehículos.

Relación de Ingresos por Reaprovisionamiento de Buques o Aeronaves. Formato Versión 1

Resolución del 29 de Octubre de 2015 Anexo No. 2 Especificaciones Técnicas FONDOS DE PENSIONES VOLUNTARIAS Formato Versión 8

Definir las características y contenido de los archivos donde se reportan los Descuentos tributarios.

Transcripción:

XML SCHEMA (XSD) Introducción a XML

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

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

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

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

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

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".

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:schema>

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>

Declaración en el esquema Prefijo Elementos y tipos del esquema vienen de www.w3.org/... Elementos definidos <?xml version="1.0"?> (to, from, ) vienen Elemento Namespace por default de www.mysite.com raíz <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.mysite.com" xmlns="http://www.mysite.com" elementformdefault="qualified">...... </xs:schema> Namespace qualified

Referencia al XML Schema <?xml version="1.0"?> <note Los elementos usados están declarados en este namespace Namespace de la instancia xmlns="http://www.mysite.com" del XML Schema 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> Namespace <body>don't forget me this weekend!</body> </note> Nombre y ubicación del XML Schema

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

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

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"/> <?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> Definición

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"/>

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;

Validador de XSL y XML public class XSDValidator { public static void main(string[] args) { if(args.length!=2){ System.out.println("Usage : XSDValidator <filename.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]); } } }

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; }

Prueba Javac XSDValidator.java Java XSDValidator note.xsd note.xml

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

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

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> <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> ----- Incluir texto </xs:schema>

XSD: Restricciones en los tipos de datos

XSD: Restricciones en un conjunto de valores 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: <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> El tipo cartype puede ser utilizado por otros elementos, ya que no es parte del elemento de "coche". </xs:simpletype> <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>

XSD: Restricciones en una serie de valores Uso de patrones restricción, solo una letra minúscula <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpletype> Uso de patrones restricción, tres letras mayúsculas <xs:element name="initials"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-z][a-z][a-z]"/> </xs:restriction> </xs:simpletype>

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> Uso de patrones restricción, solo una letra x, y, z <xs:element name="choice"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpletype>

XSD: Restricciones en una serie de valores Cinco dígitos en secuencia <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> Cero o más letras en secuencia <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpletype>

XSD: Restricciones en una serie de valores Conjunto de letras (uno o más), iniciando con una minúscula y una mayúscula <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][a-z])+"/> </xs:restriction> </xs:simpletype> Sólo uno male o female <xs:element name="gender"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="male female"/> </xs:restriction> </xs:simpletype>

XSD: Restricciones en una serie de valores Exactamente 8 letras minúsculas o mayúsculas <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z]{8}"/> </xs:restriction> </xs:simpletype> Exactamente 8 letras minúsculas, mayúsculas o números <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z0-9]{8}"/> </xs:restriction> </xs:simpletype>

XSD: Restricciones sobre los caracteres de espacio 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 <xs:element name="address"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:whitespace value="preserve"/> </xs:restriction> </xs:simpletype> <xs:element name="address"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:whitespace value="replace"/> </xs:restriction> </xs:simpletype>

XSD: Restricciones sobre los caracteres de espacio 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) <xs:element name="address"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:whitespace value="collapse"/> </xs:restriction> </xs:simpletype>

XSD: Restricciones sobre la longitud Para limitar la longitud de un valor en un elemento, usamos las restricciones de length, maxlength y minlength. <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpletype> El valor debe ser exactamente ocho caracteres: el valor debe ser mínimo cinco caracteres y máximo ocho caracteres: <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:minlength value="5"/> <xs:maxlength value="8"/> </xs:restriction> </xs:simpletype>

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

XSD: 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 <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>

XSD: Definición de un elemento complejo Employee contiene otros elementos complejos <employee> <firstname>john</firstname> <lastname>smith</lastname> </employee> Declarado directamente cada elemento Los elementos hijos deben aparecer en el mismo orden en que se declaran. <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> Definición

XSD: Definición de un elemento complejo <employee> <firstname>john</firstname> <lastname>smith</lastname> </employee> El elemento "employee" puede tener un atributo de tipo que hace referencia al nombre del tipo complejo a usar: <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

XSD: Definición de un elemento complejo Varios elementos pueden referir al mismo tipo 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

XSD: Definición de un elemento complejo También puede ser un elemento base complejo en un elemento complejo existente y añadir algunos elementos, como este: <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>

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> Definición <xs:element name="product"> <xs:complextype> <xs:attribute name="prodid" type="xs:positiveinteger"/> </xs:complextype> <xs:element name="product" type="prodtype"/> <xs:complextype name="prodtype"> <xs:attribute name="prodid" type="xs:positiveinteger"/> </xs:complextype>

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> 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>

XSD: Elementos complejos que contienen solamente texto 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. <xs:element name="somename"> <xs:complextype> <xs:simplecontent> <xs:extension base="basetype">...... </xs:extension> </xs:simplecontent> </xs:complextype> O <xs:element name="somename"> <xs:complextype> <xs:simplecontent> <xs:restriction base="basetype">...... </xs:restriction> </xs:simplecontent> </xs:complextype> Expandir o limitar el tipo base simple

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> 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>

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> Hace posible que los datos de tipo caracter aparezcan entre los elementos hijo de 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> Definición

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

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

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>

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>

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>

Indicadores de ocurrencia Indicadores maxoccurs y minoccurs (número de veces que un elemento hijo puede ocurrir) <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 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> maxoccurs="unbounded"

</persons> XSD: Ejercicio (Escribir archivo XSD para Familia.xml) <?xml version="1.0" encoding="iso-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" 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>

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:sequence> </xs:complextype> </xs:schema>

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>