INTRODUCCIÓN A XML
¿Qué es XML?
Extensible Markup Language
Metalenguaje creado por la W3C
Se propone como una recomendación
para el intercambio de información
estructurada entre diferentes
plataformas
W3C
Tiene 2 usos principales: Consorcio Worl Wide Web principal
Representar datos a bajo nivel organización que define estándares
Agregar metadatos a los documentos internacionales
Tiene varios grupos de trabajo dirigidos a
diferentes aspectos de la Web que discuten su
estandarización y documentación
Emite recomendaciones
Algunos navegadores presentan problemas
por no seguir las recomendaciones de la W3C
NACIMIENTO DE XML
SGML 1996
Un pequeño grupo de
El 10 de Febrero de 1998 la
trabajo comenzó a trabajar
W3C publicó una versión
a mediados de los años 90
revisada como
en un subconjunto de
recomendacíón
SGML conocido como XML
Usado en documentos de
texto para definir formato y El primer borrador de XML
metadatos, sin embargo era se publicó en 1996
muy complicado
1990 1998
• Presentación de la tecnología
• Propuesta
INVESTIGACIÓN • Reportes técnicos
Proceso de
la W3C para • Borrador de trabajo
• Revisión del borrador
la creación • Candidato a recomendación
Prueba y
de Aprendizaje • Propuesto para recomendación
estándares
Listo para • Recomendación de la W3C
sistemas en
producción
COMPARATIVO
XML HTML
• Lenguaje de metadatos • Lenguaje de hipertexto
• In XML se crean elementos propios • Etiquetas pre definidas
• Debe cumplir con reglas (Bien • No tiene reglas restrictivas
formado y válido)
• No es sensitivo a mayúsculas y
• Es sensitivo a mayúsculas y minúsculas
minúsculas
• HTML da formato a los datos
• XML describe datos
• Pequeños errores pueden ser
• Los errores no son permitidos ignorados
TEXTO PLANO XML
<applicationUsers>
Joe Fawcett <user firstName = ”Joe” lastName = ”Fawcett” />
Danny Ayers <user firstName = ”Danny” lastName = ”Ayers” />
Catherine Middleton <user firstName = ”Catherine” lastName = ”Middleton” />
</applicationUsers>
Practiquemos!
VENTAJAS DE XML <nombre de carpeta = ”C: \”>
<nombre de carpeta = ”Archivos de programa”>
<nombre de carpeta = ”Microsoft”>
</carpeta>
<nombre de carpeta = ”Mozilla”>
</carpeta>
</carpeta>
Reglas <nombre de carpeta = ”Windows>
<nombre de carpeta = ”System32”>
</carpeta>
Representación </carpeta><nombre de carpeta = ”Temp”>
Jerárquica <archivos>
<nombre de archivo = ”~ [Link]”></file>
<nombre de archivo = ”~ [Link]”> </file>
</archivos>
Interoperabilidad </carpeta>
<archivos>
<nombre de archivo = ”[Link]”> </file>
</archivos>
</carpeta>
XML es aplicado en:
Archivos de
Configuración
Interoperabilidad
Servicios Web
Empresarial
XML
Representación
Contenido Web
de imágenes
Sistemas de Bases Gestión de
de Datos documentos
TECNOLOGÍAS XML
ANALIZADORES DTD Y ESQUEMAS NOMBRES DE ESPACIOS
DOM
MSXML
XMLDOCUMENT Representación en Describen la Permite agrupar
SAXON memoria en forma definición, XML y evitar
ANALIZADOR DE de árbol de un estructura y datos ambigüedades al
JAVA documento XML permitidos en un combinar 2 o mas
XERCES documento XML documentos
XPATH XPATH XQUERY
Accede mediante Transforma Lenguaje de
rutas, a los archivos de consulta para
elementos o formato XML a consultas para
atributos de un otro formato como datos XML,
documento XML HTML, .dat, etc semánticamente
similar a SQL
XML BIEN FORMADO
¿Qué significa bien formado?
Significa un documento que sigue la recomendación XML del W3C con todas sus reglas
que rigen lo siguiente:
Cómo se separa el contenido de los metadatos
Qué se usa para identificar el marcado o las etiquetas
Cuáles son las partes constituyentes
En qué orden y dónde pueden aparecer estas partes
Prólogo
Es la primera parte de un documento XML, es opcional por lo que algunos
documentos no lo presentan
<? xml version = ”1.0”?>
Codificación con Unicode : La codificación es el proceso de convertir caracteres en su
representación binaria equivalente. Algunos utilizan las codificaciones de un solo un byte u
ocho bits; otros usan más.
<? xml version = ”1.0” encoding = ”UTF-8”?>
Creando Elementos
• Los elementos son los bloques de construcción básicos de XML
• Los documentos al menos deben tener uno
• Todos los elementos se definen de una de dos formas:
En su forma más simple, un elemento con contenido consta de una etiqueta de inicio, que es un
corchete de ángulo izquierdo ( < ) seguido del nombre del elemento, como myElement , y luego
un corchete de ángulo derecho (>)
<? xml version = ”1.0” encoding = ”UTF-8” >
<! - Este es un comentario que sigue a la declaración XML ->
<myElement> </myElement>
• Existe una sintaxis alternativa que se usa para definir un elemento, y esto solo se puede usar
para elementos sin contenido:
<? xml version = ”1.0” encoding = ”UTF-8” standalone = ”yes”?>
<! - Este es un comentario que sigue a la declaración XML ->
<myElement />
Estilos de Nombres
Pascal - case Camell - case Subrayado Guiones
• Esto pone en • Similar a • Use un guion • Palabras
mayúscula Pascal excepto bajo para separadas
palabras que la separar
con un
separadas, primera letra palabras
incluida la es minúscula guion
primera • <my_element
• <myElement /> /> • <mi-elemento
• <MyElement /> />
Especificaciones de Nombres
El nombre de un elemento puede comenzar con un guion bajo o una letra
mayúscula o minúscula
Los caracteres posteriores también pueden ser un guion ( - ) o un dígito.
Los nombres distinguen entre mayúsculas y minúsculas, por lo que las etiquetas de
inicio y finalización deben coincidir exactamente.
Los nombres no pueden contener espacios
Los nombres que comienzan con las letras XML, ya sea en mayúsculas o minúsculas,
están reservados y no deberían usarse (aunque muchos analizadores los permiten
en la práctica)
Practiquemos!
Elemento raíz
Todos los documentos deben tener uno y solo un elemento raíz.
Todo lo demás en el documento se encuentra bajo este elemento para formar una jerarquía
<log>
<entry date = ”2012-03-03T10: 09: 53” type = ”audit”>
Intento de inicio de sesión fallidocon nombre de usuario jfawcett
</entry>
<entry date = ”2012-03-03T10: 11: 01” type = ”audit”>
Exitosointento de inicio de sesión con el nombre de usuario jfawcett
</entry>
<entrada fecha = ”2012-03-03T10: 12: 11” tipo = ”información”>
Sincronización exitosa de carpetas para usar jfawcett
</entry>
</log>
Atributos
• Los atributos son pares nombre-valor asociados con un elemento
• Deben estar en la etiqueta de apertura de un elemento
• El nombre del atributo sigue las mismas reglas que las de los elementos
• Usan camell – case por convención
• Constan de un nombre y un valor separados por un signo de igual (=)
• El valor del atributo debe estar entre comillas simples o dobles
• Un atributo puede no tener valor, en tal caso se usan las comillas abiertas y cerradas
• El nombre del atributo debe ser único por elemento
<? xml version = ”1.0” encoding = ”UTF-8” standalone = ”yes”?>
<! - Este es un comentario que sigue a la declaración XML ->
<myElement myFirstAttribute = ”One” mySecondAttribute = ”Two”> </myElement>
Practiquemos!
Contenido de elementos y atributos
• Los valores y elementos de los atributos pueden contener datos de caracteres (texto)
• No se pueden usar los caracteres especiales que usa el lenguaje XML (<, >, &, etc)
Carácter Referencia
<myElement myFirstAttribute = "One" mySecondAttribute =
& &erio; "Two">A continuación, se muestra un texto con un espacio &
nbsp; que no se separa.</myElement>
< <
<myElement myFirstAttribute = "One" mySecondAttribute =
> > "Two">El símbolo < se usa para comparar cuando un valor es
menor a otro</myElement>
“ "
‘ '
Espacio  
Elementos o Atributos
<Usuarios>
<Usuario Nombre = ”Joel” Apellido = ”Ibarra” /> • Datos simples
<Usuario Nombre = ”Luz” Apellido = ”Glez” /> • El tamaño del archivo es más
<Usuario Nombre = ”Jesús” Apellido = ”Paez” /> pequeño
</ Usuarios >
<Usuarios> • Representación de datos
<usuario> complejos
<Nombre> Joel</Nombre> • Se requiere repetir una etiqueta
<Apellido> Ibarra </Apellido> • Se requiere mantener los datos
</usuario> en un orden específico
<usuario> • El tamaño del archivo puede
<Nombre> Luz</Nombre> crecer mucho y ocupar mucha
<Apellido> Glez </Apellido> memoria al cargarse
</usuario>
<Usuarios>
Secciones CDATA
CDATA significa datos de
<Conversiones_Datos> caracteres.
1 kilómetro < 1 milla Se utilizan como una forma de
1 pint < 1 litro evitar escribir caracteres de escape
1 libra < 1 kilogramo dentro de un bloque de texto.
</ Conversiones_Datos >
<miDocumento>
<algunos_datos>
<miDocumentoAnidado>
<! [CDATA [
<Conversiones_Datos> <anotherDocument>
<![CDATA[ Esta es una mala práctica
1 kilómetro < 1 milla </anotherDocument>]
1 pint < 1 litro ]>
1 libra < 1 kilogramo] </miDocumentoAnidado >
]> </ algunos_datos >
</ Conversiones_Datos > </ miDocumento >
Espacios en blanco
Los caracteres de espacio en blanco de los literales XML solo son significativos en tres áreas:
Cuando se encuentran en un valor de atributo.
Cuando forman parte del contenido de texto de un elemento y el texto también contiene otros
caracteres.
Cuando están en una expresión incrustada para el contenido de texto de un elemento.
Espacio en Espacio en
blanco blanco no
<Usuarios> significativos
significativo <Usuario>
<Usuarios>
<Usuario Nombre = ”Joel” Apellido = ”Ibarra Santiago” /> <Nombre Completo>
<Usuario Nombre = ”Luz” Apellido = ”Glez Carmona” /> Alberto Estrella
<Usuario Nombre = ”Jesús” Apellido = ”Paez Vazquez” /> </Nombre Completo>
</ Usuarios > </ Usuarios >
¿Qué es un vocabulario XML?
Problema: Dos documentos XML no pueden combinarse fácilmente
<Inventario>
<Producto SKU="1">Producto 1</Producto>
</ Inventario >
<Stock>
<Elemento Numero="2">Producto 2</ Elemento >
</ Stock >
Solución: Cada documento XML puede compartir la misma estructura,
nombre y estándar de codificación
<Inventario>
<Producto SKU="1">Producto 1</Producto> <Inventario>
</ Inventario > <Producto SKU="1">Producto 1</Producto>
<Producto SKU="1">Producto 1</Producto>
<Inventario> </ Inventario >
<Producto SKU=“2">Producto 2</Producto>
</ Inventario >
Lineamientos para crear el vocabulario
<propsdoc>
<creacion>2002-07-24T[Link]Z</creacion> • Determine si el vocabulario existe
<fucamb>2002-08-10T[Link]Z</fucamb>
<emp>Microsoft Corporation</emp>
<ver>10.2625</ver>
• Cree su vocabulario fácil de leer y
</propsdoc> entender
• Use mayúsculas y minúsculas para
<Propiedades_Documento> diferenciar los elementos y los
<Creacion>2002-07-24T[Link]Z</Creacion> atributos
<Fecha_Cambio>2002-08-10T[Link]Z </Fecha_Cambio>
<Empresa>Microsoft Corporation</Empresa>
• Evite el uso de abreviaturas
<Version>10.2625</Version>
</ Propiedades_Documento >
Practiquemos!
ESQUEMAS XML
Introducción
• Introducción a la Validación
• Uso de esquemas XSD
What Is Valid XML?
XML Válido XML No Válido
<ordenes>datos</orders> <Ordenes>my data</Ordenes>
XML Processor
Ambos documentos estan bien formados pero …
Validación
Un esquema es una especificación de la estructura y tipos de datos de
un documento XML
Error!
El elemento raíz debe estar escrito en minúsculas
Aplicación
Solo los documentos válidos son procesados por las aplicaciones y mostrados al
cliente
Validation Scenarios
• Los datos transferidos entre sistemas requieren validación
3
Cliente 1
2 Organización B
Organización A
1. Se valida la información antes de ser enviada.
2. El vocabulario del XML es validado.
3. Se validan los detalles del XML con la lógica empresarial
antes de ser procesado.
How to Recognize a Document Type Definition
Los DTDs son reemplazados por esquemas XSD
Referencia a un <?xml version='1.0'?><!DOCTYPE bookstore
SYSTEM "[Link]">
DTD externo
<!ELEMENT bookstore (book)*>
<!ELEMENT book (title,author*,price)>
DTD Externo <!ATTLIST book genre CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (name | (first-name,last-name))>
<!ELEMENT price (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT first-name (#PCDATA)>
<!ELEMENT last-name (#PCDATA)>
<?xml version='1.0'?>
<!DOCTYPE bookstore [
DTD en línea <!ELEMENT bookstore (book)*>
Cómo reconocer un esquema XDR?
Esquema XDR externo
<Schema name="MySchema" xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
Esquema XDR en línea
<root xmlns:data="x-schema:#inLineSchema">
<Schema name ="inLineSchema“ xmlns="urn:schemas-microsoft-com:xml-data">
<ElementType name="myelement"/>
</Schema>
<data:myelement>inline example</data:myelement>
</root>
Referencia a un esquema XDR schema en un documento
<ElementName xmlns="x-schema:[Link]"> </ElementName>
Partes de un Esquema XSD
• Referencia al namespace XSDs de la W3C
<xsd:schema
xmlns:xsd="[Link]
• Los elementos de XSD tienen el prefijo xsd:
• Declaración de elementos y atributos
• Definición del tipo de Datos
• Uso de datos simples como Boolean, integer, string, etc
• Uso de tipos complejos para elementos relacionados
Dudas y comentarios
GRACIAS!