Vous êtes sur la page 1sur 22

XML

(eXtensible Markup Language Lenguaje extensible de marcas) es un conjunto de reglas que sirven para definir etiquetas semnticas para organizar un documento. Adems el XML es un metalenguaje que te permite disear tu propio lenguaje de etiquetas. A diferencia de un lenguaje de etiquetas normal (HTML), XML te permite definir tu propio lenguaje.. Vindolo desde un punto de vista simple y sin meternos en definiciones muy tcnicas. XML nos ayuda a tener nuestra informacin estructurada jerrquicamente por medio de etiquetas Tags que nosotros mismos crearemos. Ahora, para crear un documento XML no necesitas nada ms que un Procesador de texto simple, Ej.: Bloc de Notas y al terminar el documento solo tienes que salvarlo con la extensin XML. Estructura de un documento XML Para crear un documento XML valido solo necesitas recordar 2 cosas. 1.- Declarar el tipo de documento, <?xml version='1.0'?> Tambin puedes declarar el tipo de codificacin que ocuparas, esto se hace por medio de un atributo. <?xml version='1.0' encoding='UTF-8'?> 2.- Aunque podemos crear nuestras propias etiquetas en el XML estas deben de llevar un orden jerrquico <?xml version='1.0' encoding='UTF-8'?> <Ligue> <Galan>Hola! bailamos</Galan> <Chava>ashhhhhh!!</Chava> </Ligue> para crear un nodo nuevo solo tienes que escribir : <nombredelnodo> para indicar el inicio y </nombredelnodo> para indicar su fin. Dichos nodos, a su vez pueden contener cualquier cantidad de atributos, dichos atributos son fuente de informacin., un ejemplo de tributos: <?xml version='1.0' encoding='UTF-8'?> <Ligue> <Galan nombre='Juan' edad='20'>Hola! bailamos</Galan> <Chava nombre='Maria' edad='19'>ashhhhhh!!</Chava> </Ligue> Se hace ms fcil trabajar con atributos, siempre y cuando la informacin contenida no sea extensa. Al momento de trabajar con informacin extensa y/o caracteres propios del lenguaje: <, > , , " puede haber errores. Por ejemplo si queremos mostrar cdigo mediante XML qu pasa?

<?xml version='1.0'?> <source> for(var a=0; a<10; a++){ trace("Hola Mundo!!") } </source> Esto nos marcara un error de sintaxis ya que en cdigo utilizamos un < Pero este pequeo inconveniente lo podemos arreglar usando CDATA. Lo que CDATA hace es: Simplemente toma todo el texto que esta contenido dentro del tag y lo muestra tal cual. Evitando problemas de sintaxis.. Ejemplo: <?xml version='1.0'?> <source> <![CDATA[ for(var a=0; a<10; a++){ trace("Hola Mundo!!") } ]]> </source>

XML SCHEMAS
Un esquema describe formalmente la estructura abstracta de un conjunto de datos. Un XSchema es un documento que describe el formato vlido de un documento XML. Es algo similar a un DTD, es decir, define qu elementos puede contener un documento XML, cmo estn organizados, y que atributos y de qu tipo pueden tener sus elementos. La ventaja de los schemas con respecto a los DTDs son: Usan sintaxis de XML, al contrario que los DTDs. Permiten especificar los tipos de datos. Permiten utilizar diferentes espacios de nombres (namespace), lo que implica que las reglas para validar ciertos elementos estarn definidas en cierto sitio, mientras que otras reglas estarn en otro sitio. Son extensibles. Por ejemplo, un schema nos permite definir el tipo del contenido de un elemento o de un atributo, y especificar si debe ser un nmero entero, o una cadena de texto, o una fecha, etc. Los DTDs no nos permiten hacer estas cosas. Al restringir el contenido de los ficheros XML es posible intercambiar informacin entre aplicaciones con gran seguridad. Disminuye el trabajo de comprobar la estructura de los ficheros y el tipo de los datos.

