Upload
annnaa12
View
212
Download
0
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: