DESARROLLO RAPIDO DE
APLICACIONES PARA INTERNET
XML
ING. CIP. CLAUDIO JESÚS IBARRA RIOS
Mg. Gestión Pública
clajibar@[Link]
Bibliografía
● An Introduction to XML and Web
Technologies. Anders Moller, Michael
Schwartzbach. Ed. Pearson. ISBN: 978-81-
317-2607-5
● Material de Internet
○ Estándares de [Link]
6
Introducción
7
Introducción
● XML = Extensible Markup Language
(Lenguaje de Marcas extensible)
● Diseñado para transportar y almacenar
datos
● Recomendación de la W3C (World Wide
Web Consortium) desde Febrero de 2004
● Lenguaje de plataforma-independiente
8
Ejemplo de XML
<?xml version="1.0"?>
<nota>
<de>Juan</de>
<para>Pedro</para>
<asunto>Créditos asignatura XML</asunto>
<mensaje>Son 4 créditos</mensaje>
</nota>
9
Nomenclatura de principales elementos
en un XML
<?xml version="1.0"?> ENCABEZADO
<nota>
<de>Juan</de>
<para>Pedro</para>
<asunto>Créditos asignatura XML</asunto>
<mensaje>Son 4 créditos</mensaje>
</nota>
10
Nomenclatura de principales elementos
en un XML
<?xml version="1.0"?>
<nota> TAGS/ETIQUETAS
<de>Juan</de> TAGS NO PREDEFINIDOS
<para>Pedro</para>
<asunto>Créditos asignatura XML</asunto>
<mensaje>Son 4 créditos</mensaje>
</nota>
APERTURA Y CIERRE
11
Nomenclatura de principales elementos
en un XML
<?xml version="1.0"?>
DATOS
<nota>
<de>Juan</de>
<para>Pedro</para>
<asunto>Créditos asignatura XML</asunto>
<mensaje>Son 4 créditos</mensaje>
</nota>
12
Usos de XML
● Desacoplar datos (XML) de la capa de presentación
(HTML)
○ XML/CSS
○ JavaScript
● Simplifica compartir datos
● Simplifica transportar datos
● Favorece la portabilidad de las plataformas
● XML es la base de otros lenguajes
● XHTML ● RSS
● WSDL ● WAP
13
Árbol XML
<?xml version="1.0"?> ENCABEZADO
<notas>
ELEMENTO RAIZ
<tema valor=”Tecnólogo”>
<nota>
<de>Juan</de>
ELEMENTOS HIJOS DE 1ER NIVEL
<para>Pedro</para>
<asunto>Créditos asignatura XML</asunto>
<mensaje>Son 4 créditos</mensaje>
</nota>
</tema>
<tema valor=”Personales”>
ELEMENTOS HIJOS DE 2DO NIVEL
<nota>
<de>Juan</de>
<para>María</para>
<asunto>Sábado</asunto>
<mensaje>¿Salimos a tomar algo?</mensaje>
</nota>
</tema>
<notas> 14
Árbol XML
<notas>
<tema> <tema>
<nota> <nota>
<de> <para> <asunto> <mensaje> <de> <para> <asunto> <mensaje>
15
Árbol XML
<notas> es padre
(parent) de <tema> <notas>
<tema> es hermano
(sibling) de <tema>
<tema> <tema>
<nota> <nota>
<de> es hijo (child) de
<nota>
<de> <para> <asunto> <mensaje> <de> <para> <asunto> <mensaje>
16
Árbol XML
<notas>
<tema> Atributo <tema>
<nota> <nota>
Contenido
<de> <para> <asunto> <mensaje> <de> <para> <asunto> <mensaje>
17
Algunas Restricciones
● Todos los tags se deben cerrar
○ En HTML
■ <p> Esto es un párrafo
○ En XML
■ <p> Esto es un párrafo </p>
● XML es case sensitive
○ inválido: <Nota> ... </nota>
○ válido: <nota> ... </nota>
18
Algunas Restricciones (2)
● Todos los elementos deben estar
correctamente anidados
○ En HTML esto es válido:
■ <b><i> Este texto está en negrita e italic </b></i>
○ En XML es válido solamente:
■ <b><i> Este texto está en negrita e italic </i></b>
■ <i><b> Este texto está en negrita e italic </b></i>
19
Algunas Restricciones (3)
● Todos los documentos XML deben tener un
nodo raíz
● Los atributos deben estar entre comillas
dobles
● Comentarios
○ <!-- Esto es un comentario -->
20
Algunas Restricciones (4)
● Caracteres especiales
○ ¿Por qué la siguiente línea de un documento XML
es incorrecta?
■ <message> if salary < 1000 then </message>
21
Algunas Restricciones (5)
● Caracteres especiales
○ ¿Por qué la siguiente línea de un documento XML
es incorrecta?
■ <message> if salary < 1000 then </message>
○ Los parsers no pueden identificar el carácter de
menor como un carácter normal, sino como el inicio
de un nuevo tag
■ <message> if salary < 1000 then </message>
22
Algunas Restricciones (6)
● Tabla de caracteres especiales
< < Menor que
> > Mayor que
& & ampersand
' ‘ Comilla simple
" “ Comilla doble
● Oficialmente, sólo los carácteres ‘<’ y ‘&’ son inválidos en XML,
aunque se considera buena práctica sustitur todos los de la tabla
anterior
23
Algunas Restricciones (7)
● Espacios
○ HTML
■ <div>Hola como estás ??</div>
● Se visualiza como “Hola como estás??”
○ XML
■ <div>Hola como estás ??</div>
● Se visualiza como “Hola como estás ??”
■ XML mantiene los espacios en blanco
24
Elementos XML
● Un elemento es todo lo que va desde el tag
de inicio (inclusive) hasta el tag
correspondiente de fin (inclusive)
● Un elemento puede contener
○ Elementos
○ Atributos
○ Texto
○ Una combinación de las anteriores
25
Elementos XML (2)
● Reglas de nomenclatura
○ Nombres de los tags
■ pueden contener letras, números y otros
caracteres
■ no pueden empezar con números
■ no pueden empezar con XML, Xml, xml o
ninguna combinación de mayúsculas-minúsculas
que refiera a XML
■ no pueden contener espacios en blanco 26
Elementos XML (3)
● Mejores prácticas
○ Utilizar tags descriptivos
○ Para nombres compuestos (Ej. Primer Nombre) utilizar “_”:
primer_nombre
○ No utilizar:
■ “-” : algunos parsers pueden interpretar que se le quiere
substraer nombre a primer
■ “.” : algunos parsers pueden interpretar que nombre es una
propiedad de primer
■ “:” : están reservados para namespaces
27
Atributos XML
● Los atributos son parte de un elemento
○ Proveen información extra del mismo
○ Se utilizan sólo en tags de apertura
<tema valor=”Tecnólogo”>
<nota>
<de sexo=”M”>Juan</de>
<para sexo=”F”>Clara</para>
<asunto importante=”no”>Créditos asignatura XML</asunto>
<mensaje>Son 4 créditos</mensaje>
</nota>
</tema>
28
Atributos XML (2)
● Reglas de nomenclatura
○ Los valores de los atributos deben estar comprendidos entre
comillas dobles ”attrValue”, o comillas simples ‘attrValue’
■ Si el contenido contiene comillas
● ‘attrValue “con” comillas’
● ‘attrValue "con" comillas’
● “attrValue "con" comillas”
29
Elementos vs. Atributos
<persona>
<primer_nombre>María</primer_nombre>
<segundo_nombre>Montserrat</segundo_nombre>
<sexo>Femenino</sexo>
</persona>
vs.
<persona sexo=”Femenino”>
<primer_nombre>María</primer_nombre>
<segundo_nombre>Montserrat</segundo_nombre>
</persona>
30
Elementos vs. Atributos (2)
● Metadatos guardados como atributos,
información de elementos como elementos
○ Ej.: ID de un elemento
● ¿Por qué no atributos?
○ No pueden contener valores múltiples
○ No son estructurados
○ No son facilmente expandibles
31