2. Historia del XML
Desarrollada a partir de 1996, como un
subconjunto de SGML.
Adoptado por W3C.
W3C
Constituido en 1994 con el objetivo de
desarrollar protocolos comunes para la
evolución de Internet.
3. ¿Qué es XML?
XML es un lenguaje de marcas.
Sus partes se distinguen entre sí por medio de
Etiquetas.
Es extensible: podemos crear nuestras propias
etiquetas.
Sigue una sintaxis estricta, es poco tolerante a
fallos.
Es necesario el anidamiento.
4. Hay dos tipos de etiquetas:
1. Etiqueta de apertura.
2. Etiqueta de cierre.
Ejemplo:
<?xml versión=”1.0”?>
<coche>
Citroen
<matricula>6545BHG</matricula>
</coche>
5. HTML contra XML
HTML XML
Se centra en el
despliegue y es menos
estructurado
Se centra en los datos y
es muy estructurado.
Las etiquetas y atributos
son fijos.
Las etiquetas y atributos
son extensibles.
Es posible olvidar cerrar
alguna etiqueta
Se fuerza a tener una
estructura consistente.
6. ¿Para qué sirve XML?
Ayuda en la integración de datos. Nos ayuda a estandarizar el
intercambio de información a través de ficheros.
Un documento XML es un documento de texto plano en el que se
describe la estructura de la información que él mismo contiene.
XML no sólo contiene información sino también las estructuras del
lenguaje necesarias para transmitir esa información, permitiendo
crear nuestras propias etiquetas adaptadas a nuestras necesidades.
XML abre el camino para que los propios ordenadores interpreten la
información de las páginas Web.
XML no contiene por sí sólo información sobre el formato en que se
deben representar los datos. Son necesarias hojas de estilo CCS
8. Ventajas de XML
Formato ideal para transacciones B2B.
Permite poderosas técnicas de extracción y búsqueda
de información.
Las estrictas reglas para la composición de un
documento XML, permite su fácil análisis sintáctico.
XML es sensitivo a mayúsculas y minúsculas.
Fácil de procesar/entender por software o por
humanos.
Pensado para ser utilizado en cualquier lenguaje o
alfabeto.
Separa radicalmente la información o contenido, de su
presentación o formato.
9. Objetivos del XML:
Directo a la red: sus caracteres son fácilmente
transferibles a través de internet.
Compatible con todas las aplicaciones.
Compatible con SGML.
Fácil digestión: sencillez.
Sin extras: no tienes características opcionales.
Alto y claro: es legible tanto para máquinas como para
humanos.
Es fácil y rápido de diseñar.
Formalidad.
Lápiz y papel: se puede hacer desde un editor de
textos.
Lo importante es comprenderse.
10. XML bien formados
Una herramienta que se utiliza es el XMLSpy. www.altova.com
En esta herramienta podemos crear nuestro XML.
Pulsando el botón “check well-formedness” podemos comprobar
si está bien formado o no.
Estará bien formada cuando:
1. Su sintaxis es válida.
2. Utiliza caracteres autorizados
3. Comienza y finaliza todas las marcas.
4. Si satisface un conjunto de reglas.
5. Es valido si está bien formado y satisface las reglas que le
impone su DTD.
Para definir que debe ir en el fichero, en qué orden o qué es
obligatorio debemos de crear el DTD.
11. Formar XML
Un documento se basa en una serie de entidades:
Cada entidad contiene uno o más elementos.
Cada elemento está formado por 0 o más atributos.
Podemos poner comentarios dentro de un documento
con los símbolos
<!...y…>
Los comentarios pueden estar en cualquier parte del
documento, pero sin son muchos pueden consumir
ancho de banda.
12. Un archivo consta de:
Prólogo
Cuerpo
Epílogo
14. DTD (Document Type Definition)
El dtd indica que contenido debe tener el
documento XML y en qué orden.
Actúa de plantilla.
No guarda información sólo la estructura.
El dtd puede ser:
Externo.
Interno
Mixto.
15. Clases de DTD
Veremos estas dos clases:
1. DTD interno o incrustado.
2. DTD externo.
16. DTD INCRUSTADO
Un dtd empieza por :
<?xml versión=”1.0” standalone = “yes”?>
<!DOCTYPE nombre_etiqueta [
…
…
…
]>
El atributo “standalone” del prólogo inicializado al
valor “yes” indica que el documento es
autosuficiente y no necesita de otros elementos
externos.
17. DTD EXTERNO:
Un dtd Externo empieza por :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pelicula SYSTEM
“c:documentosfilmoteca.dtd”>
(si el DTD está en esa ruta)
<!DOCTYPE pelicula SYSTEM
“http://www.mipagina.es/filmoteca.dtd”>
(si el DTD está en esa página web)
18. A partir de ahí comienza la definición del contenido de
los DTD
El primer <!ELEMENT que aparece se
refiere a la etiqueta raíz.
<!ELEMENT identificador (tipo_de_contenido)>
Ejemplo:
<!ELEMENT nombre_vía (#PCDATA)>
19. Los tipos de contenidos que podemos indicar
son:
#PCDATA: indica un contenido de tipo “dato analizable” (por
ejemplo, un número o una palabra).
Otro elemento o elementos (si son varios aparecen separados por
comas).
EMPTY: el elemento no tiene contenido (se llama elemento vacío).
ANY: el elemento puede tener cualquier contenido: No es muy
conveniente utilizarlo, por ser demasiado genérico.
MIXED: el elemento puede tener tipos de contenido diversos, pero al
contrario que con ANY, esos contenidos deben estar debidamente
especificados.
20. Ejemplos:
<!ELEMENT sueldo (#PCDATA)>
<!ELEMENT dirección (nombre_vía, número,
cp, localidad)>
<!ELEMENT salto-de-página EMPTY>
<!ELEMENT batiburrillo ANY>
<!ELEMENT identificador (nif | nie)>
(significa que el elemento “identificador” puede
estar compuesto O por un “nif” O por un “nie”)
21. En la especificación de contenido se
puede incorporar un símbolo de
frecuencia:
Ninguno = el elemento aparece sólo una vez.
+ = el elemento aparece 1 ó más veces.
* = el elemento es opcional y aparece 0 ó
más veces.
? = el elemento es opcional y aparece 0 ó 1
vez.
23. Más sobre XML: Atributos
La etiqueta denota el nombre del elemento, y
el atributo, sus propiedades.
Los atributos sólo pueden indicarse en las
etiquetas de apertura, no en las de cierre.
Un atributo está formado por el nombre del
mismo y el valor que toma, separados por el
signo de igualdad =. El valor del atributo debe
estar entre comillas, simples o dobles.
Un atributo debe tomar valor siempre.
26. Definición de atributos en un
DTD
<!ATTLIST elemento atributo tipo vpredeterminado>
elemento es el nombre del elemento cuyos
atributos queremos definir.
atributo es el nombre del atributo.
tipo es el tipo de valores que podrán tener el
atributo.
vpredeterminado (opcional) es el valor
predeterminado que tendrá ese atributo.
27. Para cada atributo de un elemento
utilizaremos un ATTLIST distinto.
Ejemplo:
<película título=“El Padrino”
duración=“180”/>
La línea correspondiente a ese elemento en
el DTD sería:
<!ELEMENT película EMPTY>
(ya que estamos hablando de un
elemento vacío).
28. Los atributos se definirían así:
<!ATTLIST película título CDATA “”>
<!ATTLIST película título CDATA “”>
Y el documento completo sería…
<?xml version=“1.0”?>
<!DOCTYPE película [
<!ELEMENT película EMPTY>
<!ATTLIST película título CDATA “”>
<!ATTLIST película duración CDATA “”>
]>
<película título=“El Padrino” duración=“180”/>
29. Los valores predeterminados que puede tener
un atributo son:
#IMPLIED indica que es opcional aplicar un valor a
un atributo, es decir, se trata de un atributo opcional y
no indicamos ningún valor predeterminado.
#REQUIRED indica que es obligatorio asignar un
valor al atributo. Es decir: el atributo debe
obligatoriamente aparecer.
#FIXED valor indica que el valor del atributo debe ser
el indicado y no es posible cambiarlo.
valor indica que el valor asignado es el
predeterminado.
31. También podemos indicar una lista de posibles
valores para el atributo.
Ejemplo: queremos incluir un atributo con una
calificación para cada película, del 1 al 5, con
valor predeterminado 3. Lo haríamos de la
siguiente forma:
<!ATTLIST película nota (1 | 2 | 3 | 4 | 5) “3”>
Por lo que estas definiciones serían válidas:
<película título=“El Padrino” nota=“5”/>
<película título=“El Padrino”/>
32. Los tipos de datos principales que pueden ir
asociados a un atributo son:
CDATA un valor cualquiera
(valor1 | valor2 | … ) un valor dentro del rango
enumerado.
ID un valor único.
IDREF un valor único previamente indicado.
IDREFS varios IDREF.
NMTOKEN un nombre con sólo caracteres XML
válidos (letras, números, puntos, guiones, subrayados
y los dos puntos)
NMTOKENS varios NMTOKEN
34. Se declaran de la siguiente forma:
<!ENTITY nombre valor_de_sustitución>
Ejemplo: supongamos que queremos almacenar un
precio en euros:
<precio>19,95 €</precio>
(€ es el código UNICODE del símbolo del euro).
Simplificaremos la tarea de indicar el euro usando la
siguiente nomenclatura:
<!ENTITY euro “€”>
A partir de este momento podremos incluir el símbolo
del euro así:
<precio>19,95 &euro</precio>
35. El documento completo sería
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE precio [
<!ELEMENT precio (#PCDATA)>
<!ENTITY euro "€">
]>
<precio>19,95 €</precio>
36. Supongamos que queremos incluir para cada
película una frase de recomendación: “Obra
maestra”, “Muy mala”, etc.
Nos creamos las entidades:
<!ENTITY om “Obra maestra”>
<!ENTITY mm “Muy mala”>
Pudiéndolas utilizar de la siguiente manera:
<película>
<título>El Padrino</título>
<calificación>&om;</calificación>
</película>
37. Supongamos que tenemos el siguiente documento xml:
<?xml version=“1.0” encoding=“UTF-8”?>
<notas>
<nota>El propietario no se hace responsable de las
opiniones vertidas por los autores.</nota>
</notas>
En el ejemplo anterior podemos incluir la línea:
<!ENTITY notas SYSTEM “notas.xml”>
De manera que siempre que usemos la entidad ¬as;
se sustituirá su valor por el contenido del archivo.
(SYSTEM indica que el archivo “notas.xml” está en el
mismo directorio que el archivo actual).
38. Ejemplo de XML y su DTD
<?xml version="1.0"?>
<libro>
<titulo> Cien años de soledad </titulo>
<disponible tiempo="24" unidad="horas"/>
<autor> Gabriel García Márquez </autor>
<formato> Rústica </formato>
<publicacion>1967 </publicacion>
<precio cantidad="9.99" moneda="euro"/>
<descuento cantidad="5"/>
<enlacelibro href="/exec/ISBN/84-473-0619-4"/>
</libro>