XML Schema tiene un enfoque modular que recuerda a la programacin orientada a objetos y que facilita la reutilizacin de cdigo. Los tipos de datos tienen en XML Schema la funcin de las clases en la POO. El usuario puede construir tipos de datos a partir de tipos predefinidos, agrupando elementos y atributos de una determinada forma y con mecanismos de extensin parecidos a la herencia. Los tipos de datos se clasifican en funcin de los elementos y atributos que contienen. Los tipos de datos en XML Schema pueden ser simples o complejos: TIPOS SIMPLES Tipos simples son aquellos que no tienen ni elementos hijos ni atributos. Son tipos simples: Tipos predefinidos de XML: string, double, boolean, etc. List (lista de datos separados por espacios). Union (tipo de dato derivado de la unin de tipos predefinidos). TIPOS COMPLEJOS Son tipos complejos aquellos que tienen elementos hijos y/o atributos. Pueden tener nombre o ser annimos. Si tienen nombre pueden ser reutilizados dentro del mismo XML Schema o por otros XML Schemas. Es posible "mezclar" o combinar elementos y texto. ejemplo vehiculos: <?xml version = "1.0" encoding = "UTF-8"?> <vehiculos xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "vehiculos.xsd" > <nombre>coche</nombre> <nombre>moto</nombre> <nombre>carro</nombre> </vehiculos> El esquema para el ejemplo de los vehiculos: <?xml version = "1.0" encoding = "UTF-8"?> <xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <xsd:element name = "vehiculos"> <xsd:complexType> <xsd:sequence> <xsd:element name = "nombre" type = "xsd:string" maxOccurs = "unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> En cuanto a la declaracin del espacio de nombres en el fichero XML:

La lnea xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" indica que queremos utilizar los elementos definidos en http://www.w3.org/2001/XMLSchema-instance. La lnea xsi:noNamespaceSchemaLocation = "vehiculos.xsd" indica que vamos a usar ese fichero que contiene el XSChema, pero sin asociar un espacio de nombres a esas definiciones. Sin esta lnea, no tendremos esquema de validacin. un elemento debe tener su nombre y su tipo. Los elementos pueden contener tipos de datos simples; pueden ocurrir ms de una vez; y/o pueden tener tipos complejos. <xsd:element name="edad" type="xsd:int" /> <xsd:element name="nombre" type="xsd:string" /> <xsd:sequence> <xsd:element name="edad" type="xsd:int" maxOccurs="unbounded" /> </xsd:sequence> Hay dos tipos de datos que pueden ser definidos por el usuario: complexType y simpleType. Los simples contienen datos, pero no atributo o sub-elementos. <xsd:element name="cadena" type="xsd:string" /> <xsd:element name="entero" type="xsd:int" /> <! un tipo de enteros que va del 1 al 10 --> <xsd:simpleType name="mi_entero" > <xsd:restriction base="xsd:positiveInteger"> <xsd:maxInclusive value="10" /> </xsd:restriction> </xsd:simpleType> Los complejos permiten incluir sub-elementos y/o atributos, y se definen enumerando los elementos incluidos. El contenido de estos tipos puede ser: simpleContent complexContent sequence ELEMENTOS PRINCIPALES DE LOS XMLSCHEMAS attribute: Declara que un atributo de un elemento determinado. Element: Declara que un elemento que puede aparecer como contenido de otro elemento.

Aunque, a primera vista, un documento XML y un documento HTML puedan parecernos muy parecidos, hay una diferencia principal y es que el HTML no indica lo que se est representando, tiene datos mal definidos con elementos de formato, mientras que el XML contiene datos que se autodefinen: describe el contenido de lo que etiquetan. Una forma rpida de entender la estructura de un documento XML es viendo un ejemplo: <?xml version="1.0" encoding="UTF-7" ?> <album> <autor>SABINA Y CIA Nos sobran los motivos</autor> <titulo>Joaqun Sabina</titulo> <formato>MP3</formato> <localizacion>Varios CD5 </localizacion> </album> Cada documento XML posee una estructura lgica y una fsica . La estructura lgica del documento es una serie de declaraciones, elementos, comentarios, etc. que se indican en el documento mediante marcas explcitas. La estructura fsica del documento es una serie de unidades llamadas entidades, es decir, indica los datos que contendr el documento. Las estructuras lgica y fsica deben anidarse de forma correcta.
2.- Documento XML "bien formado"

Todos los documentos XML deben estar bien formado, lo que significa que se debe cumplir lo siguiente: si no se utiliza DTD, el documento debe comenzar con un Declaracin de Documento Standalone todas las etiquetas deben estar balanceadas: esto es, todos los elementos que contengan datos de tipo carcter deben tener etiquetas de principio y fin todos los valores de los atributos deben ir entrecomillados (el carcter comilla simple [el apstrofe] puede utilizarse si el valor contiene caracteres comillas

dobles, y viceversa): si necesitas ambos, utiliza &apos; y &quot; cualquier elemento VACO (p.e. aquellos que no tienen etiqueta final como <IMG>, <HR>, y <BR> y otros de HTML) deben terminar con '/>' o debes hacerlos no VACOS aadindoles una etiqueta de fin. no debe haber etiquetas aisladas (< &) en el texto (p.e. debe darse como &lt; y &amp;), y la secuencia ]]> debe darse como ]]&gt; si no ocurre esto como final de una seccin marcada como CDATA; los elementos deben anidar dentro de s sus propiedades (no se deben sobreponer etiquetas, como en el resto de SGML); Los ficheros bien-formados sin-DTD pueden utilizar atributos en sus elementos, pero stos deben ser todos del tipo CDATA, por defecto. El tipo CDATA (character DATA) son caracteres.. Segn la especificacin de XML del W3C, un documento XML est bien formado si: Tomado como un todo, cumple la regla denominada "document". Respeta todas las restricciones de buena formacin dadas en la especificicacin. Cada una de las entidades analizadas que se referencia directa o indirectamente en el documento est bien formada. Cumplir la regla "document" antes mencionada significa: Que continene uno o ms elementos. Hay exactamente un elemento, llamado raz, o elemento documento, del cual ninguna parte aparece en el contenido de ningn otro elemento. Para el resto de elementos, si la etiqueta de comienzo est en el contenido de algn otro elemento, la etiqueta de fin est en el contenido del mismo elemento. Es decir, los elementos delimitados por etiquetas de principio y final se anidan adecuadamente mutuamente.

3.- Estructura jerrquica de los elementos

Los documentos XML deben tener una estructura jerrquica con lo que respecta a las etiquetas que delimitan sus elementos. Esto significa que los elementos deben estar correctamente anidados y que los elementos no se pueden solapar entre ellos. Adems los elementos con contenido deben estar correctamente cerrados. Ejemplo incorrecto: <?xml version="1.0" ?> <nombre>Richal Ejemplo correcto: <?xml version="1.0" ?> <nombre>Richal </nombre> Slo puede haber un elemento raiz, en el que estn contenidos todos los dems, es decir, la jerarqua de elementos XML slo puede tener un elemento inicial. Ejemplo incorrecto: <?xml version="1.0" ?> <nombre>Richal</nombre> <email>richal@ejemplo.com</email> Ejemplo correcto: <?xml version="1.0" ?> <alumnos> <nombre>Richal</nombre> <email>richal@ejemplo.com</email> </alumnos>
4.- Tipos de letra y fines de lnea

El XML, a diferencia del HTML, es "case sensitive", es decir, trata a las maysculas y las minsculas como caracteres

diferentes. Si un elemento de XML est definido como "Elemento", no podemos usar "elemento" para referirnos a l: Ejemplo con Case sensitive y solapamiento. <?xml version="1.0" ?> <alumnos> <Nombre>Richal</nombre> <email>richal@ejemplo.com</email> <nombre>Chicho</Nombre> <email>chicho@ejemplo.com</email> </alumnos> En la edicin de documentos XML , por claridad, se suele organizar en varias lneas, que, normalmente, se componen de carcter de fin de lnea y otro de retorno de carro. Un parser XML pasa nicamente a la aplicacin el caracter de fin de lnea.
5.- Espacios en blanco

En la edicin de documentos XML, suele ser conveniente utilizar "espacios en blanco" (espacios, tabuladores y lneas en blanco), que normalmente son innecesarios en una versin distribuible a travs de la red, aunque tambin existen ocasiones en los que es deseable la representacin de esos "espacios en blanco" (por ejemplo, cdigo fuente). Para que las aplicaciones preserven la representacin de esos espacios en blanco en un elemento se utiliza el atributo xml:space que puede tomar los valores preserve o default, para conservar los espacios en blanco o aplicar el tratamiento por defecto, respectivamente. Ejemplo <?xml version="1.0"?> <textos> <cita> A quien madruga Dios le ayuda ?</cita> <poema xml:space="preserve"> El monte es verde,

</poema> </textos>

el agua incolora y a mi no se me ocurre una rima

6.- Nombrando cosas

Un nombre en XML empieza con una letra y contina con letras, dgitos, rayas, dos puntos o puntos, denominados de forma global como caracteres de nombre. Los nombre que empiezan por "xml" estn reservados, es decir, no se pueden crear nombres que empiecen por la cadena "xml", "XML", "Xml" o cualquier otra variante, por ejemplo, el atributo xml:space visto en el apartado anterior.
7.- Marcas y datos

Las construcciones como etiquetas, referencias de entidad y declaraciones (ya veremos que es cada cosa) se denominan "marcas". Estas son las parte del documento XML que entiende el parser. El resto del documento que se encuentra entre las marcas, son los datos entendible por las personas. Las marcas en un documento XML son aquellas partes que empiezan con "<" y que acaban con ">" (por ejemplo, <Hola>, o bien, en el caso de las referencias de entidad, empiezan por "&" y acaban con ";" (por ejemplo, &quot; para representar las comillas dobles).

De dnde proviene la denominacin XML?


La sigla XML es la abreviacin de la expresin "Extensible Markup Language", lo que podra traducirse como lenguaje de marcas generalizado. Se trata de un lenguaje utilizado para estructurar la informacin en cualquier documento que contenga texto (por ejemplo: archivos de configuracin de un programa en particular o una base de datos). La razn de su popularidad, que se ha acrecentado a lo largo de los ltimos aos, se debe al hecho de ser un estndar abierto y adems libre, creado por W3C, el consorcio World Wide Web (creadores de la www.), en colaboracin con un equipo de trabajo que incluye representantes de las compaas de software ms importantes. El lenguaje XML fue creado en 1996. Desde ese

momento su utilizacin tuvo un crecimiento sostenido. Como se sabe, HTML contiene un nmero limitado de marcadores. Adems, es imposible utilizar marcadores que no se encuentran en la norma HTML, lo que constituye el principal lmite del lenguaje. HTML se deriva de SGML (Generalized Markup Language, un sistema diseado para la organizacin y etiquetado de documentos, normalizado en 1986 y que se utiliza para especificar reglas de etiquetado de documentos sin imponer ningn conjunto especfico de etiquetas), que se ha utilizado como lenguaje predominante desde hace tiempo para la edicin de documentos electrnicos. Contrariamente al HTML, el SGML puede definir nuevos marcadores si es preciso. Por esto, HTML reagrupa un conjunto de marcadores definido por el SGML.

Entonces, por qu no simplemente utilizar el SGML para disear pginas web?


La razn es que SGML es demasiado complejo para poder ser utilizado en las aplicaciones Web o los navegadores. El Consorcio W3 evalu esta cuestin: cmo sacar provecho de las cualidades de SGML sin tener que afrontar su complejidad? El CW3 propuso, entonces, la norma XML: un lenguaje extensible que conserva las propiedades de SGML pero que est despojado de su complejidad. Con la ayuda de esta nueva norma, los lmites del HTML podrn ser sobrepasados.

Para qu sirve XML?


Por un lado, con la ayuda de XML el usuario puede definir sus propios marcadores. Por ejemplo, el "CDF" (Channel Definition Format) integrado a Microsoft Internet Explorer 4 constituye una aplicacin XML. Por otro lado, XML sirve para definir la estructura de los documentos. El lenguaje XML no slo fue diseado para su aplicacin web sino que es un estndar para el intercambio de informacin entre diferentes instancias. Puede ser utilizado para estructurar bases de datos, editores de texto u hojas de clculo.XML representa la interfaz ideal entre las pginas web y las bases de datos.

Es el fin de HTML?
El XML presenta ventajas importantes para la edicin Web. Sin embargo, HTML est aqu para quedarse. Lo que se prev es ms bien una combinacin de ambas tecnologas: XML para estructurar la informacin y HTML para determinar el modo en el que los datos se exhibirn en el navegador.

Analizadores sintcticos de XML


Han sido desarrollados dos mtodos de analizar sintcticamente un documento XML. En el primer mtodo, DOM (Document Object Model), se lee el documento completo y se identifica su estructura jerrquica. El segundo mtodo, SAX (Standard API for XML), consiste en ir identificando las marcas a medida que se va leyendo el documento.

El segundo mtodo es obviamente ms rpido y consume menos recursos, pero tiene la desventaja de que cada vez que aparece una marca se debe decidir que hacer con ella, y no se puede regresar para atrs en el documento. SAX ha sido desarrollado con aplicaciones de servidor en mente; el servidor debe suministrar rpidamente el resultado de transformar un documento XML. DOM fue desarrollado con aplicaciones de cliente en mente; por ejemplo un editor de XML necesita poder navegar en cualquier direccin la estructura del documento; en este caso el mtodo SAX no sera muy til.
Volver al comienzo

Ventajas del XML


Es extensible: Despus de diseado y puesto en produccin, es posible extender XML con la adicin de nuevas etiquetas, de modo que se lo pueda continuar utilizando sin complicacin alguna. El analizador es un componente estndar, no es necesario crear un analizador especfico para cada versin de lenguaje XML. Esto posibilita el empleo de cualquiera de los analizadores disponibles. De esta manera se evitan errores y se acelera el desarrollo de aplicaciones. Si un tercero decide usar un documento creado en XML, es sencillo entender su estructura y procesarla. Mejora la compatibilidad entre aplicaciones. Podemos comunicar aplicaciones de distintas plataformas, sin que importe el origen de los datos, es decir, podramos tener una aplicacin en Linux con una base de datos Postgre y comunicarla con otra aplicacin en Windows y Base de Datos MS-SQL Server. Transforma datos en informacin, pues les aade un significado concreto y los asocia a un contexto, lo que le otorga flexibilidad para estructurar documentos.

Algunas aplicaciones
Son muchsimas las aplicaciones del XML; y con la existencia de libreras para producir, analizar y transformar XML, disponibles para varios lenguajes de programacin, cada da se usa ms el XML en varios campos muy diversos. Este es un ejemplo de uso del XML para acceder a un catlogo de productos, que puede ser recibido y procesado en un servidor con php, cgi, asp, o algn otro medio que incluya un mtodo de anlisis XML.

<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE response (View Source for full doctype...)> <response generation_date_gmt="Fri, 28 Oct 2006 23:18:42 GMT"> <url>http://www.catalogo.com.ar/jm/searchXml</url> <listing items_from="1" items_to="100" items_total="3582"> <search_properties> <word include_description="N" /> <result_categories> <category id="4708" name="Binoculares y Telescopios" /> </result_categories> </search_properties> <items> <item id="18440672"> <title>Pila Recargable AAA Full Energy</title> <link>http://www.catalogo.com.ar/jm/pms? id=18440672</link> <image_url>http://www.catalogo.com.ar/img/8296.jpg</ima ge_url> </item> <item id="18465530"> <title>Memory Stick 512 Pro-Duo</title> <link>http://www.catalogo.com.ar/jm/pms? id=18465530</link> <image_url>http://www.catalogo.com.ar/img/794.jpg</imag e_url> </item> </items> </listing> </response>

XML SCHEMAS

Un esquema describe formalmente la estructura abstracta de un conjunto de datos. Un XSchema es un documento que describe el formato vlido de un documento XML. Es algo similar a un DTD, es decir, define qu elementos puede contener un documento XML, cmo estn organizados, y que atributos y de qu tipo pueden tener sus elementos. La ventaja de los schemas con respecto a los DTDs son: Usan sintaxis de XML, al contrario que los DTDs. Permiten especificar los tipos de datos.

Permiten utilizar diferentes espacios de nombres (namespace), lo que implica que las reglas para validar ciertos elementos estarn definidas en cierto sitio, mientras que otras reglas estarn en otro sitio. Son extensibles. Por ejemplo, un schema nos permite definir el tipo del contenido de un elemento o de un atributo, y especificar si debe ser un nmero entero, o una cadena de texto, o una fecha, etc. Los DTDs no nos permiten hacer estas cosas. Veamos un ejemplo de un documento bien formado, pero que no est siendo validado ni con DTD ni con XSchema: <?xml version = "1.0" encoding = "UTF-8"?> <vehiculos> <nombre>coche</nombre> <nombre>moto</nombre> <nombre>carro</nombre> </vehiculos> Para validar ese documento, necesitaremos dos cosas: un esquema (que debe estar en un fichero .xsd diferente) referenciar a ese esquema dentro del documento XML El documento XML para el ejemplo de los vehiculos: <?xml version = "1.0" encoding = "UTF-8"?> <vehiculos xmlns:xsi = "http://www.w3.org/2001/XMLSchemainstance" xsi:noNamespaceSchemaLocation = "vehiculos.xsd" > <nombre>coche</nombre> <nombre>moto</nombre> <nombre>carro</nombre> </vehiculos> El esquema para el ejemplo de los vehiculos: <?xml version = "1.0" encoding = "UTF-8"?>

<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <xsd:element name = "vehiculos"> <xsd:complexType> <xsd:sequence> <xsd:element name = "nombre" type = "xsd:string" maxOccurs = "unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Aclaremos algunas cosas que podemos ver en ese ejemplo: En cuanto a la declaracin del espacio de nombres en el fichero XML: La lnea xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" indic a que queremos utilizar los elementos definidos enhttp://www.w3.org/2001/XMLSchema-instance La lnea xsi:noNamespaceSchemaLocation = "vehiculos.xsd" indica que vamos a usar ese fichero que contiene el XSChema, pero sin asociar un espacio de nombres a esas definiciones. Sin esta lnea, no tendremos esquema de validacin. En cuanto a la definicin del XSchema: La lnea xmlns:xsd = "http://www.w3.org/2001/XMLSchema" indica que todos los elementos del XSchema se nombrarn con el prefijo xsd:.

Primer ejemplo de XML y XSchema correspondiente


Veamos un ejemplo de un documento XML, y su schema correspondiente: <?xml version="1.0"?> <persona nacimiento="1999-10-20" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:noNamespaceSchemaLocation="ej_persona.xs d" > <datos> <nombre>Pepe</nombre> <apellidos>Garcia</apellidos> <dni>25390952</dni> </datos> <comentario>buena gente...</comentario> </persona> bajar el ejemplo Como podemos ver en el documento XML anterior, se hace referencia a un ficheroespacio de nombres llamado "ej_persona.xsd". Es decir, le estamos diciendo al analizador sintctico XML (parser) que valide el documento contra el schema "ej_persona.xsd". El schema sera algo parecido a esto: <xsd:schema xmlns:xsd="http://www.w3.org/2000/08/XMLSchema"> <xsd:element name="persona" type="tipoPersona"/> <xsd:element name="comentario" type="xsd:string"/> <xsd:complexType name="tipoPersona"> <xsd:sequence> <xsd:element name="datos" type="info"/> <xsd:element ref="comentario" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="nacimiento" type="xsd:date"/> </xsd:complexType>

<xsd:complexType name="info"> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="apellidos" type="xsd:string"/> <xsd:element name="dni" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema> bajar el ejemplo Para comprobar si los documentos XML que usan XMLSchemas son correctos o no, vamos a utilizar el siguiente parser on-line: parser para XMLSchemas A modo de ejemplo de cmo se utiliza para validar documentos XML, muestro a continuacin una sesin tpica de cmo llamar al parser on-

line:

...y el resultado obtenido cuando el documento no tena errores:

...y cuando tiene algn error:

Segundo ejemplo de XML y XSchema correspondiente


Veamos otro ejemplo de un documento XML, y su schema : El documento XML que describe un todoterreno podra ser: <?xml version = "1.0" encoding = "UTF-8"?> <vehicles xmlns:xsi = "http://www.w3.org/2001/XMLSchemainstance"

xsi:noNamespaceSchemaLocation = "landrover.xsd"> <vehicle> <nickname>Count Zero</nickname> <model>Series I, 80"</model> <construction> <start> <dom>21</dom> <month>July</month> <year>1949</year> </start> <end> <dom>9</dom> <month>August</month> <year>1949</year> </end> </construction> <mods> <mod>Change Engine</mod> <mod>Change pedals</mod> <mod>Change gearbox</mod> <mod>Fit Rollcage</mod> </mods> </vehicle> </vehicles> El XSChema correspondiente es: <?xml version = "1.0" encoding = "UTF-8"?> <xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <xsd:element name = "vehicles"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "vehicle" maxOccurs = "unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "vehicle">

<xsd:complexType> <xsd:sequence> <xsd:element name = "nickname" type = "xsd:string" maxOccurs = "unbounded"/> <xsd:element name = "model" type = "xsd:string"/> <xsd:element name = "construction"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "start"/> <xsd:element ref = "end"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "mods"> <xsd:complexType> <xsd:sequence> <xsd:element name = "mod" type = "xsd:string" maxOccurs = "unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "start"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "dom"/> <xsd:element ref = "month"/> <xsd:element ref = "year"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "end"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "dom"/> <xsd:element ref = "month"/> <xsd:element ref = "year"/>

</xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "dom" type = "xsd:string"/> <xsd:element name = "month" type = "xsd:string"/> <xsd:element name = "year" type = "xsd:string"/> </xsd:schema> Como hemos visto en los ejemplos, un elemento debe tener su nombre y su tipo. Los elementos pueden contener tipos de datos simples; pueden ocurrir ms de una vez; y/o pueden tener tipos complejos. <xsd:element name="edad" type="xsd:int" /> <xsd:element name="nombre" type="xsd:string" /> <xsd:sequence> <xsd:element name="edad" type="xsd:int" maxOccurs="unbounded" /> </xsd:sequence> Hay dos tipos de datos que pueden ser definidos por el usuario: complexType y simpleType. Los simples contienen datos, pero no atributo o subelementos. <xsd:element name="cadena" type="xsd:string" /> <xsd:element name="entero" type="xsd:int" /> <! un tipo de enteros que va del 1 al 10 --> <xsd:simpleType name="mi_entero" > <xsd:restriction base="xsd:positiveInteger"> <xsd:maxInclusive value="10" /> </xsd:restriction> </xsd:simpleType> Los complejos permiten incluir sub-elementos y/o atributos, y se definen enumerando los elementos incluidos. El contenido de estos tipos puede ser:

simpleContent complexContent sequence ejemplo de complexType usando simpleContent <xsd:element name="nombre" > <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="apodo" use="required" type="xsd:string" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> el elemento, en XML <nombre apodo="chema">Jose Manuel</nombre> ejemplo de complexType usando sequence <xsd:element name="persona" > <xsd:complexType> <xsd:sequence> <xsd:element name="nombre" type="xsd:string" /> <xsd:element name="edad" type="xsd:int" /> </xsd:sequence> </xsd:complexType> </xsd:element> el elemento, en XML <persona> <nombre>Juan</nombre> <edad>Juan</edad> </persona>

2.- Elementos principales de los XMLSchemas


attribute Declara que un atributo de un elemento determinado. element Declara que un elemento que puede aparecer como contenido de otro elemento. Tal como hemos visto, es necesario empezar el schema definiendo los elementos ms profundamente anidados dentro de la estructura jerrquica de elementos del documento XML. Es decir, tenemos que trabajar "de dentro hacia fuera". Visto de otra manera, las declaraciones de tipo ElementType y AttributeType deben preceder a las declaraciones de contenido element y attributecorrespondientes.

Vous aimerez peut-être aussi