LMSGI02

Embed Size (px)

Citation preview

  • 7/22/2019 LMSGI02

    1/44

  • 7/22/2019 LMSGI02

    2/44

  • 7/22/2019 LMSGI02

    3/44

    (3)

  • 7/22/2019 LMSGI02

    4/44

  • 7/22/2019 LMSGI02

    5/44

    (5)

    ndice

    (2.1) documentos XML bien formados y validacin ______________________ 7(2.2) validacin por DTD _____________________________________________ 8

    (2.2.1) introduccin 8(2.2.2) posibilidades de uso de DTD 8(2.2.3) definiciones en un DTD 10(2.2.4) elementos 10(2.2.5) declaracin de atributos 14(2.2.6) entidades 19

    (2.3) Validacin por XML Schema ____________________________________ 22(2.3.1) XML Schema y DTD 22(2.3.2) estructura de los esquemas 22(2.3.3) sintaxis de la definicin de un elemento 27(2.3.4) tipos simples de datos 27(2.3.5) atributos 37(2.3.6) tipos compuestos 37(2.3.7) grupos de elementos 42(2.3.8) grupos de atributos 43

    (1)

  • 7/22/2019 LMSGI02

    6/44

  • 7/22/2019 LMSGI02

    7/44

    (7)

    (2)validacin dedocumentos XML(2.1)documentos XML bien formados y

    validacinEn el tema anterior se dispusieron las bases del funcionamiento de XML. En ellas seindic lo que se consideraba un documento XML bien formado. Los documentos bienformados, aseguran que las reglas de XML se cumplen y que no hay ninguna incoherenciaal usar el lenguaje. Sin embargo, no es suficiente porque podramos definir documentosque utilizaran los elementos que quisiramos sin restriccin. En la realidad loselementos y los atributos que se pueden utilizar y la manera de disponerles en eldocumento es fundamental para mantener una mayor homogeneidad.

    Una empresa puede decidir que los documentos internos para describir el softwareque utiliza la empresa deben poseer como elemento raz un elemento llamado software(y no otro) y que este elemento obligatoriamente debe contener los elementos nombre,fabricante yprecio. Esas reglas no se refieren a que el documento est bien formado;

    son reglas ms complejas y que permitirn al documento que sea vlido.Para ello se crea un documento que contendr las reglas que deben de cumplir los

    XML que se basen en l. De modo que un documento deber indicar qu plantilla dereglas utiliza y deber cumplirlas a rajatabla para considerarse vlido.

    As explicado parece que la validacin supone un problema, pero en realidad es unaventaja; con la validacin tenemos la seguridad de que los documentos cumplen unasreglas ms concretas y de esa forma es fcil establecer un protocolo en las empresaspara sus documentos. De hecho cuando un documento XML cumple estrictamente lasreglas generales de creacin XML se dice que est bien formado; cuando adems siguelas reglas de un documento de validacin entonces se dice que es vlido.

    Las tcnicas ms populares para validar documentos son:

    DTD, Document Type Definition. Validacin por documentos de definicin detipos. Se utilizaba en el lenguaje SGML y de ah debe su popularidad. Es la msutilizada, pero tiene numerosas voces crticas porque su sintaxis no es XML.

    XML Schema o esquemas XML. Mucho ms coherente con el lenguaje XML es laaconsejada actualmente, pero todava no tiene una implantacin al 100%

    Relax NG. Es una notacin sencilla y fcil de aprender que est hacindose muypopular. No tiene tantas posibilidades con el XML Schema, pero tiene unasintaxis muy sencilla. Adems admite aadir instrucciones de tipo XML Schemapor lo que se convierte en una de las formas de validacin ms completas.

    Schematron. Permite establecer reglas que facilitan establecer las relaciones

    que han de cumplir los datos de un documento XML. No es tan bueno para

  • 7/22/2019 LMSGI02

    8/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (8)

    establecer el resto de reglas de validacin (orden de elementos, tipos dedatos,)

    (2.2)validacin por DTD(2.2.1)introduccin

    Es la tcnica ms veterana y, en realidad procede de SGML el lenguaje base de XML. Esindudablemente la ms utilizada, pero tambin la menos coherente con las reglas XML.Su xito se debe a que ya era una forma de validacin reconocida antes de la aparicinde XML, por lo que muchsimo productos software la reconocen desde hace mucho y lacompatibilidad con ellos ha determinado su xito.

    (2.2.2)posibilidades de uso de DTDen el propio documento

    Se puede definir la estructura que debe cumplir un documento XML mediante cdigoDTD insertado en el propio documento. La desventaja evidente, es que esta definicinslo vale para dicho documento, por lo que realmente no define tipos de documentosXML (no es una plantilla en definitiva de definicin de documentos internos). Por ello esla forma menos habitual de utilizar DTD.

    Su nica (pero muy discutible) ventaja es que la validacin est dentro del propiodocumento, por lo que siempre viajan juntas la validacin y el contenido del mismo.

    Un documento XML que defina internamente su DTD, simplemente escribeinstrucciones DTD dentro del propio documento dentro de una etiqueta DOCTYPE. Lasintaxis es:

    Dentro de los smbolos [ y ] se especifican las instrucciones DTD. Ejemplo:

    ]>

    Antonio

  • 7/22/2019 LMSGI02

    9/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (9)

    en un documento externo privado

    En este caso la validacin se crea en un documento-plantilla externa. De modo quecuando un documento debe cumplir las reglas de la plantilla DTD, se debe indicar laruta (sea relativa o absoluta) a la misma.

    La sintaxis de la etiqueta DOCTYPE que permite asignar un DTD privado a undocumento XML es:

    Salvo que se desee crear un nico documento con una validacin DTD, lo lgico esutilizar la forma de DTD externa ya que de esa forma se pueden validar variosdocumentos a la vez. La ruta puede ser absoluta y entonces se indica su URL:

    Pero puede ser relativa:

    Entonces se busca al archivo DTD desde el directorio donde se encuentra el archivo XMLque queremos validar (en el ejemplo, el archivo docs.dtd debe encontrarse en el mismodirectorio que el archivo que contiene ese cdigo DOCTYPE).

    En ambos casos se puede aadir cdigo DTD para en ese documento concreto aadirinstrucciones de validacin. Ejemplo:

    ] >

    DTD externo de tipo PUBLIC

    Se entiende que SYSTEM se utiliza cuando el documento DTD es privado. Si se trata deun documento de uso pblico, entonces se usa PUBLIC. La sintaxis sera:

    La raz sigue siendo el nombre del elemento raz. El nombreDTD es el nombre pblicoque se le da al DTD en cuestin. Si disponemos de un repositorio de DTDs pblicos(como ocurre en entornos de trabajo como Oxygene por ejemplo) le cargara sin ir aInternet. Si el nombreDTD no es reconocido se usa la direccin URL para descargarlo yutilizarlo. Ejemplo:

    Este es el DOCTYPE para una pgina web escrita en XHTML 1.0 estricto, utilizada paravalidar miles de pginas web.

    atributo standalone de la etiqueta de cabeceraLa etiqueta

  • 7/22/2019 LMSGI02

    10/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (10)

    no. Cuando el documento obligatoriamente hace uso de DTD externa

    (2.2.3)definiciones en un DTDEn un cdigo DTD (tanto externo como interno) se pueden definir:

    Los elementos que se pueden utilizar en un documento XML. En esta definicinse indica adems que pueden contener dichos elementos.

    Los atributos que pueden poseer los elementos. Adems incluso indicando susposibles valores vlidos.

    Entidades que puede utilizar el documento XML.

    (2.2.4)elementosMediante un DTD podemos especificar elemento que se puede utilizar en un XML sedefine en su DTD mediante una etiqueta !ELEMENT. La sintaxis de la misma es:

    El nombre es el identificador que tendr el elemento en el documento XML (hay querecordar que se distingue entre maysculas y minsculas).

    El tipo indica el funcionamiento del elemento, relativo al contenido que puedetener. A continuacin se indican las posibilidades de este parmetro

    tipos de contenido en los elementos

    EMPTY

    Significa que el elemento no podr tener contenido alguno, es un elemento vaco (comola etiqueta br de las pginas web). Ejemplo de definicin de elemento vaco:

    Cuando se indica como tipo la palabra EMPTY, se indica que el elemento no puede tenercontenido, pero s podr contener atributos (si se especifican en el DTD).

    Los elementos definidos con EMPTY slo pueden utilizarse de esta forma:

    o bien:

    ANY

    Permite cualquier contenido en el elemento, sin restricciones de ningn tipo. Es decirpuede contener texto, otro tipo de datos y cualquier etiqueta. Adems puede teneratributos.

  • 7/22/2019 LMSGI02

    11/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (11)

    Ejemplo:

    ]>

    Jorge

    Snchez Asenjo

    Jorge

    Al definir apellidos como elemento ANY, permite incluso que dentro haya una etiquetanombre.

    Puesto que un DTD se usa para restringir la escritura de un tipo de documentos XML,el uso de ANY debe de ser muy cauteloso.

    elemento concreto

    En los elementos se puede indicar claramente un contenido concreto para el mismo.Dicho contenido se indica entre parntesis. Ejemplo:

    ]>

    Antonio

    En el ejemplo dentro de una etiqueta personaobligatoriamente debe de existir unaetiqueta nombre (una y slo una).

    No slo se pueden indicar nombres de elementos como contenido concreto, laindicacin #PCDATA significa que el elemento podr contener texto literal (tan largocomo se desee).

  • 7/22/2019 LMSGI02

    12/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (12)

    secuencias

    En el caso de indicar una lista de elementos separados por comas, por ejemplo:

    ]>

    Antonio

    Prez

    35

    Indica que el elemento contendr la lista de elementos indicada, la cual deber estaren el mismo orden de la secuencia. Es decir en el ejemplo los apellidos no se podranponer delante del nombre.

    elecciones

    Los elementos pueden contener elementos opcionales (puede aparecer uno u otro).Ejemplo:

    ]>

    16

    La barra vertical indica que el elemento puede contener una u otra opcin (pero slo

    una). Es decir tambin sera vlido:

    ]>

    X1238H

  • 7/22/2019 LMSGI02

    13/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (13)

    Si dentro de la lista de opciones aparece PCDATA, ste debe de ser el primer elementode la lista.

    combinaciones

    Por supuesto puede haber combinaciones, si tenemos un documento DTD llamadocoordenada.dtdcon este contenido:

    Sera vlido este documento:

    234

    -23

    Sera vlido tambin:

    1232332

    cardinalidad

    La cardinalidad es el nmero de veces que puede aparecer un determinado contenidoen un elemento. Se realiza mediante estos smbolos:

    ? Contenido opcional, puede aparecer (una sola vez) o no aparecer

    * Contenido opcional y repetible. Es decir puede no aparecer y puede inclusoaparecer varias veces

    + Contenido obligatorio y repetible. Tiene que aparecer e incluso puede aparecervarias veces

    Ejemplo:

    Segn la instruccin anterior el elemento pelcula consta de un ttulo, uno o mselementos de direccin, puede o no tener argumento, y de varios a ningn actor(adems se tendra que respetar ese orden).

  • 7/22/2019 LMSGI02

    14/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (14)

    Otro ejemplo (polgono.dtd):

    Con esa DTD sera vlido el documento:

    12

    13

    1723

    34

    56

    Pero tambin:

    Tringulo

    (2.2.5)declaracin de atributosLos atributos permiten aadir informacin a un elemento. Un atributo no puede constarde ms atributos y cada atributo slo puede aparecer una vez en cada elemento.

    sintaxis de la declaracin de atributos

    Los atributos se declaran mediante la etiqueta !ATTLIST, sintaxis:

    Donde:

    elemento. Es el nombre del elemento que podr utilizar el atributo

    nombreAtributo. Es el identificador del atributo que estamos declarando (yque debe de cumplir las reglas de identificadores de XML)

    tipo. Es el tipo de valores que podemos asignar al atributo

    presencia. Indica las caractersticas de los valores que puede tomar elatributo: si es obligatorio, si hay valor por defecto,...

  • 7/22/2019 LMSGI02

    15/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (15)

    valorPorDefecto. Permite dar un valor que el atributo tomar en el documentoXML en caso de que no se le d en el mismo ningn valor al atributo. Tambinindica si es necesario rellenar o no el atributo o bien si es opcional.

    CDATA

    Para indicar el tipo de valores de un atributo se usa la palabra CDATA para indicar queel atributos contiene texto (CDATA es el acrnimo de Character DATA).

    A diferencia de #PCDATA, su contenido no es procesado, lo que significa que puedecontener cualquier valor (incluidos smbolos prohibidos en los #PCDATA como , & )

    declarar atributos

    Esta declaracin:

    Significa que hemos definido el atributo nacionalidad correspondiente al elementopersona. Que ser de tipo CDATA, es decir texto normal. As en un XML que se validecon el DTD en el que est la instruccin anterior, podremos:

    valores por defecto

    Al declarar un atributo, lo ltimo que se indica es la propiedad relativa al valor pordefecto del atributo. Se comentan a continuacin sus posibilidades:

    valor por defecto concreto

    Si al final de la declaracin de un atributo aparece un valor concreto, se entiende queese ser el valor por defecto. Es decir que se podra no utilizar el atributo en un

    elemento y entonces dicho atributo tomara dicho valor.Por ejemplo supongamos que ste es el archivo directorio.dtd:

    Se define en l el atributo nacionalidadpara el elemento persona como un atributoque contendr texto de todo tipo, pero que por defecto toma el valor Espaola(nacionalidad por defecto en dicho archivo).

    Entonces este archivo XML ser vlido:

    Vivian MaretJuan Martn

    Entonces para Vivian Maret se ha indicado explcitamente la nacionalidad, pero no seha usado el atributo paraJuan Martn, por lo que tomar la nacionalidad espaola.

  • 7/22/2019 LMSGI02

    16/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (16)

    valores fijos

    Se puede utilizar el trmino #FIXED antes de indicar un valor fijo paraun atributo. Enese caso en ningn documento XML se podr modificar dicho atributo. Ejemplo:

    El atributo nacionalidadno podr tomar ningn valor que no sea el valor Espaola,impidiendo tomar otra nacionalidad. En la prctica este tipo de atributos no se usademasiado, slo se usa en el caso de que la presencia o no de dicho atributo en unelemento sea determinante. Es el caso del atributo noshade del elemento hr dellenguaje HTML. hr sirve para dibujar una lnea en una pgina web, la lnea se dibuja enrelieve salvo que aparezca el atributo noshade, ya que hace que la lnea sea plana. Poreso a noshade slo se le puede dar un valor: la propia palabra noshade:

    valores requeridos

    En este caso se usa la palabra #REQUIRED indicando con ello que siempre hay que darvalor al atributo. Ejemplo:

    Un documento XML que utilice el elemento persona deber especificarobligatoriamente la nacionalidad.

    Obviamente usando #REQUIRED no se puede indicar un valor por defecto (al no poderdejarse sin especificar el atributo).

    valor opcional

    La palabra #IMPLIED especificada en el atributo indicara que dicho atributo puedequedarse sin valor; es decir no posee valor por defecto, pero puede quedarse sinespecificar (quedara nulo por tanto).

    En el ejemplo, el atributo nacionalidad no es obligatorio especificarle, puede quedar sinvalor. Nuevamente en este caso no se puede especificar un valor por defecto (sera

    absurdo).tipos de atributo

    CDATA

    Como se coment antes, los atributos de tipo CDATA permiten indicar como valorcualquier texto. A diferencia de los datos PCDATA de los elementos, los CDATA admitencualquier carcter del tipo que sea.

  • 7/22/2019 LMSGI02

    17/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (17)

    ID

    Sirve para generar identificadores a los elementos. Un identificador es un valor nicoque tendr cada elemento y son muy usados en XML. El valor de un atributo de tipo IDcumple estas reglas:

    El valor tiene que cumplir las mismas reglas que para especificar nombres XML.Es decir: nada de espacios, no pueden comenzar con un nmero y slo admiteletras, nmeros y el carcter de subrayado (_).

    No puede haber dos elementos con el mismo ID en un mismo documento XML

    En el DTD, para cada elemento slo puede indicarse un atributo como ID. Nopuede haber dos atributos distintos en el mismo elemento que contengan IDs.

    Los atributos ID slo pueden indicar #IMPLIED o #REQUIRED en el apartado delvalor por defecto.

    Los IDs son especialmente tiles para las herramientas de maquetacin, anlisis y

    programacin de aplicaciones XML. Ya que permiten diferenciar de manera nica a cadaelemento.

    IDREF

    Los atributos IDREF contienen el valor de un ID de otro elemento. Es decir ser unareferencia a otro elemento. Las reglas de los IDREFs son:

    El valor de un IDREF debe cumplir las reglas para especificar nombres XML (eslgico ya que contienen valores de tipo ID)

    Debe existir un atributo ID en el documento XML cuyo valor coincida con elespecificado en un IDREF (de otro modo se hara referencia a un elementoinexistente y esto no est permitido)

    La idea es poder relacionar elementos a travs de atributos de tipo ID e IDREF. Ejemplode uso:

    madre IDREF #IMPLIEDpadre IDREF #IMPLIED>

    PedroMarisaCarmen

    Carmen es la hija de Pedro y Marisa, segn el cdigo anterior, ya que los atributospadre y madre de tipo IDREF contienen los ID de Pedro yMarisa.

  • 7/22/2019 LMSGI02

    18/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (18)

    IDREFS

    Igual que el anterior slo que permite indicar varias referencias (que deben existir en eldocumento XML) a otros ID, separadas por espacios. Ejemplo:

    padres IDREFS #IMPLIED >

    PedroMarisaCarmen

    NMTOKEN

    El valor del atributo ser un texto que cumplir las reglas para nombres XML. Se usa enatributos donde se entiende que CDATA permite demasiadas libertades, de esta formaal menos sabremos que es un texto donde slo existirn letras, nmeros y el smbolo _,es decir un texto que cumple las reglas para nombres XML.

    NMTOKENS

    El atributo puede contener varios valores de tipo NMTOKEN separados por espaciosENTITY

    El valor de un atributo ser una entidad de la cual se indica el nombre. Ms adelante seexplica el uso de las entidades.

    ENTITIES

    El valor del atributo ser una lista de nombres de entidades separadas por espacios.

    enumeracin

    En este caso el valor del atributo debe de ser uno de una lista de valores posibles cadauno de los cuales se separa del siguiente mediante el smbolo |.

    Ejemplo:

    Las personas slo podrn especificar como sexo "Hombre"o "Mujer"y nada ms:

    Javier Ruiz

    El cdigo anterior XML fallara ya que el atributo sexo no admite el valor "Varn".

  • 7/22/2019 LMSGI02

    19/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (19)

    declaracin de varios atributos en la misma etiqueta

    Se usa muy habitualmente para indicar de forma cmoda todos los atributos de undeterminado elemento:

    sexo (Hombre | Mujer) #IMPLIEDid ID#REQUIRED>

    Para ese documento DTD, sera vlido este XML:

    Vivian MaretJuan MartnRafael Daz

    (2.2.6)entidadesLas entidades son elementos XML que permiten indicar abreviaturas de texto (oreferencias a elementos externos abreviadas) o utilizar caracteres que de otra formaseran invlidos en el documento.

    Se explican sus posibilidades

    entidades ya existentes

    En XML estn definidas las siguientes entidades:

    entidad significado

    < El smbolo de menor ()

    & El ampersand: &

    ' La comilla simple (')

    " La comilla doble (")

    Estas entidades no hay que declararlas en ningn DTD, todos los analizadores de XMLestndar conocen estas entidades

    Ejemplo:

    Leopoldo Alas 'Clarn'

    El texto PCDATA del autor es Leopoldo Alas 'Clarn' (as se visualizar en elnavegador).

  • 7/22/2019 LMSGI02

    20/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (20)

    entidades para referencias a caracteres especiales

    La etiqueta inicial

    Para usar en un documento XML la entidad declarada, se usa:

    &nombre;

    Ejemplo de declaracin de una entidad:

    uso en un documento XML:

    &mayor; 18

    La direccin indicada es Calle Mayor Principal 18.

    Incluso se pueden indicar smbolos que no son PCDATA al definir entidades:

  • 7/22/2019 LMSGI02

    21/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (21)

    El documento XML que utilice dicha entidad incluir todos los smbolos (y por lo tantoestar especificando etiquetas en el cdigo).

    Un uso muy interesante es usar entidades que hacen referencia a archivos externos(mediante su direccin URL), por ejemplo:

    Es la palabra SYSTEM la que indica que la entidad no es un texto sino que es elcontenido de un archivo. El uso de la entidad &direccinCompleta; en un documentoXML provocar que en dicho documento se aada el contenido del archivo direccin.txt(en la posicin exacta en la que est colocada la referencia a la entidad).

    entidades de parmetros

    Slo se pueden utilizar dentro del DTD (no en el documento XML). Su uso ms habitual

    es construir DTD utilizando las entidades definidas a fin de ahorrar trabajo al crear elpropio DTD.Su uso es similar a las entidades generales slo que utilizan el smbolo % en lugar del

    smbolo &. Al igual que las generales deben de ser declaradas antes de poder usarse:

    Y su uso (dentro del DTD), por ejemplo:

    En este caso las comillas dobles son obligatorias porque los valores por defecto vanentrecomillados (como se ha visto anteriormente).

    Las entidades de parmetros pueden utilizar archivos externos, ejemplo de DTD:

    %directorio;

    De esta forma se construye un DTD con el contenido ya especificado en otro DTD. En elejemplo las empresas constan de elementos raznSocial y de directorio. El elemento

    directorio no se define, sino que su descripcin est especificada en directorio.dtd.No obstante el uso ms habitual es definir una entidad para utilizar cdigo comn enel propio DTD, por ejemplo supongamos que dos elementos, profesor y alumnocomparten atributos comunes. Entonces este cdigo simplifica la definicin de losatributos de esos elementos:

  • 7/22/2019 LMSGI02

    22/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (22)

    (2.3)Validacin por XML Schema(2.3.1)XML Schema y DTD

    Los DTD en realidad son una reminiscencia del lenguaje SGML que permite unmecanismo de validacin para XML al ser ste un subconjunto de SGML.

    Por ello, se plante en torno a 1999 una sintaxis que permitiera ms capacidades devalidacin y que fuera ms coherente con el lenguaje XML. Hoy en da es la arquitecturapredominante para la validacin, ya que se usa en XQuery y sobre todo en los serviciosWeb.

    ventajas de los esquemas

    La sintaxis es XML, por lo que son analizables como cualquier otro documentoXML

    Soportan ntegramente los espacios de nombres

    Permiten validaciones de datos avanzadas

    Proporcionan una mayor facilidad para crear validaciones complejas yreutilizables

    Soportan conceptos avanzados como herencia y sustitucin de tipos

    desventajas de los esquemas

    Son ms complejas de entender que las DTD

    Presentan ms incompatibilidades con software que las DTDNo permiten definir entidades

    Tecnologas como SAX o DOM tienen utilidades especiales para las DTD, pero nopara los esquemas

    (2.3.2)estructura de los esquemasUn esquema es un documento XML al que se le coloca la extensin xsd. Al ser un archivoXML tiene la estructura habitual de todo documento XML con la obligacin de que elelemento raz se llame schema.

    etiqueta schema

    La etiqueta schema identifica la raz de un documento XML Schema. En esta etiqueta sedeclara el espacio de nombres estndar que utilizan los esquemas (y que permitediferenciar las etiquetas XML del esquema, respecto a las del documento XML), el cualse puede definir como el espacio de nombres por defecto, definir un prefijo xs para l(es la forma habitual) o bien definir un prefijo xsd. Es decir estas tres posibilidades:

  • 7/22/2019 LMSGI02

    23/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (23)

    A partir de ah las etiquetas pertenecientes a XML Schema, usarn el prefijo indicado ensu espacio de nombres (normalmente xs).

    Adems en la misma etiqueta se define el espacio de nombres al que se aplica elesquema. Es decir, normalmente un esquema XML se aplica a un espacio de nombres

    privado, correspondiente a la entidad a la que se quiere aplicar el esquema. Esteespacio se puede declarar como espacio de nombres por defecto (es lo habitual) o usarun prefijo; incluso se pueden indicar varios espacios de nombres (slo uno podr serdefinido por defecto como mucho) a los que aplicar el esquema. Como siempre laetiqueta que declara el espacio de nombres es xmlns.

    Adems el atributo targetNamespace permite indicar el espacio de nombres sobre elque se aplica el esquema (si se aplica a varios espacios de nombres, aparecernseparados con espacios), que es decir a qu documentos se aplicar el esquema.Ejemplos de etiquetas schema:

    En el ejemplo anterior, las etiquetas correspondoentes al espacio estndar de XMLSchema usarn el prefijo xs, mientras que las etiquetas pertenecientes a losdocumentos XML correspondientes al espacio privado jorgesanchez.net/doc usarn elespacio de nombres por defecto.

    En este caso XMLSchema usarn el prefijo xs, mientras que las etiquetas definidas en elesquema usarn el prefijo doc ya asociado a su espacio por defecto:

  • 7/22/2019 LMSGI02

    24/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (24)

    asociar un esquema a un documento XML

    Para que un documento XML siga las reglas definidas en un esquema, no disponemos deetiqueta !DOCTYPE; en su lugar utilizamos atributos especiales en el elemento raz deldocumento XML.

    Primero, al igual que en el documento XMLSchema, necesitamos definir los dosespacios de nombres, el correspondiente al documento XML (que se suele usar sinabreviatura, es decir como espacio por defecto) y el espacio de nombres de XML Schema(que suele utilizar el prefijo xs, aunque se puede utilizar otro).

    Adems es necesario indicar dnde est el archivo XMLSchema que contiene lasreglas de validacin que se aplican al documento. Esto se hace gracias al atributollamado schemaLocation (perteneciente al espacio de nombres del esquema, por lo quese usa normalmente como xs:schemaLocation).Ejemplo:

    ....

    Se indica el espacio por defecto de nombres en el documento (coincide con el declaradoen el propio archivo del esquema), se indica el espacio de nombres correspondiente alesquema (siempre es la misma direccin de Internet) y se asocia a este espacio elprefijo xs (se puede elegir otro prefijo, pero no es nada conveniente).

    Documento XML Schema Documento XML

    esquema.xsd doc12.xml

    Valida

    pertenece al espacio pblicoestndar http://www.w3.org/2001/XMLSchema

    pertenece al espacio privadohttp://jorgesanchez.net/doc

    Ilustracin 1, Esquema de funcionamiento de los XML Schemas

  • 7/22/2019 LMSGI02

    25/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (25)

    El atributo schemaLocation (acompaado del prefijo asociado al espacio de nombres deXMLSchema) indica la localizacin del documento XMLSchema que contiene la definicinde las reglas a cumplir por el documento. Es un par formado por el espacio de nombresque ser validado por el esquema y por la ruta al documento XMLSchema (con extensinxsd).

    Se pueden indicar varios esquemas de validacin, por lo que habra que indicar a quespacio se aplica cada uno:

  • 7/22/2019 LMSGI02

    26/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (26)

    Documentacin, informacin utilizable por aplicaciones que manejen losesquemas. Etiquetas xs:annotation, xs:documentation y xs:appInfo.

    componentes locales y globales

    El orden de los elementos en un esquema no es significativo, es decir las declaracionesse pueden hacer en cualquier orden. Pero s que hay que tener en cuenta quedependiendo de dnde coloquemos la definicin de los elementos del esquema, vara sumbito de aplicacin. Se distinguen dos posibilidades de declarar elementos:

    En mbito global. Se trata de los elementos del esquema que se coloquendentro de la etiqueta raz schema y que no estn dentro de ninguna otra. Estoselementos se pueden utilizar en cualquier parte del esquema.

    En mbito local. Se trata de elementos definidos dentro de otros elementos. Enese caso se pueden utilizar slo dentro del elemento en el que estn inmersos yno en todo el documento. Es decir si, por ejemplo, si dentro de la definicin deun atributo colocamos la definicin de un tipo de datos, este tipo de datos slo

    se puede utilizar dentro del elemento xs:attribute en el que se encuentra ladefinicin del tipo de datos.

    Ejemplo:

  • 7/22/2019 LMSGI02

    27/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (27)

    (2.3.3)sintaxis de la definicin de un elementoEn XML Schema la definicin de un elemento XML se realiza mediante la etiquetaelement. La sintaxis completa es:

  • 7/22/2019 LMSGI02

    28/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (28)

    l cdigo remarcado es el que indica que en los documentos XML basados en estaplantilla XMLSchema, habr un elemento llamado descripcin que contendr datos detipo string. El hecho de que se use el prefijo xs (es decirxs:string) es para indicar quees un tipo XML y por lo tanto usa el prefijo designado al espacio de nombres deXMLSchema. Los tipos bsicos son:

    textos

    string. Representan textos con cualquier contenido excepto los smbolos &y las comillas para los que se usar la entidad correspondiente.

    lgicos

    boolean. Slo puede contener los valores verdadero o falso, escritos como trueo false, o como 1 (verdadero) 0 (falso)

    nmeros

    integer. Permite utilizar nmeros enteros.

    float. Permite utilizar nmeros decimales en formato de coma flotante deprecisin simple. El separador decimal es el punto. Ejemplos de valores: 1, 23.4, -123,-124.76, 1E+3 (significa 1000), 1.45E+4 (significa 14500),1.45E-4 (significa 0,000145, es decir 1,45 10-4), INF (infinito), -INF (menosinfinito), NaN(significa Not a Number, no es nmero, para nmeros no vlidos)

    double. Nmeros decimales en formato de coma flotante de precisin doble. Es

    decir el mismo tipo de nmeros pero con mejor precisin.decimal. Representa nmeros decimales en coma fija. Ocupan msinternamente pero se representan de forma exacta. No admite los valores INF,NaN ni tampoco el formato cientfico.

    hexBinary. Representa nmeros binarios codificados en notacin hexadecimal.

    base64Binary. Representa nmeros binarios (usando base 64).

    fechas

    Se basan en la especificacin ISO 8601.

    duration. Representa duraciones de tiempo en formato ISO 8601 (seccin 5.3)PnYnMnDThmsDonde todos los signos n son nmeros. Ejemplos de valores:

    P1Y significa Un ao. P1Y2M significa un ao y dos meses. P1Y2M3D significa un ao y dos meses y tres das P3D significa tres das P1Y2M3DT12H30M40.5S significa un ao, dos meses, tres das,

    doce horas treinta minutos y cuarenta segundosy medio

    PT12H30M40.5S doce horas treinta minutos y cuarenta segundosymedio

  • 7/22/2019 LMSGI02

    29/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (29)

    Como se observa la P es obligatoria y la T sirve para separar los valores defecha de los valores hora.

    dateTime. Representa fechas segn el formato ISO 8601 (seccin 5.4). Elformato es yyyy-mm-ddThh:mm:ss , por ejemplo 1998-07-12T16:30:00.000

    (12 de julio de 1998 a las 16:30). La T es obligatoria para separar la fecha de lahora.

    time. Representa horas en el formato hh:mm:ss

    date. Representa fecha en formato yyyy-mm-dd

    gYearMonth. Representa un mes y un ao en formato yyyy-mm

    gYear. Representa un ao usando cuatro cifras.

    gMonthDay. Representa un mes y un da en formato --mm-dd

    gDay. Representa un da. Hay que hacerlo indicando tres guiones por delante(por ejemplo ---12)

    gMonth. Representa un mes en formato --mm,por ejemplo --05especiales

    anyURI. Representa una direccin URI. Por ejemplohttp://www.jorgesanchez.net. La URI puede ser absoluta o relativa.

    QName. Nombre cualificado. Representa un nombre XML vlido para identificarnombres incluyendo el prefijo de espacio de nombres. Por ejemplodoc:cabecera

    Notation. Representa notaciones de estilo NOTATION XML 1.0 segunda edicin.Slo se debe utilizar para crear tipos de datos derivados de ste

    anyType. No restringe el contenido en modo alguno.

    tipos de datos derivados

    Son datos que se han definido a partir de los anteriores, pero forman parte deXMLSchema, es decir que en la prctica se usan igual que los anteriores (al igual que enlos primitivos, cuando se usan en un esquema hay que aadir el prefijo del espacio denombres del esquema, por ejemploxs:normalizedString).

    textos

    normalizedString. Se basa en el tipo string. Texto donde los caracteres deretorno de lnea, tabulador y retorno de carro se convierten a espacios antes de

    procesar el esquema.token. Se basa en el anterior. Textos en los que no hay ms de un espacio enblanco seguido, ni tabuladores ni saltos de lnea; en todos esos casos seconvierte el texto a un nico espacio.

    language. Texto que contiene el nombre de un lenguaje segn lo definido en laespecificacin oficial RFC 1766. Son los posibles valores de los atributosxml:lang de XML 1.0 que coinciden con el formato normalizado de lenguajeshabitual en las pginas web; por ejemplo el espaol se codifica con es (a vecescon es-ES), el cataln ca, el gallego gl, el portuguspt, el euskera eu, el inglsen, alemn de y francsfr.

    http://www.jorgesanchez.net/http://www.jorgesanchez.net/http://www.jorgesanchez.net/
  • 7/22/2019 LMSGI02

    30/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (30)

    Name. Slo admite nombres compatibles con la forma de poner nombres deXML. Admite los dos puntos pero para manejar nombres con prefijo (nombrescualificados) el tipo idneo es QName.

    NCName. Nombres, basado en Name, pero sin admitir los dos puntos de los

    prefijos de espacios de nombres.nmeros

    integer. Basado en number. Representa nmeros enteros tanto positivos comonegativos

    nonPositiveInteger. Basado en integer. Representa nmeros enteros que noson positivos (es decir cero y negativos).

    negativeInteger. Basado en integer. Representa nmeros enteros negativos (novale el cero).

    nonNegativeInteger. Basado en integer. Representa nmeros enteros que noson negativos (es decir cero y positivos).

    positiveInteger. Representa nmeros enteros positivos puros (no vale el cero).

    long. Basado en integer. Representa nmeros enteros de alto rango (de -9223372036854775898 a 9223372036854775897). Los integer representannmeros an ms largos

    unsignedLong. Basado en long. Representa nmeros enteros de alto rango perousando slo los positivos y el cero.

    int. Representa nmeros enteros de medio rango (de 2147483648 a2147483647).

    unsignedInt. Representa nmeros enteros de medio rango pero usando slo los

    positivos y el cero.short. Representa nmeros enteros de bajo rango (de 32768 a 32767).

    unsignedShort. Representa nmeros enteros de medio rango pero usando slola parte positiva, de cero a 65535

    byte. Representa nmeros enteros pequeos (de 128 a 127).

    unsignedByte. Representa nmeros enteros pequeos positivos, de cero a 255

    equivalentes a atributos DTD

    Estn basados en los tipos XML 1.0 y slo pueden utilizarse en atributos (para mantenerla compatibilidad con DTD)

    ID, IDREF e IDREFS. Equivalente a los atributos del mismo tipo de XML 1.0(tienen el mismo significado que en las DTD). Derivan de NCName

    ENTITY, ENTITIES. Equivalente a los atributos XML 1.0 del mismo nombre.Derivan de NCName,

    NMTOKEN, NMTOKENS. Permiten indicar textos compatibles con los nombresXML. Derivan de NCName.

    NOTATION. Es un tipo pensado para hacer anotaciones, su funcionamiento especuliar y no est pensado para ser usado como tipo bsico, sino como basepara crear tipos personales.

  • 7/22/2019 LMSGI02

    31/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (31)

    uso de tipos de datos en componentes de XMLSchema

    Para que un determinado componente del esquema (como un elemento o un atributo)use uno de los tipos, se dispone del atributo type al que se le indicara el tipo de datos.Ejemplo:

    En el ejemplo se trata de las primeras lneas de un cdigo XMLSchema donde se definentres elementos, cada uno de los cuales con un tipo distinto. Observar el uso del prefijoxs asignado al espacio de nombres de XMLSchema antes del nombre del tipo de datos.

    definir tipos simples personales

    La sintaxis general es:

    ...definicin del tipo....

    definir tipos por unin

    Se trata de utilizar dentro del tipo de datos una etiqueta llamada union que permite

    unir las definiciones de dos tipos de datos. Por ejemplo:

    Cuando a cualquier elemento del esquema se le asigne el tipo gMonthC, se podrnespecificar datos en formato gMonth y en formato gMonthDay.

    establecer tipos simples por restriccin

    Permiten establecer reglas complejas que deben de cumplir los datos. En este casodentro de la etiqueta simpleType se indica una etiqueta restriction, dentro de la cualse establecen las posibles restricciones. Sintaxis:

    ...definicin de la restriccin....

    El atributo base sirve para indicar en qu tipo nos basamos al definir la restriccin (esdecir de qu tipo estamos creando este derivado). El apartado restriction pueden tenernumerosas etiquetas que permiten establecer las restricciones deseadas al tipo.

  • 7/22/2019 LMSGI02

    32/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (32)

    Las etiquetas interiores a restriction disponen de un atributo llamado fixed queslo puede valer verdadero (true) o falso (false). En caso de que sea verdadero, ningntipo derivado del definido puede modificar la propiedad establecida; es decir, siestablecemos minLength (tamao mnimo) con valor ocho (propiedad value) yfixed="true", ningn tipo derivado del definido podr definir que el tamao mnimo seainferior a 8 caracteres. Es un atributo de uso opcional.

    Las posibles restricciones que se pueden establecer son:

    Tamaos de texto. Indica tamaos mximos y mnimos que debe de tener eltexto. Ejemplo:

    minLength. Indica el mnimo nmero de caracteres. Eso lo hace medianteel atributo value, en el que se indica un nmero con el tamao mnimo quedeseamos.

    maxLength. Indica un tamao mximo de caracteres o de dgitosnumricos. Usa el mismo atributo value.

    length. Indica un tamao fijo de caracteres para el tipo. Es decir siindicados length con value="9"el texto deber tener exactamente nuevecaracteres.

    Ejemplo:

    En el ejemplo, se define el tipo persona nombresTipo que permite textosentre 4 y 15 caracteres. El hecho de declararle como derivado denormalizedString permite restringir que no considere en los textos ms de un

    espacio seguido ni los tabuladores ni saltos de lnea (de otro modo casi siemprese superara el mnimo de cuatro, quiz incluso fuera mejor derivar deNCNames que es an ms restrictivo).

  • 7/22/2019 LMSGI02

    33/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (33)

    Dgitos mximos. Parecido al anterior pero trabajando con nmeros. Indica lasposibles cifras que puede tener el nmero.

    totalDigits. Nmero mximo de dgitos del nmero, incluyendo losdecimales. El atributo value indica el nmero mximo deseado

    fractionDigits. Mximo nmero de decimales que puede tener el nmero.

    En el ejemplo, los elementos que utilicen el tipo1 definido, podrn escribirnmeros de hasta seis cifras (incluidos

    Mximos y mnimos numricos. Restringe valores numricos asignando topes alos mismos. Sirve para nmeros y para valores de tiempo o duracin. Se hacecon:

    minExclusive. Establece un valor mnimo. El valor debe ser mayor que elestablecido por la etiqueta a travs del atributo value.

    maxExclusive. Establece un valor mximo. El valor debe ser menor que elestablecido por la etiqueta a travs del atributo value.

    minInclusive. Establece un valor mnimo. El valor debe ser mayor o igualque el establecido por la etiqueta a travs del atributo value.

    maxInclusive. Establece un valor mximo. El valor debe ser menor o igualque el establecido por la etiqueta a travs del atributo value.

    Espacios en blanco. Sirve para indicar la poltica de manejo de espacios enblanco en los textos. La etiqueta que lo controla es whiteSpace y tiene tresposibles valores para el atributo value:

    preserve. No modificar espacios en blanco, ni tabuladores ni saltos delnea. Es decir se les tendr en cuenta.

    replace. Cada doble espacio o tabulador o salto de lnea se cambia por unespacio (al estilo del tipo predefinido normalizedString)

    collapse. Como el anterior, pero adems elimina los espacios a izquierda yderecha. Es muy til para usar en combinacin con las propiedades detamao de texto vistas anteriormente.

    Ejemplo (archivoprueba.xsd):

  • 7/22/2019 LMSGI02

    34/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (34)

    En e archivo anterior, se define un elemento llamado prueba que tiene un tipoque colapsa los espacios en blanco y as en un documento XML que aplique esteesquema, por ejemplo:

    Este es el texto

    que deseo

    probar

  • 7/22/2019 LMSGI02

    35/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (35)

    Smbolo Significado

    exactamente el texto Hombre.

    [xyz] Permite elegir entre los caracteresx, yo z

    [ xyz] Prohibe usar cualquiera de los caracteres entre corchetes[a-z] Vale cualquier carcter de la a a la z.

    ^ Inicio de lnea

    $ Final de lnea

    + Repite acepta el carcter precedente una o ms veces

    ? Acepta el carcter precedente 0 o ms veces

    * Acepta el carcter precedente una o ms veces

    {n} Acepta exactamente n repeticiones del carcter precedente.

    {n,} Acepta al menos n repeticiones del carcter precedente.

    {n,o} Acepta entre n y n repeticiones del carcter precedente.

    \s Permite indicar los caracteres especiales. Por ejemplo \^representa el carcter circunflejo ^ para que sea tomadocomo texto y no como cdigo especial.

    Por ejemplo la validacin para un dato tipo DNI (8 cifras y un nmero), sera:

    enumeraciones. Las realiza una etiqueta llamada enumeration que sirve paraindicar los posibles valores que puede tomar un componente. Por ejemplo:

  • 7/22/2019 LMSGI02

    36/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (36)

    definir tipos simples por lista

    Las listas permiten que un componente tenga como contenido una determinada lista devalores. la construccin de listas indica dos pasos:

    (1) Crear un tipo simple de datos cuyo contenido es una etiqueta list, la cual poseeel atributo itemType para indicar el tipo de elementos de la lista. Simplementecon ello e podra establecer una lista (valores separados por espacios) de valorespertenecientes al tipo indicado.

    (2) Crear el tipo ya definitivo de datos que contendr una etiqueta restriction a lacual como tipo base se indica el tipo simple de datos relacionado con la lista. ENla restriccin se pueden indicar estas etiquetas usando el atributo value:

    length. Indica que la lista tendr un nmero exacto de valores.

    minLength. Indica que la lista tendr un nmero mnimo de valores

    maxLength. Indica que la lista tendr un nmero mximo de valores

    enumeration. Posibles valores que puede tener la listawhiteSpace. Gestin de los espacios en blanco en cada elemento de la lista.

    pattern. Expresin regular que debe cumplir cada elemento de la lista.

    Es decir, son las etiquetas ya conocidas, pero que ahora se refieren a la lista.Ejemplo:

    Primero se define un tipo de lista (listaDecimales) simplemente indicando queser una lista cuyos valores sern nmeros decimales. Despus se concreta lalista (listaNotas), de modo que ahora se indica que la lista constar de tres aseis nmeros (en el XML cada nmero ir separado por espacios)

    definiciones locales de tipos

    Como se coment anteriormente, los componentes de XML Schema pueden definirse enmodo local o global. En modo global cualquier otro componente le puede utilizar, enmodo local slo aquel que contiene la definicin. Los datos simples se pueden crear, porejemplo, en un elemento y as se aplican slo a dicho elemento. Ejemplo:

  • 7/22/2019 LMSGI02

    37/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (37)

    El tipo simple declarado ni siquiera tiene nombre, ya que no se utilizar fuera delelemento elemento1.

    (2.3.5)atributosLos atributos se definen parecido a los elementos. Su sintaxis de definicin es:

  • 7/22/2019 LMSGI02

    38/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (38)

    Contenido compuesto (Complex Content). Pueden contener otros elementos,pero no PCDATA.

    Contenido mixto (Mixed Content). Pueden contener tanto texto como mselementos.

    La sintaxis de la etiqueta complexType admite sealar contenidos simples ycompuestos. Para los vacos y mixtos hay que utilizar (se ver ms adelante) atributosespeciales en la etiqueta element. Sin indicar nada especial, compexType parte de queestamos definiendo contenidos complejos (es decir, elementos que contienen mselementos).

    Los elementos pueden contener atributos, ms adelante se indica la forma deincorporarlos.

    elementos vacos

    Para indicar que un elemento es vaco basta con no indicar valores e indicar el nombredel elemento sin indicar tipo de datos alguno. Ejemplo:

    En este caso el elemento caso slo dispone de un atributo llamado valor, no ser posiblemeter ningn contenido en la etiqueta de casado. Si no deseamos atributos (aunque esmuy extrao), entonces simplemente no habr etiquetas attribute (pero s todas lasdems).

    definicin de contenidos con texto

    Se trata de usar la etiqueta

  • 7/22/2019 LMSGI02

    39/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (39)

    En el ejemplo, documento es un elemento de tipo string (texto) que contiene unatributo llamado idioma (tambin string). Es un poco enrevesado, pero es necesariohacerlo as.

    definicin de contenidos compuestos

    Como se ha comentado antes, los contenidos compuestos se refieren a los elementosque contienen otros elementos (pero nunca texto libre). Hay tres posibles tipos deelementos a contener: secuencias, elecciones y contenidos libres (all). Adems sepueden incorporar atributos.

    secuencias

    Dentro de un elemento es habitual indicar su contenido como una secuencia de

    elementos. Esto se permite con la etiqueta sequence, dentro de la cual se aadenetiquetas element para indicar los elementos que entran en la secuencia. Ejemplo:

    En el ejemplo, el elemento email est compuesto de cuatro elementos. El remite (quetiene obligatoriamente que aparecer una vez), elpara que aparecer al menos una vezy que puede aparecer tantas veces como se desee y los apartados opcionales CC y CCOque pueden aparecer repetidos.

    La etiqueta sequence posee los atributos minOccurs y maxOccurs para indicar queel bloque de la secuencia se puede repetir.

    elecciones

    Sirven para permitir elegir uno de entre varios elementos. Su funcionamiento es elmismo que en las secuencias, pero en este caso se utiliza una etiqueta llamada choice.

  • 7/22/2019 LMSGI02

    40/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (40)

    Ejemplo:

    En el ejemplo, el elemento identificacin, consta de dos posibles elementos firma ycdigo de los que slo se podr incluir uno.

    La etiqueta choice tambin posee los atributos minOccurs y maxOccurs.

    etiqueta allSe trata de una posibilidad similar a choice y sequence que se utiliza de la misma

    forma y que tiene como diferencia principal que los elementos que contiene puedenaparecer cero o una vez y adems en el orden que quieran. Ejemplo:

    En este caso la firma y el cdigo pueden aparecer o no, aparecer los dos e incluso elorden ser indiferente. Es una etiqueta muy potente que ahorra mucho trabajo.

    Esta etiqueta tiene los atributos minOccurs y maxOccurs, pero slo se puede indicarcomo valores cero o uno.

    mezcla de elementos

    A veces los contenidos de un documento XML son extremadamente complejos y por esose permite en los esquema colocar etiquetas choice dentro de etiquetas sequence yviceversa. Y lo mismo ocurre con las etiquetas all. Estas posibilidades permiten crearcualquier tipo de esquema por complejo que resulte. Ejemplo:

  • 7/22/2019 LMSGI02

    41/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (41)

    En el ejemplo, el elemento correo consta de tres elementos: remite, para y un terceroque puede ser cc o cco.

    aadir atributos

    En los apartados complexType, los atributos del elemento se definen al final delapartado complexType (justo antes de cerrarle). Ejemplo:

    Las personas contienen dos elementos en secuencia (nombre y apellidos) y dosatributos: uno opcional (sexo) que slo pueden tomar los valores Hombre oMujery uno

    obligatorio para la fecha de nacimientocontenidos mixtos

    Es el caso ms complejo. Se trata de elementos que contienen otros elementos yadems texto (e incluso atributos). Para permitir esta posibilidad hay que marcar elatributo mixed de la etiqueta complexType a true. Ejemplo:

    Lo malo es que no se puede controlar el tipo de datos del texto interior. Los elementosse controlan completamente, pero el texto no.

    uso de elementos y atributos globales

    Se trata de definir un elemento o un atributo para ser reutilizado en diferentes partesdel documento. La forma de utilizarlos es:

    Definirlos en la zona global (es decir, no definirlos dentro de ningn otro

    componente)

  • 7/22/2019 LMSGI02

    42/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    (42)

    En el caso de los elementos no se pueden indicar los atributos minOccurs ymaxOccurs para indicar la cardinalidad, porque slo tiene sentido dentro deotro elemento.

    En el caso de los atributos no se puede utilizar el atributo use, que indica la

    obligatoriedad de uso del atributo.Una vez definidos, donde se quieran reutilizar se define el elemento o atributodentro del componente en el que se quiere colocar y no se le da nombre, sinoque se usa el atributo ref para indicar el nombre del elemento o atributoglobal.

    Ejemplo:

    En este caso se ha definido un elemento global llamado email que representa unadireccin de email (dentro se define un tipo simple para restringir la forma en la que sedebera rellenar un email) y que despus el elemento trabajador la reutiliza paraindicar los correos electrnicos de un trabajador. Otros elementos podran reutilizaresta misma definicin.

    (2.3.7)grupos de elementosLa etiqueta group permite realizar grupos de elementos y eso permite organizarsemejor a la hora de crear un esquema. Dentro de cada grupo podemos utilizar etiquetassequence, choice y all de la misma forma que la vista anteriormente y as despusutilizar el grupo en la forma deseada. Muchas veces los grupos se definen de formaglobal y as se pueden utilizar en distintos elementos; pero es posible definirleslocalmente (suele tener menos inters hacerlo en local).

    Los grupos cuando se definen de forma global requieren indicar un nombre para ellos(si se definen de forma local no). Cuando un elemento desea incorporar un grupo global,

    utiliza la etiqueta group y con el atributo refindicara el nombre del elemento global

  • 7/22/2019 LMSGI02

    43/44

    1er curso de administracin de sistemas informticos en red

    autor: Jorge Snchez www.jorgesanchez.net

    (43)

    definido anteriormente. Pueden contener los atributos minOccurs, maxOccurs paraindicar las veces que puede repetirse el grupo en el elemento que le contiene.

    Ejemplo:

    (2.3.8)grupos de atributosLa idea es la misma que con los grupos de elementos: facilitar la escritura del cdigodel esquema. Se trata de definir (lo lgico es de forma global) una serie de atributosque utilizan diferentes elementos y as mejorar el mantenimiento del esquema XML.

    Los grupos de atributos se declaran con attributeGroup, al definir se utiliza elnombre y al usarle en un elemento se hace referencia a dicho nombre mediante laetiqueta ref.

    Ejemplo:

  • 7/22/2019 LMSGI02

    44/44

    lenguajes de marcas y sistemas de gestin de informacin(unidad 2)Validacin XML

    Se define en el ejemplo un grupo de atributos globales que se llama infoDoc y que estformado por tres atributos (lenguaje, tamao y ttulo) que se definen completamenteen el grupo. Despus dos elementos (documento y documentoRef) utilizan el grupo deatributos como si fuera un solo atributo. De modo que un XML basado en este esquema yvlido podra ser: