Está en la página 1de 34

XML

Introduccin/Definicin de XML
XML (Extended Markup Language) Es un metalenguaje extensible de
etiquetas desarrollado por el W3C que permite definir la gramatica de
lenguajes especficos(de la misma manera que !"ML es a su #e$ un
lenguaje definido por %&ML)
'or tanto( XML no es realmente un lenguaje en particular( sino una
manera de definir lenguajes para diferentes necesidades
%e puede #er como un subconjunto de %&ML muc)o m*s simple(
)asta el punto de que la especificaci+n de XML es una d,cima parte
que %&ML- 'or otro lado( el lenguaje XML se puede definir como un
metalenguaje( esto es( XML puede ser usado para definir toros
lenguaje( al igual que %&ML- 'or ejemplo( el lenguaje X!"ML(
ampliamente usado )o. en da en la /eb( se )a construido usando
como base XML-
Estructura y sintaxis de XML
0n documento XML est* formado( en principio( por lo que se conoce
como 1texto plano2( esto es( texto en el cual todos los caracteres se
representan #isualmente( sin existir caracteres no #isible
exceptuando los de salto de lnea( tabulador o espacio-
Los documentos escritos usando XML contendr*n marcas para
separar la informaci+n que estructura el documento de la informaci+n
que se quiere almacenar- 'ara construir dic)as marcas( en XML se
usan los caractere 132 . 142 para delimitar el texto que se desea
marcar( mientras que el car*cter 152 sir#e para indicar la etiqueta de
finali$aci+n del marcado- 0n posible ejemplo de documento XML sera
el siguiente6
3nombre4Luis35nombre4
Esta construcci+n se denomina )abitualmente 1elemento2 .
constitu.e la base principal de los documentos XML- 7dem*s de los
elementos( un documento XML puede contener otros tipos de
informaci+n- 7 continuaci+n( se especificar*n los m*s rele#antes-
Etiquetas, Elementos y atributos.
Las etiquetas son el componente de XML que permite definir los
elementos que conformar*n un documento de la siguiente forma6
3etiqueta48alor35etiqueta4
Como se puede obser#ar los elementos se formar*n usando una
etiqueta de inicio( otra de fin( delimitadas por los caracteres 142 .
132( . que comparten el identificador textual( pero a9adiendo el
car*cter 152 al principio- En medio de las etiquetas de inicio . fin del
elemento se representar* el contenido que se desee almacenar en
ese elemento - Este contenido puede a su #e$ englobar otros
elementos- 'or otro lado( los elementos pueden no contener ning:n
#alor( pero en ese caso se deber* usar solamente la etiqueta de
finali$aci+n-
%e considera que en el elemento XML engloba todo lo que se
encuentra entre las correspondentes etiquetas de inicio . de fin .
pueden contener tanto otros elementos como simplemente texto o
una combinaci+n de ambos
Ejemplo de XML para representar la fic)a de un alumno sera
sint*cticamente correcto6
3alumno4
3nombre4'ablo35nombre4
3apellido4',re$35apellido4
3telefono4;<======35telefono4
35alumno4
Los nombres de los elementos deber*n empe$ar por una letra o bien
por el car*cter 1>2 o 162 siempre . cuando el principio no contenga la
palabra 1xml en cualquier combianci+n posible de ma.:sculas .
min:sculas- 7dem*s( los nombres son 1case sensitive(Sensibles a
las maysculas) . solo podr*n contener letras( n:meros . los
caracteres 1>2( 2-2( 262
Los elementos pueden asimismo contener atributos( los cuales se
especificar*n en la etiqueta de inicio del elemento- El objeti#o de los
atributos es poder proporcionar una informaci+n adicional sobre un
elemento concreto- La sintaxis para representar los atributos consiste
en especificar el nombre del atributo dentro de la etiqueta de inicio( a
continuaci+ un smbolo 1?2 . finalmente el #alor del atributo
delimitado por comillas dobles o por comillas simples-
3Elemento< atrib<?2#al<2 atrib@?2#al@248alor35Elemento<4
3Elemento@ atrib<?28al32 atrib3?2#al3248alor35Elemento@4
Anclu.endo atributos en nuestro ejemplo anterior
3alumno sexo?2#aron2 Bec)aCacimiento?2=5D5<;;E24
3nombre4'ablo35nombre4
3apellido4',re$35apellido4
3telefono4;<======35telefono4
35alumno4
%e puede obser#ar que generalmente se pueden usar tanto atributos
como nue#os elementos para representar informaci+n- %in emabrgo(
el uso de un n:mero excesi#o de atributos puede pro#ocar que el
documento XML sea menos legible( m*s difcil de mantener .
difcilmente extensible- 7dem*s )a. que tener en cuenta que los
atributos no pueden contener informaci+n en forma de *rbol( esto es(
no pueden contener otros elementos o atributos tal . como sucede
con los elementos- Fe forma general( se puede establecer la
recomendaci+n no usar atributos en exceso . dejarlos casi
exclusi#amente para representaci+n de metadatos
%iguiendo esta recomendaci+n( tanto el atributo 1sexo2 como el
atributo 1Bec)aCacimiento2 se pueden con#ertir en elementos-
7dem*s( en este ejemplo( se a9ade un identificador del alumno como
atributo
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3alumno id?H=3@H4
3nombre4'ablo35nombre4
3apellido4',re35apellido4
3Bec)aCacimiento4
3dia4=35dia4
3mes4D35mes4
3a9o4;E35a4
35Bec)aCacimiento4
3sexo4#aron35sexo4
3telefono tipo?Hmo#ilH4===I===I===35telefono4
3direccion4Konda de %ego#ia35direccion4
35alumno4
Caracteres especiales
En XML algunos smbolos son reser#ados del lenguaje por lo que para
poder representarlos es necesario usar unos c+digo- Estos se definen
usando el smbolo L seguido de una palabra cla#e . terminados por
punto . coma- Estas construcciones son entidades predefinidas
(Luego #eremos las entidades) 7 continuaci+n( se detallan algunos de
los m*s rele#antes6
Cdio Car!cter
"quot# $
"amp# "
"apos# %
"lt# &
"t# '
Instrucciones de procesamiento
M*s all* de los propios datos contenidos en los fic)eros XML . las
etiquetas de marcado en un fic)ero XML se pueden encontrar
instrucciones especiales llamadas instrucciones de procesamiento-
Mstas comien$an con 3G N terminan con O4 0na de las instrucciones
procesamiento m*s )abituales es la que se usa para indicar qu,
#ersi+n de XML se #a a usar . cu*l es la codificaci+n de caracteres
que se #a a usar- 'or ejemplo( si se usa XML <-E . 0"BIJ la instrucci+n
de procesamiento sera la siguiente6
3Gxml #ersion?2<-E2 encoding?20"BIJ2G4
Comentarios y secciones CD()(
Fentro de un documetno XML se puede a9adir informaci+n que no
pertene$ca ni al marcado ni la informaci+n contenida en el
documento . que sir#e para documentarlo en forma de comentarios
internos- La sintaxis de un comentario consta de un texto delimitado
por una marca inicial 13PII1 . una marca final 1II42
3PQComentario #*lido en XMLII4
Los comentarios son elementos especiales . no necesita ninguna
marca de cierre- 7dem*s )a. que tener en cuenta que dentro de un
comentario no se pueden usar dos guiones seguidos 1II1
7dem*s( en XML se encuentran disponibles las secciones CF7"7 que
permiten marcar un texto para que ,ste no sea procesado por el
parser( es decir( no ser*n anali$adas sint*cticamente- CF7"7
pro#iene de 1C)aracter Fata2 (Fatos de car*cter) en contraposici+n a
datos de marcado- La sintaxis de estas secciones se basa en la
etiqueta de inicio 13PRCF7"7R1 . la etiquea de fin( 1SS42
Ejemplo6
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3PIILas dos definiciones del elemento seran interpretadas de la
misma forma II4
3alumnos4
3PCF7"7R
3alumno id?H3@<H4
3nombre4Luis35nombre4
35alumno4
35alumnos4
3alumnos4
LltTalumno id H3@<HLgtT
LltTnombreLgtTluisLltT5nombreLgtT
LltTalumnoLgtT
35alumnos4
Documentos XML bien formados y *!lidos
0na #e$ )emos #isto los elementos que pueden formar parte de un
documento XM . sus caractersticas el siguiente paso ser* establecer
cuando un documento es correcto- En este sentido( en XML se puede
)ablar de documentos 1bien formados2 . documentos 1#*lidos2
Los documentos bien formados son aquellos que son sint*cticamente
correctos( es decir( que cumplen las reglas expuestas anteriormente-
%in embargo( los documentos #*lidos son aquellos que adem*s de
estar bien formados( cumplen los requisitos de una definici+n de
estructura o F"F
7dem*s de las reglas expuestas anteriormente( se pueden destacar
algunos otros aspectos en los que no se )a incidido de forma directa6
- 0n documento XML debe contener un :nico elemento ra$
- Los elementos son caseIsensiti#e( por lo que las etiquetas de
inicio . fin de un elemento deben concordar en ma.:sculas .
min:sculas
- El documento s+lo contendr* caracteres #*lidos dependiendo
del tipo de codificaci+n del documento
- Los caracteres 132( 142( . 1L2 solo deben aparecer para
delimitar las etiquetas de los elementos . para usar caracteres
especiales
Espacios de nombres
Fe forma general( los documentos XML se suelen combinar con otros
documentos XML existentes( esto es( es )abitual que se desee usar
uno o #arios m+dulos desarrollados pre#iamente por terceras
personas- Esta modularidad es una caracterstica esenciall de XML .
permite al desarrollador poder reutili$ar c+digo existente que en
muc)os casos .a sido depurado . ampliamente probado-
El problema que surge en estos casos es la posible colisi+n que se
puede producir en los nombres de los elementos que conformen los
m+dulos que se quieren usar- 'ara solucionar este problema XML
proporciona un mecanismo denominado 1espacio de nombres2( que
permite asignar nombres extendidos a los elementos de forma que se
puedan e#itar las colisiones
Declaracin de un espacio de nombres
0n espacio de nombres se define como una referencia 0KA que ser#ir*
para identificar los elementos que pertenecen a dic)o espacio de
nombres- Utra forma de #erlo es que los elementos tendr*n un
nombre compuesto por dos partes6 una primera con su nombre . una
segunda con el nombre de espacio de nombres- Este nombre
compuesto permitir* identificar de forma un#oca al elemento en
cuesti+n . de esta forma conocer siempre a qu, elemento se est*
refiriendo el documento-
La construcci+n de estos nombres extendidos se reali$a uniendo el
nombre al espacio de nombres . el nombre del elemento o atributo
usando como conector el smbolo 162- %in embargo( las referencias
0KA pueden ser largas( lo que #a en detrimento de la legibilidad .
claridad del documento( adem*s de propiciar que se cometan errores
m*s f*cilmente- 7dem*s las 0KAs pueden contener caracteres no
#*lidos en XML- 'ara solucionar este problema( en XML se puede
asignar un sin+nimo corto al espacio de nombres de forma que este
sin+nimo corto sea el que se use a lo largo del documento- - El
sin+nimo se asigna usando el separador 162 . la etiqueta 1xmlns2- En
reali$ada( 1xmlns2 es un atributo reser#ado
Ejemplo6
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3elementoej xmlns6enej?H)ttp655dominioeje-com5rutaejH4
3enej6elemento<4"exto <35enej6elemento<4
3enej6elemento@4"exto @35enej6elemento@4
35elementoej4
%e puede obser#ar que el sin+nimo corto del espacio de nombres de
ejemplo es 1enej2 . que su uso resulta m*s adecuado que el nombre
completo del espacio de nombres )ttp655dominioeje-com5rutaej-
7dem*s( se puede obser#ar que los elementos 1elemento<2 .
1elemento@2 pertenecen al espacio de nombres 1enej2 al estar
calificados con el sin+nimo de dic)o espacio-
Espacios de nombres por defecto
%i un espacio de nombres se declara sin su sin+nimo correspondiente
esto indicar* que todos los elementos (incluido el elemento que
declara el espacio de nombres) que contenga pertenecer*n a dic)o
espacio d enombres- 'or tanto( sera como definir un espacio de
nombres por defecto para los elementos que no tengan espacio de
nombres asignado-
Utro uso de los espacios d enombres que puede resultar de gran
utilidad es dejar su declaraci+n en blanco (xmlns?22)( lo que indicara
que los elementos . atributos contenidos( por defecto no pertenecen
a ning:n espacio de nombres-
'ara terminar( )acer )incapi, en que cuando se declara un espacio
de nombres por defecto (o sin espacio de nombres por defecto(
dejando el atributo xmlns #aco) pero un elemento contiene un prefijo
de un espacio de nombres( el espacio de nombres que pre#alecer*
ser* ,ste :ltimo-
E+ercicios
<- Fefinir un documento XML que permita representar un libro-
Feber* contener los atributos tpicos como 1ttulo2( 1autores2(
1editorial2(2fec)a de publicacion2( 1isbn2V
2. 7 partir de la definici+n anterior escribir un documento XML que
al menos contenga <E entradas de libros-
3. Wuscar un #alidador de XML online por ejemplo el de W3C
)ttp655#alidator-/3-org ( introducir el documento generado en el
ejercicio anterior . comprobar que el documento est, bien
formado-
4. Crear un espacio de nombres ficticio e introducirlo en el XML del
ejercicio @ . comprobar que el documento XML sigue estando
bien formado-
Ejemplo6
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3biblioteca xmlns6biblio?H)ttp655mibiblioteca-esH4
3biblio6libro4
3titulo48einte a9os no son nada35titulo4
3autor4'epe ',re$35autor4
3editorial4'laneta35editorial4
3fec)apublicacion4<<5<<5<<35fec)apublicacion4
3isbn4<3<3@@3X@3X35isbn4
35biblio6libro4
35biblioteca4
Definicin de esquemas y *ocabularios en XML
XML )a sido propuesto como est*ndar en el intercambio de
informaci+n( independientemente de la plataforma en que se genere
o se utilice- Esta premisa( en principio( es #*lida siempre . cuando los
documentos XML no cambien durante los intercambios- %i en los
intercambios de permite la modificaci+n( adici+n o supresi+n de
elementos de informaci+n( se )a de tener especial cuidado de no
modificar la estructura del documento- Co siempre es posible . puede
llegar el caso en que el mismo documento pueda leerse en una
aplicaci+n . en otra no-
Co solo es imprescindible que el documento est, bien formado (con
las etiquetas de apertura . cierre bien ubicadas( que la codificaci+n
sea correcta( que los elementos cumplan la sintaxis de XML( etc)( sino
que ambos actores (emisor . receptor) se ci9an a un mismo formato
de fic)ero definido pre#iamente- 'ara e#itar estos casos( se )a de
definir una estructura fija del documento que cono$can las partes que
intercambian la informaci+n-
7 continuaci+n( se mostrar*n dos maneras de especificar formatos de
comunicaci+n en XML( las F"F . los XML %c)ema
D)D
F"F o Focument ".pe Fefinition es la definici+n de c+mo se
constru.e un documento XML para que se ajuste a las necesidades
pre#iamente anali$adas- Es decir( establece qu, elementos son
aceptados . en qu, posiciones deben estar dentro de un documento
XML
Cuando se define una F"F . se referencia dentro de un documento
XML( se establece una relaci+n de6
- Yu, l,xico es el que se espera
- Yu, reglas sint*cticas debe cumplir nuestro lenguaje
El significado sem*ntico se proporciona en el uso del F"F . del
docuemnto XML al generar las aplicaciones que lo utili$an-
'or tanto( antes de crear un documento XML se deber* anali$ar qu,
elementos . etiquetas se #an a necesitar para la aplicaci+n que se
quiere crear- 'ara esto sir#e una F"F
O'or qu, resulta importante la creaci+n de F"FG 'rincipalmente(
cuando se anali$a un almacenamiento de informaci+n en XML es
porque esa informaci+n es importante compartirla- 'ero aunque la
compartici+n de la informaci+n pueda resultar interesante( la
informaci+n debe estar sujeta a una serie de reglas para que todos
los que lo utilicen(en consultas( inserciones( modificaciones( borrados(
etc) . debe resultar bien formado . #*lido para el uso por terceras
aplicaciones- %i en el proceso de acceso . modificaci+n del
documento XML se incumple su estructura( nos encontraremos con
un documento no #*lido . con un futuro problema- 'or tanto( una F"F
permitir* asegurar que la informaci+n que contiene es #*lida .
cumple los requisitos de intercambio de informaci+n entre personas
con la misma F"F-
La creaci+n de una F"F resulta mu. simple6
<- La F"F se puede ubicar dentro del propio documento XML
@- La F"F se ubica en un fic)ero externo fuera del documento XML
(Con extensi+n XML)
7mbas reali$an la misma funci+n pero resulta m*s c+moda utili$ar un
fic)ero externo para almacenar la F"F . reali$ar un enlace en el
docuemnto XML para que la use- 7dem*s de la comodidad( existe
otra #entaja fundamental6 no se almacena en cada documento XML la
F"F- %i tu#i,semos muc)os fic)eros XML( basados en la misma
especificaci+n F"F( se tendra que cambiar en todos los fic)eros la
declaraci+n de la F"F( cosa que si estu#iera enla$ado en un fic)ero
externo( se cambiara una :nica #e$ . todos los documentos XML lo
apro#ec)aran- 7dem*s se estara almacenando la misma informaci+n
en todos los documentos( lo que aumentara el tama9o del
documento XML-
'ara continuar( estable$camos un ejemplo en el que utili$ar una F"F-
%e quiere almacenar los mensajes de m+#iles que se en#an a un
ser#idor- Los datos se guardar*n son los siguientes6
- C:mero de tel,fono del usuario
- Bec)a de en#o
- !ora de en#o
- Contenido del mensaje
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3WFsms4
3PFUC"N'E WFsms %N%"EM 1WFsms-dtd2
3sms4
3telefono4 ;== D= == == 35telefono4
3fec)a4<5Z5@E<<35fec)a4
3)ora4@36==35)ora4
3mensaje4[uego<6 "etris35mensaje4
35sms4

3sms4
3telefono4=X@ EEE EEE35telefono4
3fec)a4 <E5<<5@E<<35fec)a4
3)ora4E;6@@35)ora4
3mensaje4[uego@6 Comecocos35mensaje4
35sms4
35WFsms4
L7 F"F que permite establecer el formato de intercambio de estos
mensajes %M%( en el documento XML( podra ser el siguiente (fic)ero
1WFsms-dtd2)
Cotad que el fic)ero WFsms est* referenciado en el documento XML-
%i se quisiera incluir todo en el mismo docuemnto XML( entonces
quedara6
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3PFUC"N'E WFsms R
3PELEMEC" WFsms (sms\)4
3PELEMEC" sms (telefono( fec)a( )ora( mensaje)4
3PELEMEC" telefono (]'CF7"7)4
3PELEMEC" fec)a (]'CF7"7)4
3PELEMEC" )ora (]'CF7"7)4
3PELEMEC" mensaje (]'CF7"7)4
S4

3WFsms4

3sms4
3telefono4 ;== D= == == 35telefono4
3fec)a4<5Z5@E<<35fec)a4
3)ora4@36==35)ora4
3mensaje4[uego<6 "etris35mensaje4
35sms4

3sms4
3telefono4=X@ EEE EEE35telefono4
3fec)a4 <E5<<5@E<<35fec)a4
3)ora4E;6@@35)ora4
3mensaje4[uego@6 Comecocos35mensaje4
35sms4
35WFsms4
,loques para construir una D)D
8iendo el ejemplo de la base de datos de %M%( se puede obser#ar una
serie de elementos definidos en una F"F6
- Elemento- Es el bloque principal con el que se constru.en los
elementos F"F
- 7tributo6 Borma de a9adir m*s informaci+n a un elemento
- Entidad- En XMLexisten algunos caracteres que tienen un
significado especial- La aparici+n de estos caracteres como
datos almacenables )ace que se puedan confundir con
entidades propias de un documento XML- %on entidades kas
siguientes6
o LnbspT ?4 Espacio en blanco
o LgtT ?4 4
o LltT ?4 3
o Lquot ?4 1
o LaposT ?4 ^
o LampT ?4 L
- %e pueden usar dentro del propio documento XML . tras
parsear el documento tomar*n el #alor indicado a la derec)a-
"ambi,n el usuario puede definir entidades propias para que(
despu,s de anali$ar el docuemtno XML( se sustitu.an por el
#alor indicado- Es como una especie de definici+n
preestablecida- 0n par de ejemplos son los siguientes6
o 3PEC"A"N pi 13-<X-<=-;@24 ?4 LpiT
o 3PEC"A"N textBile %N%"EM 1fic)ero-txt24 ?4LtextBile
o 3PEC"A"N mi0KL %N%"EM )ttp655///-as-com4 ?4 mi0KL
- 'CF7"7- %u significado en ingl,s es 'arsed C)aracter Fata-
Andica que entre la etiqueta . cierre de apertura de ese
elemento( se almacenar*n caracteres como texto . ser*n
anali$ados por un parser- Como es l+gico( al anali$arse
mediante el parser el contenido del texto para encontrar
entidades . elementos ( si es solo texto no podr* encontrarse
ninguno de los caracteres anteriormente mencionados (pues
podra confundir al parser a la )ora de anal$iar el documento
XML)
- CF7"7-- %u significado en ingl,s C)aracter Fata- 7 efectos es
pr*cticamente igual que 'CFata pero el contenido de ese
elemento( entre sus etiquetas de apertura . cierre( no se
anali$ar* por el parser de an*lisis de entidades . elementos
XML-
Los elementos se declaran de una de las dos siguientes maneras6
3PELEMEC" nombre>del>elemento categora4
U
3PELEMEC" nombre>del>elemento (nodos>)ijos)4
En el segundo caso se pueden definir el nombre>del>elemento como
el nodo padre del que cuelgan un conjunto de nodos )ijos (separados
por comas)
%i existiera alg:n elemento que deba estar #aco( existe la palabra
reser#ada EM'"N que puesta en la $ona de 1categora2 permite
indicar este )ec)o- 0n ejemplo de uso es la etiqueta 3br4 de !"ML-
Esta etiqueta permite establecer un salto de lnea pero debera estar
undicado como 3br435br4- %i se declara como EM'"N( entonces se
podra simplificar el salto de lnea de la siguiente manera 63br 54
3PELEMEC" saltoLinea EM'"N4 ?4 3saltoLinea 54
3PELEMEC" telefono (]'CF7"7)4
3PELEMEC" )ora (]CF7"7)4
En el caso concreto de 7CN( permite indicar que cualquier
combinaci+n de elementos conocidos seran #*lidos en ese caso-
3PELEMEC" )ora (]7CN)4 ?4 'odra #aler tel,fono( fec)a( mensaje(
V
Co se )a comentado nada( )asta el momento( sobre los atributos- La
manera de declararlos en un F"F es mediante la siguiente sintaxis6
3P7""LA%" nombre>elemento nombre>atributo tipo>atributo
#alor>por>defecto4
- Combre>elemento6 es el elemento al que se le quiere a9adir el
atributo-
- Combre>atributo6 es el nombre del atributo que se quiere
a9adir-
- "ipo>atributo6 existen muc)os tipos de atributos destacan6
o CF7"76 es un texto- 'odr*n tener cualquier car*cter
o AF6 Es un identificador que permite identificar el elemento
de manera :nica en todo documento XML
o AFKEB6 Es un identificador de otro elemento del propio
documento XML
o AFKEB%6 Es una lista de identificadores a otros elementos
(tipo< _ tipo@ _ tipo3 _ V) el #alor es uno de los indicados
en esta lista enumerada (definida por el usuario)-
o CM"U`EC6 Es un texto que solo podr* tener letras(
dgitos( gui+n( 1I1( punto( 1-2( . dos puntos 162- Es lo que
se llama nombres #*lidos XML
o CM"U`EC%6 Es una lista de nombres XML #*lidos- Es
como un CM"U`EC pero se inclu.en los espacios en
blanco( 1 1( tabuladores o retornos del carro-
o EC"A"N6 El tipo de atributo es una entidad que se )a
declarado anteriormente
o EC"A"AE%6 Es una lista de entidades
Los atributos podr*n ser declarados como obligatorios ]KEY0AKEF(
optati#os( ]AM'LAEF o fijos ]BAXEF- Este :ltimo obliga al usuario que
el atributo sea siempre el mismo( sin que pueda cambiarlo (si se
cambia no estara conforme a la F"F declarada . de#ol#era un error)
Como no se )a declarado ning:n atributo en el ejemplo de los %M%(
cambiaremos el elemento hora para a9adir la $ona o franja )oraria
(de manera obligatoria)- %e quiere tener un documento XML de este
tipo6
V-
3)ora $ona?2&M"a<24E;6@@35)ora4
-V
'or lo que el F"F debe a9adir la siguiente lnea6
3P7""LA%" )ora $ona CF7"7 1&M"a<2 ]KEY0AKEF4
-ecuencias de elementos. Estructura con /i+os
'odemos #er que el elemento sms est* compuesto por tel,fono(
fec)a( )ora . mensaje- Esta es una relaci+n padreI)ijos- Amaginemos
que una #e$ definida una F"F( nos damos cuenta que( por cada %M%
recibido se pueden almacenar #arios mensajes - En este caso debera
cambiar la ocurrencia de la aparici+n de los elementos justo cuando
los indicamos en el elemento padre- Las ocurrencias que pueden
aparecer se indican con los siguientes operadores6
- 16 Andica que aparece oblogatoriamente una #e$- Es el caso
inicial en cuanto se declara un )ijo al elemento sms-
- 1a26 indica que puede )aber una o m*s ocurrencias del
elemento indicado
o 3PELEMEC" sms (tel,fono( fec)a( )ora( mensajea)4
- 1\26 Andica que puede )aber cero o m*s ocurrencias del
elemento indicado
o 3PELEMEC" sms (tel,fono( fec)a( )ora( mensaje\)4
- 1G26 indica que puede )aber cero o una ocurrencia del elemento
indicado (tambi,n llamado opcionalidad)
o 3PELEMEC" sms (tel,fono( fec)a( )ora( mensajeG)4
Co solo se pueden cambiar las ocurrencias de los )ijos declarados(
sino que podemos indicar la opcionalidad de la aparici+n de )ijos- En
este caso podramos definir que querremos alamcenar o la )ora o el
mensaje pero no las dos simult*nemente pero s obligatoriamente
una de las dos( por lo que quedara as6
3PELEMEC" WFsms (sms\)4
3PELEMEC" sms (telefono( fec)a( ()ora _ mensaje)4
3PELEMEC" telefono (]'CF7"7)4
3PELEMEC" fec)a (]'CF7"7)4
3PELEMEC" )ora (]'CF7"7)4
3PELEMEC" mensaje (]'CF7"7)4
E+emplo.
%e quiere crear una biblioteca de libros en un documento XML- 'ara
ello( se necesita crear una F"F que almacene los siguientes campos
de un libro6
a- C+digo del libro
b- "tulo
c- Editorial
d- Edici+n
e- A%WC
f- C:mero de p*ginas
g- 7utor
Como F"F incrustada 6
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3PFUC"N'E biblioteca R
3PELEMEC" biblioteca (libro\)4
3PELEMEC" libro (codigo( titulo( Editorial( Edicion( A%WC(
Cumero>de>paginas( 7utor)4
3PELEMEC" codigo (]'CF7"7)4
3PELEMEC" titulo (]'CF7"7)4
3PELEMEC" Editorial (]'CF7"7)4
3PELEMEC" Edicion (]'CF7"7)4
3PELEMEC" A%WC (]'CF7"7)4
3PELEMEC" Edici+n (]'CF7"7)4
3PELEMEC" Cumero>de>paginas (]'CF7"7)4
3PELEMEC" 7utor (]'CF7"7)4
S4
3biblioteca4

3libro4
3codigo4
EE<
35codigo4
3titulo4
El Uscuro '7sajero
35titulo4
3Editorial4
0mbriel
35Editorial4
3Edicion4
La primera
35Edicion4
3A%WC4
JXI;=D<JIJ3IX
35A%WC4
3Cumero>de>paginas4
@=<
35Cumero>de>paginas4
37utor4
[eff Lindsa.
357utor4
35libro4
35biblioteca4
%i lo #alidamos en la direcci+n )ttp655///-xml#alidation-com5
'odemos comprobar que se #alida sin problemas6
OC+mo )acer la #alidaci+n para incluir esta misma informaci+n de
F"F desde un fic)ero externoG
7ntes que nada debemos separar los dos fice)ros que tendremos
a)ora( biblioteca-xml . biblioteca-dtd6
0rimer fic/ero biblioteca.xml
3Gxml #ersion?H<-EH encoding?HutfIJHG4
3PFUC"N'E biblioteca %N%"EM Hbiblioteca-dtdH4
3biblioteca4

3libro4
3codigo4
EE<
35codigo4
3titulo4
El Uscuro '7sajero
35titulo4
3Editorial4
0mbriel
35Editorial4
3Edicion4
La primera
35Edicion4
3A%WC4
JXI;=D<JIJ3IX
35A%WC4
3Cumero>de>paginas4
@=<
35Cumero>de>paginas4
37utor4
[eff Lindsa.
357utor4
35libro4
35biblioteca4
-eundo fic/ero biblioteca.dtd
3PELEMEC" biblioteca (libro\)4
3PELEMEC" libro (codigo( titulo( Editorial( Edicion( A%WC(
Cumero>de>paginas( 7utor)4
3PELEMEC" codigo (]'CF7"7)4
3PELEMEC" titulo (]'CF7"7)4
3PELEMEC" Editorial (]'CF7"7)4
3PELEMEC" Edicion (]'CF7"7)4
3PELEMEC" A%WC (]'CF7"7)4
3PELEMEC" Edici+n (]'CF7"7)4
3PELEMEC" Cumero>de>paginas (]'CF7"7)4
3PELEMEC" 7utor (]'CF7"7)4
'ara #alidar ambos elementos( a)ora procedemos a la direcci+n
anterior6
Cargamos en primer lugar el arc)i#o xml- Fespues )acemos clic en
#alidar
N nos aparece lo siguiente6
7qu nos est* informando de que el arc)i#o tiene una referencia a una
dtd . que para #alidar ambas( debemos incluir a continuaci+n el
contenido del arc)i#o dtd- Lo )acemos6

N( tras )acer clic en 1continue #alidation2 (Continuar #alidaci+n)
Cos dice lo siguiente6
Co )ubo errores encontrados( as que nuestros documentos( tanto
F"F como XML est*n bien formados .( adem*s( son #*lidos-
E-12EM(-
!asta el momento se )a )ablado de c+mo generar un lenguaje XML
con la definici+n de las reglas que lo componen (F"F)- Utra manera
de formali$ar esas reglas es con un lenguajes llamado XML %c)ema
(tambi,n llamado X%F o XML %c)ema Fefinition) %e puede decir que
un X%F (o esquema( de a)ora en adelante)( es la e#oluci+n natural de
un F"F- 'ermite expresar con ma.or potencia gram*ticas m*s
complejas utili$ando la misma sintaxis de XML- Caci+ en <;;J . se
recomend+ su uso por el W3C a partir en el @EE<- Las caractersticas
principales de un esquema son las siguientes66
- Fefine qu, elementos pueden aparecer en un documento XML
- Fefine qu, atributos pueden aparecer en un documento XML
- Fefine qu, elementos son compuestos( indicamdo qu,
elementos )ijos deben aparecer . en qu, orden-
- Fefine qu, elementos pueden ser #acos o que pueden inclur
texto asociado
- Fefine los tipos que pueden utili$arse en cada elemento o
atributo-
- Fefine la obligatoriedad( la optati#idad de elementos .5o
atributos
%i se anali$a con un F"F( pr*cticamente permite reali$ar las mismas
funcionalidades- Entonces( OYu, diferencia un F"F de un esquema
X%F si sir#en para lo mismoG
La principal #entaja de X%F es que al estar basado en XML( es
f*cilmente extensible a las futuras modificaciones o necesidades que
se identifiquen- 7dem*s( no es necesario aprender un nue#o lenguaje
(En contraposici+n con los F"F) "ambi,n permite definir de manera
mu. clara los tipos de datos . los espacios de nombres que se
soportan- Esto es realmente importante puesto que si un elemento se
sabe que es del tipo double .( finalmente( se escribe como integer (
no se admitir* la #alide$ de un docuemnto XML )asta que se corrija
ese error- Es m*s( se pueden definir los tipos exactamente igual que
si fuese una base de datos( facilitando la con#ersi+n de uno a otro .
las transferencias de informaci+n-
Como anteriormente( partiremos de un documento XML . definiremos
el esquema- En la base de datos de %M%( tenemos alamcenados
mensajes como el siguiente6
(rc/i*o ,Dsms.xml
3Gxml #ersion?H<-EH encoding ?HA%UIJJ=;I<HG4
3WFsms xmlns6xsi?H)ttp655///-/3-org5@EE<5XML%c)emaIinstanceH
xsi6noCamespace%c)emaLocation?HWFsms%c)ema-xsdH4
3sms4
3telefono4===I===I===35telefono4
3fec)a4@@5;5@E<<35fec)a4
3)ora4@36==35)ora4
3mensaje4[uego <6 "etris35mensaje4
35sms4
35WFsms4
7ntes tenamos una F"F que permita #alidarlo- 7)ora( definiremos el
esquema en los mismos t,rminos que el fic)ero anterior
(rc/i*o ,dsms-c/ema.xsd
3Gxml #ersion?H<-EHG4
3xs6sc)ema xmlns6xs?H)ttp655///-/3-org5@EE<5XML%c)emaH
#ersion?HE-<H xml6lang?HesH4
3xs6element name?HWFsmsH4
3xs6complex".pe4
3xs6sequence4
3xs6element name?HsmsH maxUccurs?HunboundedH4
3xs6complex".pe4
3xs6sequence4
3xs6element name ? HtelefonoH t.pe?Hxs6stringH54

3xs6element name ? Hfec)aH t.pe?Hxs6stringH54
3xs6element name ? H)oraH t.pe?Hxs6stringH54
3xs6element name ? HmensajeH t.pe?Hxs6stringH54
35xs6sequence4
35xs6complex".pe4
35xs6element4
35xs6sequence4
35xs6complex".pe4
35xs6element4
35xs6sc)ema4
Comprobamos a)ora que ambos arc)i#os #alidan con nuestro
#alidador6
Lo que produce como salida6
"al . como podemos leer nos dice que el arc)i#o WFsms%c)ema est*
siendo referenciado . que por fa#or le inclu.amos para poder
continuar con el proceso de #alidaci+n
Lo )acemos6
N el resultado final( tras pulsar 1Continue #alidation2( es el siguiente6
Con lo cual( sabemos que nuestros dos arc)i#os est*n bien formados
. son #*lidos
ELEME3)4 5(67
0n esquema se puede componer de muc)os elementos enla$ados- El
elemento principal es el elemento ra$ . deber* estar siempre6
3Gxml #ersion?2<-E2G4
3xs6sc)ema4
V
35xs6sc)ema4
Este elemento ra$ puede contener algunos atributos interesantes- En
el ejemplo anterior se #io que indicaba el espacio de nombres( una
#ersi+n . un lenguaje predefinido- Entre los atributos m*s
importantes se encuentra el siguiente6
3xs6sc)ema xmlns6xs?2)ttp655///-/3-org5@EE<5XML%c)ema24
V
35xs6sc)ema4
Andica cu*l es el espacio de nombres en el que se basa para saber
qu, elementos . tipos de datos son los soportados en el esquema-
ELEME3)4- -IM0LE-
El resto de los elementos son los que el usuario puede definir para
declarar un lenguaje XML- Llamamos elemento simple a aquel que
puede contener informaci+n . que no tiene otros elementos )ijos
asociados a ,l- "ampoco puede tener atributos en su interior- En
argot de *rbol jer*rquico( seran los nodos )oja en los que solo )abr*
texto-
'ara definir un elemento nue#o( la sintaxis a seguir es la siguiente
3xs6element name?2nombre>elemento2 t.pe?2tipo>elemento24
Festaca que el nombre puede ser el que desee el usuario (mientras
que no est, repetido) %in embargo( el tipo tiene que ser uno de los
siguientes6
- xs6string
- xs6date
- xs6time
- xs6date"ime
- xs6decimal
- xs6integer
- xs6boolean
- xs6)exWinar.
Amaginemos que queremos estabelcer un conjunto de elementos
simples para almacenar la informaci+n de un alumno de una escuela-
Los datos a almacenar seran6
- C+digo de alumno
- Combre
- 7pellido<
- 7pellido@
- F-C-A-
- Bec)a de nacimiento
- Curso
- Cuota pagada (Wooleano)
'odramos definir los siguientes elementos6
3xs6element name?2codigo2 t.pe?2xs6integer254
3xs6element name?2nombre2 t.pe?2xs6string254
3xs6element name?2apellido<2 t.pe?2xs6string254
3xs6element name?2apellido@2 t.pe?2xs6string254
3xs6element name?2dni2 t.pe?2xs6string254
3xs6element name?2fec)aCacimiento2 t.pe?2xs6date254
3xs6element name?2curso2 t.pe?2xs6integer254
3xs6element name?2cuota'agada2 t.pe?2xs6boolean254
Amaginemos que se quiere indicar( por defecto( que todo alumno tiene
la cuota sin pagar- Cuando se define el elemento cuota'agada
podemos a9adir ese #alor por defecto de la siguiente forma6
3xs6element name?2cuota'agada2 t.pe?2xs6boolean2
default?2false254
En cambio( si lo que se quiere es que tenga un #alor fijo siempre( el
cambio sera el siguiente6
3xs6element name?2cuota'agada2 t.pe?2xs6boolean2
fixed?2false254
()5I,2)4-
Los atributos son complementos de informaci+n que se pueden
asignar a un elemento pre#iamente declarado- La sintaxis de un
atributo es la siguiente6
3xs6attribute name?2nombre>atributo2 t.pe?2tipo>atributo24
En los campos name . t.pe se aplica exactamente lo mismo que lo
#isto en los elementos simples-
%iguiendo con ele ejemplo de los alumnos de una escuela( nos piden
a9adir un atributo al elemento curso puesto que en un colegio puede
darse el caso de tener #arios cursos concurrentes . no pertenecer a la
misma clase ('or ejemplo( <b letra 7( <b letra W( etc-
3curso letra?2724<35curso4
Febemos modificar lo siguiente en el esquema6
3xs6element name?2curso2 t.pe?2xs6integer254
3xs6attribute name ?2letra2 t.pe?2xs6string254
'ara terminar( es necesario indicar qu, #alores por defecto( fijos o
#alores opcionales puede tomar un atributo- 7 continuaci+n( se #en
ejemplos de los tres casos
3xs6attribute name?2letra2 t.pe?2xs6string2 default?27254
3xs6attribute name?2letra2 t.pe?2xs6string2 fixed?27254
3xs6attribute name?2letra2 t.pe?2xs6string2 use82required254
5E-)5ICCI43E-
En algunos momentos es importante establecer un rango de #alores
en los que un elemento puede mo#erse- !asta el momento no )emos
podido reali$ar ese tipo de condicionantes por lo que se mostrar* un
ejemplo de c+mo reali$arlo- Amaginemos que los alumnos anteriores
deben cumplir la condici+n de estar entre los <D . los @X a9os para
poder )acerse el carnet jo#en- %i no est* en ese rango( no podra
solicitarlo- En primer lugar estableceremos un nue#o atributo llamado
edad (aunque podra calcularse la edad por la fec)a de nacimiento .
la actual) 7 continuaci+n indicamos la restricci+n6
3xs6element name?2edad24
3xs6simple".pe4
3xs6restriction base?2xs6integer24
3xs6minAnclusi#e #alue?2<D254
3xs6maxAnclusi#e #alue?2@X254
35xs6restriction4
35xs6simple".pe4
35xs6element4
Las restricciones no son solo :tiles para los elementos( sino que se
pueden aplicar a los atributos tambi,n- En este caso( #amos a
declarar una restricci+n sobre el atributo 1letra2 para que tome uno
de los #alores determinados de una lista(172(2W2(2C2(2F2)
3xs6attribute name?2letra24
3xs6simple".pe4
3xs6restriction base?2xs6string24
3xs6enumeration #alue?27254
3xs6enumeration #alue?2W254
3xs6enumeration #alue?2C254
3xs6enumeration #alue?2F254
35xs6restriction4
35xs6simple".pe4
35xs6attribute4
"ambi,n sera #*lida una soluci+n como la siguiente6
3xs6attribute name?2letra2 t.pe?2letrasCursos254
3xs6simple".pe name?2letrasCursos254
3xs6restriction base?2xs6string24
3xs6pattern #alue?2R7IFS254
35xs6restriction4
35xs6attribute4
En este ultimo caso se )a deifnido un tipo simple llamado
letrasCursos que podr* ser reutili$ado en otras partes del esquema-
Cabe destacar que en #e$ de reali$ar una enumeraci+n se )a definido
un patr+n en forma de expresi+n regular( lo que permite tener ma.or
potencia para declarar #alores predeterminados- "ambi,n )ubiese
#alido cualquiera de las siguientes expresiones regulares6
3xs6pattern #alue?2R7WCFS254
3xs6pattern #alue?27_W_C_F254
"ambi,n )a. posibilidad de establecer restricciones sobre la longitude
de lo contenido por un elemento- El siguiente ejemplo clarifica
bastante esta restricci+n6
3xs6element name?2dni24
3xs6simple".pe4
3xs6restriction base?2xs6string24
3xs6lengt) #alue?2<E254
35xs6restriction4
35xs6simplet.pe4
35xs6element4
xs6lengt)6 establece una longitude fija
xs6minLengt)6 Establece un mnimo en la longitud
xs6 maxLengt)6 Establece un m*ximo en la longitud
Existe otro tipo de restricciones que #an asociadas al contenido que
almacena el elemento- En concreto son importantes aquellas que
permiten definir el comportamiento que debe tener el procesador
XML cuando se encuentra un espacio en blanco- Amaginemos que se
quiere almacenar la direcci+n de #i#ienda )abitual del alumno- Es
claro que deberamos crear un nue#o elemento
3xs6element name?2direccion24
3xs6simple".pe4
3xs6restriction base?2xs6string24
3xs6/)itespace #alue?2preser#e254
35xs6restriction4
35xs6simple".pe4
35xs6element4
En el caso de los espacios en blanco nos encontramos con las
siguientes opciones6
'reser#e6 mantiene los espacios en blanco que almacene entre sus
etiquetas de apertura . cierre(realmente mantiene los espacios(
tabuladores( saltos de lnea . retornos de carro)
Collapse6 borra todos los espacios en blanco que encuentre entre sus
etiquetas de apertura . cierre(espacios( tabuladores( saltos de lnea .
retornos de carro)
Keplace6 sustitu.e todos los espacios en blanco( tabuladores( saltos
de lnea . retornos de carro por un :nico espacio en blanco-
!emos #isto las m*s representati#as a la )ora de definir un esquema
XML( pero existen m*s( cu.o nombre define su funcionalidad
perfectamente6
xs6maxExclusi#e6 es el m*ximo #alor- %eran #*lidos todos aquellos
que sean menores que el indicado
xs6minExclusi#e6 es el mnimo #alor- %eran #*lidos todos aquellos que
sean ma.ores que el indicado
xs6totalFigits6 indica el n:mero exacto de cifras permitidas en el
elemento o atributo- Febe ser ma.or que cero
xs6fractionFigits6 indica el n:mero m*ximo de decimales que se
permiten- Febe ser ma.or o igual a cero
ELEME3)4- C4M0LE94-
En contraposici+n a los elementos simples( los elementos complejos
son todos aquellos que se componen de otros elementos .5o que
puedan contener atributos propios- 'odemos identificar como
elementos complejos los siguientes6
- Elementos que contienen otros elementos en su interior
- Elementos que contienen atributos en su interior
- Elementos que contienen otros elementos . atributos en su
interior
0n ejemplo de elemento complejo es ele siguiente(por tener un
atributo)6
3curso letra?2724<35Curso
En el ejemplo de la base de datos de %M%( un elmeento complejo( por
tener otros elementos en el interior podra ser el elemento WFsms6
3xs6element name?HWFsmsH4
3xs6complex".pe4
3xs6sequence4
3xs6element name?HsmsH maxUccurs?HunboundedH4
3xs6complex".pe4
3xs6sequence4
3xs6element name ? HtelefonoH t.pe?Hxs6stringH54

3xs6element name ? Hfec)aH t.pe?Hxs6stringH54
3xs6element name ? H)oraH t.pe?Hxs6stringH54
3xs6element name ? HmensajeH t.pe?Hxs6stringH54
35xs6sequence4
35xs6complex".pe4
35xs6element4
35xs6sequence4
35xs6complex".pe4
35xs6element4
'odemos #er que el elemento WFsms se compone de elementos sms-
N un sms se compone de elementos de tipo tel,fono( fec)a( )ora .
mensaje- 7 la )ora de definir un elemento complejo en el esquema(
)a. que indicarlo de alguna manera- Esta manera es a9adiendo( a
continuaci+n( un elemento llamado 3xs6complext.pe4- [usto despu,s
de a9adirlo( se inserta otro elemento llamado 3xs6sequence4 que
permite definir que los elementos )ijos se declaran como )ijos del
elemento inicial (en esa determinada secuencia) as se define un
elemento con )ijos como subelementos-
-EC2E3CI( DE ELEME3)4-
En el punto anterior se )ablaba del elemento 3xs6sequence4( que
permite indicar una determinada secuencia de )ijos en un elemento
complejo- 'ero no se )a )ablado de los indicadores que permiten( por
ejemplo( marcar cu*ntas #eces deben aparecer determinados
elementos- Es lo que se llama indicadores-
0n indicador permite determinar los siguientes patrones6
- El orden en el que se establecen los elementos )ijos-
- La ocurrencia con la que aparecen los elementos )ijos
- El grupo al que pertenecen los elementos )ijos
Los indicadores de orden permiten saber c+mo se pueden ubicar
los elementos )ijos- Fentro de este tipo de indicador podemos
encontrarnos tres6
<- 3xs6all46 especifica que todos los elementos )ijos pueden
aparecer en cualquier orden determinado( siempre que solo
apare$can una :nica #e$
@- 3xs6C)oice46 especifica que de entre los elementos )ijos s+lo
pueden aparecer o uno u otro-
3- 3xs6sequence46 'ermite identificar el orden en que deben
aparecer los elementos )ijos
Los indicadores de ocurrencia permiten conocer cuantas #eces
pueden repetirse cada elemento )ijo- 'odemos distinguir los
siguientes6
<- 3xs6maxUccurs46indica el m*ximo n:mero de #eces que un
elemento )ijo puede aparecer
@- 3xs6minUccurs46indica el mnimo n:mero de #eces que un
elemento )ijo puede aparecer-
En estos dos indicadores( los #alores por defecto son una #e$- %i
pudiese concurrir un n:mero ilimitado de #eces un elemento )ijo( se
indicara de la siguiente forma6
3xs6element name?2sms2 maxUccurs?2unbounded24
Los indicadores de rupo facilitan la manera de establecer un
conjunto de elementos asociados entre s- La mejor manera de #er su
funcionalidad es con un ejemplo- Amaginemos que queremos
representar las caractersticas de un coc)e- Cos gustara almacenar lo
siguiente6
- Marca
- Modelo
- Caballos
Como cualquier autom+#il tiene esas caractersticas( la definici+n del
esquema podra quedar as6
3xs6group name?2grupoCoc)e24
3xs6sequence4
3xs6element name?2marca2 t.pe?2xs6string254
3xs6element name?2modelo2 t.pe?2xs6string254
3xs6element name?2caballos2 t.pe?2xs6string254
35xs6sequence4
35xs6group4
3xs6element name?2coc)e2 ".pe?2"ipoCoc)e254
3xs6complex".pe name?2"ipococ)e24
3xs6sequence4
3xs6element name?2codigo2 t.pe?2xs6integer254
3xs6 group ref?2grupoCoc)e254
3xs6element name?2combustible2 t.pe?2xs6string254
35xs6sequence4
35xs6complex".pe4
El mismo concepto se puede seguir con grupos de atributos6
3xs6attribute&roup name?2grupoCoc)e24
3xs6element name?2marca2 t.pe?2xs6string254
3xs6element name?2modelo2 t.pe?2xs6string254
3xs6element name?2caballos2 t.pe?2xs6string254
35xs6attribute&roup4
Los grupos permiten modulari$ar los elementos en peque9os tro$os .
reutili$arlos si fuera necesario en otras partes del esquema que se
define-
'ara finali$ar( existe un elemento que permite extender la
funcionalidad de un documento XML sin tener que especificar lo que
debe #enir en el esquema- Es como la utili$aci+n de objetos #oid en
Caa( es decir( podemos esperarnos cualquier tipo de objeto (en
nuestro caso( elemento)- En este caso( el elemento se llama
3xs6an.4- Con los indicadores de ocurrencia podemos indicar
cuantos elementos gen,ricos podemos encontrarnos en ese punto en
el esquema- %uele dar flexibilidad a los documentos( pero des#irt:a
ligeramente el cometido principal de los esquemas( (que es tener
bien definido todo lo que te puedes encontrar en un documento XML)-
7 efectos( el elemento 3xs6an.7ttribute54 permite reali$ar lo mismo(
pero a ni#el de atributos
(C)I:ID(D
%e quiere crear una biblioteca de libros en un documento XML- 'ara
esto se necesita crear un esquema que almacene los siguientes
campos de un libro6
<- C+digo de libro
@- "tulo
3- Editorial
X- Edici+n
=- A%WC
D- C:mero de p*ginas
Z- 7utor
0na posible soluci+n es la siguiente6
(rc/i*o biblioteca.xml.
3Gxml #ersion?H<-EH encoding ?HA%UIJJ=;I<HG4
3biblioteca xmlns6xsi?H)ttp655///-/3-org5@EE<5XML%c)emaI
instanceH xsi6noCamespace%c)emaLocation?Hbiblioteca-xsdH4

3libro4
3codigo4
EE<
35codigo4
3titulo4
El Uscuro '7sajero
35titulo4
3Editorial4
0mbriel
35Editorial4
3Edicion4
La primera
35Edicion4
3A%WC4
JXI;=D<JIJ3IX
35A%WC4
3Cumero>de>paginas4
@=<
35Cumero>de>paginas4
37utor4
[eff Lindsa.
357utor4
35libro4
35biblioteca4
(rc/i*o biblioteca.xsd.
3Gxml #ersion?H<-EHG4
3xs6sc)ema xmlns6xs?H)ttp655///-/3-org5@EE<5XML%c)emaH
#ersion?HE-<H xml6lang?HesH4
3xs6element name?HbibliotecaH4
3xs6complex".pe4
3xs6sequence4
3xs6element name?HlibroH maxUccurs?HunboundedH4
3xs6complex".pe4
3xs6sequence4
3xs6element name ? HcodigoH t.pe?Hxs6integerH54

3xs6element name ? HtituloH t.pe?Hxs6stringH54
3xs6element name ? HEditorialH t.pe?Hxs6stringH54
3xs6element name ? HEdicionH t.pe?Hxs6stringH54
3xs6element name ? HA%WCH t.pe?Hxs6stringH54
3xs6element name ? HCumero>de>paginasH t.pe?Hxs6integerH54
3xs6element name ? H7utorH t.pe?Hxs6stringH54

35xs6sequence4
35xs6complex".pe4
35xs6element4
35xs6sequence4
35xs6complex".pe4
35xs6element4
35xs6sc)ema4
Comprobamos la #alidaci+n de estos elementos6
%aludos(
7lfredo

También podría gustarte