UT8 - XML - Documentos - Bien - Formado
UT8 - XML - Documentos - Bien - Formado
UT8 - XML - Documentos - Bien - Formado
¿Qué es XML?...................................................................................................................3
Elementos........................................................................................................................12
Atributos.........................................................................................................................15
Entidades predefinidas..............................................................................................17
Secciones CDDATA.....................................................................................................17
Comentarios....................................................................................................................18
Declaraciones de atributos...................................................................................24
Tipos de atributos……………………………………………………………………………………………………..27
Declaraciones de entidades....................................................................................30
Ejercicios………………………………………………………………………………………………………………………….42
Página 2 de 51
UT8. XML Documentos bien formados
¿Qué es XML?
<h1>
Comedor
</h1>
<ul>
<li>
<b>Mesa redonda de madera de arce</b>.
El fabricante es <i>Muebles Albacete</i> y su precio 40000.
</li>
<li>
<b>Dos sillas de madera de arce</b>, de excelente
calidad, con un cojín azul cada una.
</li>
<li>
<b>3 sillas de madera de roble</b>.
</li>
</ul>
<comedor>
<mesa tipo="redonda" madera="arce">
<fabricante>Muebles Albacete</fabricante>
<precio>40000</precio>
</mesa>
<silla madera="arce">
<cantidad>2</cantidad>
<calidad>excelente</calidad>
<cojin incluido="sí">
<color>azul</color>
</cojin>
</silla>
Página 3 de 51
UT8. XML Documentos bien formados
<silla madera="roble">
<cantidad>3</cantidad>
<calidad>normal</calidad>
</silla>
</comedor>
XML deriva del lenguaje de marcas SGML (un estándar ISO, concretamente
el ISO-8879). SGML era demasiado complejo y, por tanto, inadecuado para
la Web y HTML no evolucionaba suficientemente. La intención del W3C fue,
la de crear un lenguaje que agrupase la facilidad de aplicación del HTML y la
riqueza semántica del SGML. Así nació XML.
Página 4 de 51
UT8. XML Documentos bien formados
Página 5 de 51
UT8. XML Documentos bien formados
<nfax />
<email />
</tarjetavisita>
El XML incluye una serie de archivos obligatorios, cada uno con una función.
El archivo XML (eXtensible Markup Language) contiene el conjunto de datos
(archivos .xml).
Página 6 de 51
UT8. XML Documentos bien formados
Todos los documentos XML deben estar bien formados, lo que significa que
se debe cumplir lo siguiente:
Todas las etiquetas deben estar balanceadas: esto es, todos los
elementos que contengan datos de tipo carácter deben tener
etiquetas de principio y fin
Todos los valores de los atributos deben ir entrecomillados (el
carácter comilla simple [el apóstrofe] puede utilizarse si el valor
contiene caracteres comillas dobles, y viceversa): si necesitas ambos,
utiliza ' y "
Página 7 de 51
UT8. XML Documentos bien formados
No debe haber etiquetas aisladas (< ó &) en el texto (p.e. debe darse
como < y &), y la secuencia ]]> debe darse como ]]> si no
ocurre esto como final de una sección marcada como CDATA;
Los documentos XML deben tener una estructura jerárquica con lo que
respecta a las etiquetas que delimitan sus elementos. Esto significa que los
elementos deben estar correctamente anidados y que los elementos no se
pueden solapar entre ellos. Además los elementos con contenido deben
estar correctamente cerrados.
Página 8 de 51
UT8. XML Documentos bien formados
Así por ejemplo el fichero xml que permite almacenar información sobre un
documento, en el que nos interesa incluir la siguiente información sobre
dicho documento:
Título
Autor
fecha_pub
Dia
Mes
año
es:
<?xml version=”1.0”?>
<documento>
<título>Apuntes de XML</título>
<autor>Jorge Sánchez</autor>
<fecha_pub>
<día>18</día>
<mes>Enero</mes>
<año>2009</año>
</fecha_pub>
</documento>
Página 9 de 51
UT8. XML Documentos bien formados
Ejemplo incorrecto:
Ejemplo correcto:
Sólo puede haber un elemento raíz, en el que están contenidos todos los
demás, es decir, la jerarquía de elementos XML sólo puede tener un
elemento inicial.
nombre
email
Ejemplo incorrecto:
Ejemplo correcto:
Página 10 de 51
UT8. XML Documentos bien formados
<email>richal@ejemplo.com</email>
</alumno>
Así por ejemplo el fichero xml que permite almacenar información sobre un
documento, en el que nos interesa incluir la siguiente información sobre
dicho documento:
Título
Autor
fecha_pub
Dia
Mes
año
es:
Página 11 de 51
UT8. XML Documentos bien formados
Ejemplos:
Sólo puede haber un elemento raíz, en el que están contenidos todos los
demás, es decir, la jerarquía de elementos XML sólo puede tener un
elemento inicial.
—bien una DTD, bien un esquema—, en cuyo caso el valor es no, o si depende
Ejemplo:
El valor "yes" indica que la declaración está incluida dentro del propio
documento. El valor "no" indica que la declaración no existe dentro del
propio documento o que dicha declaración está en un documento externo. La
declaración de un documento standalone sólo denota la presencia de
declaraciones externas.
Elementos
Página 13 de 51
UT8. XML Documentos bien formados
Los nombres de los elementos están sujetos a varias reglas. A menudo son
fuentes de errores.
Página 14 de 51
UT8. XML Documentos bien formados
La primera letra
<nombre>Jorge</nombre>
<nombre> Es un etiqueta de apertura
</nombre> Es una etiqueta de cierre
<nombre>Jorge</nombre> Es un elemento
Jorge es el contenido del elemento
Los elementos se deben abrir y cerrar con la etiqueta que sirve para definir
el elemento; siempre se debe cerrar el último elemento que se abrió. Es
decir, es un error:
<persona>
<nombre>Jorge</nombre>
<apellido>Sánchez</persona>
</apellido>
Página 15 de 51
UT8. XML Documentos bien formados
<casado />
Atributos
Así por ejemplo el fichero xml que permite almacenar información sobre
películas, en las que nos interesa incluir la siguiente información sobre cada
película:
Título
Director
Actor_principal
Actor_secundario
Productora
Una película pude tener el atributo de ciencia-ficción, policiaca o comedia
Página 16 de 51
UT8. XML Documentos bien formados
<peliculas>
<pelicula tipo="ciencia-ficcion">
<titulo>Inseparables</titulo>
<director>David Cronenberg</director>
<actor_principal>Jeremy Irons</actor_principal>
<actor_secundario>Genevieve Bujold</actor_secundario>
<productora>The Rank Organisation</productora>
</pelicula>
<pelicula tipo="policiaca">
<titulo>En línea de fuego</titulo>
<director>Wolfgand Petersen</director>
<actor_principal>Clint Eastwood</actor_principal>
<actor_secundario>John Malkovich</actor_secundario>
<productora>Paramount Pictures</productora>
</pelicula>
<pelicula tipo="comedia">
<titulo>El Guateque</titulo>
<director>Blake Edwards</director>
<actor_principal>Peter Sellers</actor_principal>
<actor_secundario>Claudine Longet</actor_secundario>
<productora>United Artists</productora>
</pelicula>
</peliculas>
Página 17 de 51
UT8. XML Documentos bien formados
Entidades predefinidas
entidad caracter
& &
< <
> >
' '
" "
Ejemplo:
Secciones CDATA
Página 18 de 51
UT8. XML Documentos bien formados
marca XML. La razón es que así se puede leer más fácilmente el documento
XML sin tener que descifrar los códigos de las entidades. Las secciones
CDATA empiezan por la cadena "<![CDATA[" y terminan con la cadena "]]>" y
sólo ésta última se reconoce como marca. No se pueden anidar secciones
CDATA
Ejemplo:
Comentarios
Comienzan con el símbolo <!-- y terminan con -->. Dentro puede haber
cualquier texto que se utiliza con fines explicativos o de documentación del
código.
Los comentarios no pueden meterse dentro de la etiqueta de un elemento, ni
tampoco puede contener etiquetas tanto de apertura como de cierre.
Página 19 de 51
UT8. XML Documentos bien formados
EMPTY
Significa que el elemento no podrá tener contenido alguno, es un elemento
vacío (como la etiqueta br de las páginas web). Ejemplo de definición de
elemento vacío:
<!ELEMENT línea EMPTY >
o bien:
<línea />
ANY
Permite cualquier contenido en el elemento, sin restricciones de ningún tipo.
Es decir puede contener texto, otro tipo de datos y cualquier etiqueta.
Además puede tener atributos.
Ejemplo:
<?xml version="1.0"?>
<!DOCTYPE persona [
<!ELEMENT persona (nombre, apellidos)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellidos ANY>
]>
<persona>
<nombre>Jorge</nombre>
<apellidos>Sánchez Asenjo
<nombre>Jorge</nombre>
</apellidos>
</persona>
Al definir apellidos como elemento ANY, permite incluso que dentro haya
una etiqueta nombre.
elemento concreto
En los elementos se puede indicar claramente un contenido concreto para el
mismo. Dicho contenido se indica entre paréntesis.
Ejemplo:
Página 21 de 51
UT8. XML Documentos bien formados
]>
<persona>
<nombre>Antonio</nombre>
</persona>
secuencias
elecciones
Página 22 de 51
UT8. XML Documentos bien formados
combinaciones
Página 23 de 51
UT8. XML Documentos bien formados
<longitud>234</longitud>
<latitud>-23</latitud>
</coordenada>
cardinalidad
Ejemplo:
Página 24 de 51
UT8. XML Documentos bien formados
Pero también:
</polígono>
Declaración de atributos
Donde:
elemento. Es el nombre del elemento que podrá utilizar el atributo
nombreAtributo. Es el identificador del atributo que estamos declarando (y
que debe de cumplir las reglas de identificadores de XML)
tipo. Es el tipo de valores que podemos asignar al atributo
presencia. Indica las características de los valores que puede tomar el
atributo: si es obligatorio, si hay valor por defecto,...
valorPorDefecto. Permite dar un valor que el atributo tomará en el
documento XML en caso de que no se le dé en el mismo ningún valor al
atributo. También indica si es necesario rellenar o no el atributo o bien si es
opcional
declarar atributos
Esta declaración:
Página 26 de 51
UT8. XML Documentos bien formados
valores fijos
Ejemplo:
valores requeridos
Página 27 de 51
UT8. XML Documentos bien formados
valor opcional
tipos de atributo
CDATA
Los atributos de tipo CDATA permiten indicar como valor cualquier texto. A
diferencia de los datos PCDATA de los elementos, los CDATA admiten
cualquier carácter del tipo que sea (PCDATA no admite caracteres inválidos
para la sintaxis de XML, como el signo < por ejemplo, CDATA sí los admite).
ID
Página 28 de 51
UT8. XML Documentos bien formados
El valor tiene que cumplir las mismas reglas que para especificar
nombres XML.
No puede haber dos etiquetas con el mismo ID en un mismo
documento XML
En el DTD, para cada elemento sólo puede indicarse un atributo como
ID.
Los atributos ID sólo pueden indicar #IMPLIED o #REQUIRED en
el apartado del valor por defecto.
IDREF
Ejemplo de uso:
Página 29 de 51
UT8. XML Documentos bien formados
<directorio>
<persona id="p1">Pedro</persona>
<persona id="p2">Marisa</persona>
<persona id="p3" madre="p2" padre="p1">Carmen</persona>
</directorio>
IDREFS
Igual que el anterior sólo que permite indicar varias referencias (que deben
existir en el documento XML) a otros ID, separadas por espacios.
NMTOKEN
El valor del atributo será un texto que cumplirá las reglas para nombres
XML. Se usa en atributos donde CDATA permite demasiadas libertades, de
esta forma al menos sabremos que es un texto donde sólo existirán letras,
números y el símbolo _, es decir un texto que cumple las reglas para
nombres XML.
NMTOKENS
El atributo puede contener varios valores de tipo NMTOKEN separados por
espacios
ENTITY
El valor de un atributo será una entidad de la cual se indica el nombre. Más
adelante se explica el uso de las entidades.
ENTITIES
El valor del atributo será una lista de nombres de entidades separadas por
espacios.
Enumeración
En este caso el valor del atributo debe de ser uno de una lista de valores
posibles cada uno de los cuales se separa del siguiente mediante el símbolo
|.
Ejemplo:
Página 30 de 51
UT8. XML Documentos bien formados
Las personas sólo podrán especificar como sexo "Hombre" o "Mujer" y nada
más:
<persona sexo="Varón">Javier Ruiz</persona>
Se usa muy habitualmente para indicar de forma cómoda todos los atributos
de un determinado elemento:
ENTIDADES
Página 31 de 51
UT8. XML Documentos bien formados
entidad significado
< El símbolo de menor (<)
> El símbolo de mayor (>)
& El ampersand: &
' La comilla simple (')
" La comilla doble (")
Ejemplo:
<autor>Leopoldo Alas 'Clarín'</autor>
El texto PCDATA del autor es Leopoldo Alas 'Clarín' (así se visualizará en
el navegador).
Página 32 de 51
UT8. XML Documentos bien formados
entidades generales
Se usan como abreviaturas que aparecerán en el documento XML. La razón
de su uso es facilitar la escritura de nombres repetitivos (nombres de la
empresa, direcciones muy utilizadas,). La sintaxis para declarar una entidad
de este tipo es:
<!ENTITY nombre "texto">
Para usar en un documento XML la entidad declarada, se usa:
&nombre;
Ejemplo de declaración de una entidad:
<!ENTITY mayor "Calle Mayor Principal" >
uso en un documento XML:
<dirección>&mayor; 18</dirección>
El documento XML que utilice dicha entidad incluirá todos los símbolos (y
por lo tanto estará especificando etiquetas en el código).
Un uso muy interesante es usar entidades que hacen referencia a archivos
externos (mediante su dirección URL), por ejemplo:
<!ENTITY direcciónCompleta SYSTEM "direccion.txt" >
Página 33 de 51
UT8. XML Documentos bien formados
entidades de parámetros
Sólo se pueden utilizar dentro del DTD (no en el documento XML). Su uso
más habitual es construir DTD utilizando las entidades definidas a fin de
ahorrar trabajo.
Su uso es similar a las entidades generales sólo que utilizan el símbolo % en
lugar del símbolo &. Al igual que las generales deben de ser declaradas antes
de poder usarse:
<!ENTITY % mayor "Calle Mayor Principal" >
Y su uso (dentro del DTD), por ejemplo:
<!ATTLIST persona dirección CDATA "%mayor;">
En este caso las comillas dobles son obligatorias porque los valores por
defecto van entrecomillados (como se ha visto anteriormente).
Las entidades de parámetros pueden utilizar archivos externos, ejemplo de
DTD:
Puede ocurrir que cuando se manejan documentos XML puede ocurrir que
diferentes XML que tengamos, utilicen las mismas etiquetas. Aunque el
contexto sería distinto, tendríamos un problema si manejamos ambos
documentos con el mismo software, ya que el analizador, no sabría cómo
manejar ambas etiquetas iguales.
Página 34 de 51
UT8. XML Documentos bien formados
Página 35 de 51
UT8. XML Documentos bien formados
</head>
<body> Texto del documento </body>
</html>
</content>
<author>Jorge</author>
</document>
Ese prefijo diferenciador es el espacio de nombres al que pertenece la
etiqueta, pero usado así tendríamos el problema de que con un sufijo tan
corto, se podría repetir. Por ello una solución es indicar la URL de la entidad
responsable de la etiqueta:
Pero el documento quedaría muy poco legible. Por ello se aplican espacios de
nombres, de modo que se asigna una URL a un prefijo de etiqueta; de este
modo cada vez que el documento se utiliza el prefijo, se sabe que se refiere
a la URL indicada (las URLs son únicas).
Página 36 de 51
UT8. XML Documentos bien formados
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<document
xmlns:jorge="http.//www.jorgesanz.es/document"
xmlns:html="htp://www.w3c.org/html">
<jorge:title>
Documento de prueba
</jorge:title>
<jorge:content>
<html:html>
<html:head>
<html:title>
Titulo HTML
</html:title>
</html:head>
<html:body>
Texto del documento
</html:body>
</html:html>
</jorge:content>
<jorge:author>
Jorge
</jorge:author>
</document>
Página 37 de 51
UT8. XML Documentos bien formados
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<document
xmlns ="http.//www.jorgesanz.es/document"
xmlns:html="htp://www.w3c.org/html">
<title>
Documento de prueba
</title>
<content>
<html:html>
<html:head>
<html:title>
Titulo HTML
</html:title>
</html:head>
<html:body>
Texto del documento
</html:body>
</html:html>
</content>
<author>
Jorge
</author>
</document>
Página 38 de 51
UT8. XML Documentos bien formados
Por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns ="http.//www.jorgesanz.es/document">
<title>
Documento de prueba
</title>
<content>
<html:html xmlns:html="htp://www.w3c.org/html">
<html:head>
<html:title>
Titulo HTML
</html:title>
</html:head>
<html:body>
Texto del documento
</html:body>
</html:html>
</content>
<author>
Jorge
</author>
</document>
Página 39 de 51
UT8. XML Documentos bien formados
Página 40 de 51
UT8. XML Documentos bien formados
</html>
<!-- fin del espacio html, regresa el espacio jorgesanz.es -->
</content>
<author>
Jorge
</author>
</document>
a. en el propio documento
Página 41 de 51
UT8. XML Documentos bien formados
Su única (pero muy discutible) ventaja es que la validación está dentro del
propio documento, por lo que siempre viajan juntas la validación y el
contenido del mismo.
La sintaxis es:
Ejemplo:
Página 42 de 51
UT8. XML Documentos bien formados
Salvo que se desee crear un único documento con una validación DTD, lo
lógico es utilizar la forma de DTD externa ya que de esa forma se pueden
validar varios documentos a la vez. La ruta puede ser absoluta y entonces se
indica su URL:
Ejemplo:
Ejemplo:
Página 43 de 51
UT8. XML Documentos bien formados
Este es el DOCTYPE para una página web escrita en XHTML 1.0 estricto,
utilizada para validar miles de páginas web.
Fichero xml:
<mes>5</mes>
<anio>2004</anio>
</fecha>
<directorio>
<nombre>Internet Explorer</nombre>
<fecha>
<dia>19</dia>
<mes>8</mes>
<anio>2004</anio>
</fecha>
<fichero tamano="87545546">
<nombre>Iexplore.exe</nombre>
<fecha>
<dia>19</dia>
<mes>8</mes>
<anio>2004</anio>
</fecha>
</fichero>
</directorio>
</directorio>
<fichero tamano="456">
<nombre>config.sys</nombre>
<fecha>
<dia>8</dia>
<mes>12</mes>
<anio>2003</anio>
</fecha>
</fichero>
</unidad>
</sistema>
Fichero dtd
Página 45 de 51
UT8. XML Documentos bien formados
Página 46 de 51
UT8. XML Documentos bien formados
Ejercicios
1º.- Crear un fichero XML para almacenar información sobre los libros del
departamento. Nos interesa incluir la siguiente información sobre cada
libro:
Título
Autor
Editorial
Descripción (si la conozco)
Precio
2º.- Crear un fichero XML para almacenar información sobre alumnos. Nos
interesa incluir la siguiente información:
Nombre
Dirección
Ciudad
Código
Teléfono
Escribir la DTD correspondiente.
Página 47 de 51
UT8. XML Documentos bien formados
Página 48 de 51
UT8. XML Documentos bien formados
6º.- Dado el siguiente fichero XML, construir un DTD que corresponda con
su estructura.
<?xml version="1.0" encoding="ISO-8859-1"?>
<peliculas>
<pelicula tipo="comedia">
<titulo>Arizona Baby</titulo>
<escritor>Ethan Coen</escritor>
<escritor>Joel Coen</escritor>
<productor>Ethan Coen</productor>
<director>Joel Coen</director>
<actor>Nicolas Cage</actor>
<actor>Holly Hunter</actor>
<actor>John Goodman</actor>
<comentario>Una historia de amor con final inusitado.</comentario>
</pelicula>
<pelicula tipo="misterio">
<titulo>Sospechosos Habituales</titulo>
<escritor>Christopher McQuarrie</escritor>
Página 49 de 51
UT8. XML Documentos bien formados
<productor>Bryan Singer</productor>
<productor>Michael McDonnell</productor>
<director>Bryan Singer</director>
<actor>Stephen Baldwin</actor>
<actor>Gabriel Byrne</actor>
<actor>Benicio Del Toro</actor>
<actor>Chazz Palminteri</actor>
<actor>Kevin Pollak</actor>
<actor>Kevin Spacey</actor>
<comentario>Un crimen con cambios en el argumento muy
intrincados.</comentario>
</pelicula>
<pelicula tipo="dibujos">
<titulo>Los aristogatos</titulo>
<escritor>Walt Disney</escritor>
<productor> Walt Disney </productor>
<director> Walt Disney </director>
</pelicula>
</peliculas>
7º.- Dado el siguiente fichero XML, construir un DTD que corresponda con
su estructura.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE FAQ SYSTEM "FAQ.DTD">
<FAQ>
<INFO>
<TITULO> WINDOWS? SOLO SI ME OBLIGAN! </TITULO>
<AUTOR> Fernando Damián Lorenzo García </AUTOR>
<EMAIL> Fer@yahoo.es </EMAIL>
<VERSION> 1.0 </VERSION>
<FECHA> 20.MAYO.12 </FECHA>
</INFO>
<PART NO="1">
<Q NO="1">
<QTEXT>¿Por qué tengo que instalar W?</QTEXT>
<A> A mi también me parece una buena pregunta.</A>
</Q>
Página 50 de 51
UT8. XML Documentos bien formados
<Q NO="2">
<QTEXT>Y de que me vale?</QTEXT>
<A>Otra ingeniosa pregunta.</A>
</Q>
</PART>
</FAQ>
Página 51 de 51