CURSO-TALLER Introducción a

Anuncio
[email protected]
CURSO-TALLER
Introducción a <? xml ?>
Universidad de Colima
Facultad de Ingeniería Mecánica y
Eléctrica
Presentación
Curso -Taller “Introducción a XML”
[email protected]
1. Introducción
XML (lenguaje extensible de etiquetas) no
es un lenguaje de marcado como el HTML.
XML es un metalenguaje que nos permite
definir lenguajes de marcado adecuado a
usus determinados
Al ser XML un metalenguaje para definir
lenguajes, los elementos que lo componen
pueden dar información sobre lo que
contienen, y no necesariamente sobre su
estructura física o presentación, como
ocurre en HTML
Introducción
Curso -Taller “Introducción a XML”
[email protected]
XML no ha nacido solamente para
su aplicación en Internet, sino que
se propone como lenguaje de bajo
nivel (a nivel de aplicación, no de
programación) para intercambio de
información estructurada entre
diferentes plataformas.
Se puede usar en bases de datos,
editores de texto, hojas de cálculo y
casi cualquier cosa que podamos
pensar.
Introducción
Curso -Taller “Introducción a XML”
[email protected]
La idea que subyace bajo el XML es la de crear
un lenguaje muy general que sirva para muchas
cosas. El HTML está diseñado para presentar
información directamente a los humanos, y esto
sin duda es algo bueno, pero es un lenguaje
complicado de procesar para los programas
informáticos.
El HTML no indica lo que está representando,
se preocupa principalmente de que eso tiene
que ir en azul, o con un tipo de letra
determinada, pero no te dice que lo que está
mostrando es el título de un libro o el precio de
un artículo. El XML hace precisamente esto:
describe el contenido de lo que etiqueta.
Introducción
Curso -Taller “Introducción a XML”
[email protected]
2. Estructura de un documento XML
Un documento XML tiene dos estructuras:
- Lógica
- Física
Físicamente, el documento está formado por
unidades llamadas entidades. Cada documento
comienza con una entidad documento.
Lógicamente, el documento está formado por
declaraciones, elementos, comentarios, referencias
a caracteres e instrucciones de procesamiento
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Los documentos XML se dividen en
dos grupos:
- Documentos bien formados
- Documentos válidos
- Bien formados: son los que
cumplen con las especificaciones
del lenguaje (sintaxis y estructura
jerárquica)
- Válidos: Además de bien
formados, siguen una estructura y
semántica determinada por un DTD
(Declaración de Tipo de
Documento)
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Este es un sencillo ejemplo:
<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?>
<registro>
<nombre>Juan</nombre>
<apellido>Pérez</apellido>
<domicilio>Av. Colón, 123</domicilio>
</registro>
En la primera línea:
- version: indica la versión de XML usada en el documento.
Es obligatorio
- encoding: La forma en que se ha codificado, por defecto
UTF-8
- standalone: Indica si el documento va acompañado de un
DTD (“no”) o no lo necesita (“yes”)
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Una DTD define qué tipo de documento estamos creando
para ser procesado correctamente, mediante
-Un identificador público (PUBLIC) que hace referencia a
dicho DTD
- Un Identificador Universal de Recursos (URI) precedido de
la palabra SYSTEM
ejemplos:
<!DOCTYPE MESAJE SYSTEM “mesaje.dtd”>
<!DOCTYPE HTML PUBLIC “-/ /W3C/ /DTD HTML 3.2 Final/ /EN”>
<!DOCTYPE LABEL SYSTEM “http://www.ucol.mx/dtds/label.dtd”>
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Los documentos XML deben seguir una estructura extrictamente
jerárquica con lo que respecta a las etiquetas que delimitan sus
elementos. Una etiqueta debe estar correctamente incluida en
otra
<?xml version="1.0"?>
<libro>
<titulo>XML</titulo>
<disponible>tiempo="24" unidad="horas"</disponible>
<autor>Kaliman</autor>
<formato>Paperback</formato>
<publicacion>1998</publicacion>
<precio>cantidada="10" moneda="pesos"</precio>
<descuento>cantidad="20"</descuento>
<libro/>
</libro>
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Documentos XML bien formados...
Si cumple con las especificaciones XML de
producción, que conjunta:
Estructura jerárquica de elementos. Las etiquetas
deben estar incluidas correctamente en otras:
<li>HTML <b> le permite <i> esto </b> </i>
<li> en XML la <b> estructura <i> es </i> jerárquica
</b> </li>
Etiquetas vacías. Tanto XML como HTML permiten
etiquetas sin contenido, pero en XML deben ser
expresadas <etiqueta/>, por ejemplo:
<li>Esto es HTML <br> en el que casi todo está
permitido </li>
<li>En XML, es <br/> más restrictivo.</li>
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Documentos XML bien formados...
Un solo elemento raíz. Un documento bien formado, sólo
puede tener un elemento inicial.
Valores de atributos. Deben estar siempre entrecomillados,
ya sea simple (‘) o doble (“), por ejemplo (incorrecto y
correcto):
<a HREF=http://www.ucol.mx/>
<a HREF=“http://www.ucol.mx/”>
Tipos de letras, espacios en blanco. XML es sensible a
mayúsculas y minúsculas.
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Documentos XML bien formados...
Nombrando cosas. No pueden iniciar con
“xml”. Letras y rayas se pueden usar en
cualquier parte, dígitos, guiones, puntos.
Marcado y datos. Las construcciones con
etiquetas, referencia de entidad y
declaraciones se denominan “marcas”. Estas
son las partes del documento que el
procesador XML espera entender.
Las marcas de un documento XML son las
partes que empiezan conm un “<“ y acaban
con un “>” o en referencias a la entidad, que
empiezan con un “&” y terminan con un “;”
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Elementos...
Un elemento puede contener más elementos, caracteres, o
ambos, o ser elementos vacíos
Un elemento con contenido, por ejemplo es:
<nombre> Rodolfo Gallardo-Rosales </nombre>
<aviso tipo=“emergencia” gravedad=“mortal”> Mantener la calma </aviso>
Se inicia siempre con una <etiqueta> y se cierra con una
</etiqueta> del mismo nombre. A diferencia de HTML las
etiquetas se cierran siempre.
Un elemento vacío, es el que no tiene contenido, por ejemplo:
<identificador RFC=“GURR570905109” />
<linea-horizontal/>
En HTML replanteado para que sea un documento XML, las
etiquetas cambiarían un mínimo, por ejemplo:
<hr/> o bien <img src=“images/logo.jpg”/>
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Atributos...
Se usan para incorporar características o propiedades a los
elementos de un documento. Por ejemplo:
<chiste tipo=“gallegos” calidad=“bueno”> Aquí va el relato... </chiste>
En una DTD se especifican los atributos que puede tener un
elemento, así como sus valores.
Pueden estar delimitados por comillas dobles o simples:
<verdura clase=“zanahoria” longitud=‘15” y media’>
<cita texto=“’Hola, Buenos días’, dijo él”>
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
Secciones CDATA
Este tipo de construcción, permite especificar datos,
utilizando cualquier caracter, especial o no. Ejemplo:
<parrafo>Lo siguiente es un ejemplo de HTML.</html>
<ejemplo>
<html>
<head><title>Rock & Roll</title></head>
</ejemplo>
<ejemplo>
<![CDATA[
<html>
<head><title>Rock & Roll</title></head>
] ]>
</ejemplo>
Estructura de un documento XML
Curso -Taller “Introducción a XML”
[email protected]
3. EJEMPLO
Este ejemplo consiste en mostrar un documento de
texto como un documento XML visto en explorador.
Pongamos el siguiente texto en un documento
Notepad.
Evolución del XML
Rodolfo R. Gallardo
En este artículo se muestra la evolución histórica del XML
Introducción
Para entender la evolución del XML hay que retroceder a
la época en la que los sistemas de informática eran todos
propietarios de las empresas que los creaban.
En realidad, las ideas de esta "nueva" tecnología son de
sobra conocidas desde hace muchos años y llevan
décadas dando buenos resultados en múltiples proyectos.
Vamos a repasar algunas de estas ideas a continuación.
Sistema de marcado
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
EJEMPLO Continúa ...
El sistema de marcado de formato se basa en marcar el
texto con instrucciones precisas que describen cada una
de las condiciones que se desea aplicar a las partes del
texto, tales como el tipo de letra o su estilo.
A estas marcas se las denomina "etiquetas" (tags) o
"códigos" y son un proceso válido si se trata de
reproducir un documento con un formato determinado
por una pantalla o impreso en papel.
Aclaración
Las normas necesarias para el desarrollo de XML van
publicándose poco a poco, siendo necesaria la conexión
al W3C para estar al día en este constante proceso de
evolución.
Última fecha de actualización: 12 de noviembre de 2002
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
Marcado
Lo importante es disponer de un documento que incluya varias
entidades, como un :
Título principal
Evolución del XML
El nombre del autor:
Rodolfo R. Gallardo
Una introducción:
En este artículo se muestra la evolución histórica del XML
Unos títulos de apartados:
Introducción
......
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
Marcado
Sistema de marcado
......
Aclaración
Unos párrafos:
Para entender la evolución del XML ...
En realidad, las ideas de esta "nueva" tecnología ...
El sistema de marcado de formato se basa en ...
A estas marcas se las denomina "etiquetas" ...
Las normas necesarias para el desarrollo de ...
Y un comentario final:
Última fecha de actualización: 12 de noviembre de 2002
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
Con esta base, las etiquetas XML adecuadas para marcar
correctamente el documento podrían ser:
<tituloP> (de Título Principal),
<autor>
<intro> (de Introducción),
<tituloA> (de Título de Apartado),
<p> (de Párrafo) y
<comentarioF> (de Comentario Final).
PRECAUCIÓN: En los nombres de las etiquetas se han
eliminado los acentos para evitar cualquier posible
incompatibilidad con alguno de los múltiples procesos
implicados. Se puede utilizar el alfabeto español sin problemas,
pero es una precaución similar a la costumbre de no incluir
acentos ni espacios en los nombres de los archivos.
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
Después de incluirlas en sus lugares correspondientes y de añadir la
declaración XML al principio y la etiqueta raíz <articulo>, el documento
XML queda como el siguiente,
<?xml version="1.0" encoding="ISO-8859-1"?>
<articulo>
<tituloP>Evolución del XML</tituloP>
<autor>Rodolfo R. Gallardo</autor>
<intro>En este artículo se muestra la evolución histórica del XML</intro>
<tituloA>Introducción</tituloA>
<p>Para entender la evolución del XML hay que retroceder a la época en
la que los sistemas de informática eran todos propietarios de las empresas
que los creaban.</p>
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
<p>En realidad, las ideas de esta "nueva" tecnología son de sobra
conocidas desde hace muchos años y llevan décadas dando buenos
resultados en múltiples proyectos. Vamos a repasar algunas de estas ideas
a continuación.</p>
<tituloA>Sistema de marcado</tituloA>
<p>El sistema de marcado de formato se basa en marcar el texto con
instrucciones precisas que describen cada una de las condiciones que se
desea aplicar a las partes del texto, tales como el tipo de letra o su
estilo.</p>
<p>A estas marcas se las denomina "etiquetas" (tags) o "códigos" y son un
proceso válido si se trata de reproducir un documento con un formato
determinado por una pantalla o impreso en papel.</p>
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
<tituloA>Aclaración</tituloA>
<p>Las normas necesarias para el desarrollo de XML van
publicándose poco a poco, siendo necesaria la conexión al W3C
para estar al día en este constante proceso de evolución.</p>
<comentarioF>Última fecha de actualización: 12 de noviembre de
2002</comentarioF>
</articulo>
Ejemplo
Curso -Taller “Introducción a XML”
[email protected]
4. Hojas de Estilo en Cascada
CSS2 es un lenguaje de hojas de estilo que permite a los
autores y usuarios enlazar estilos de formato a documentos
estructurados, como los documentos HTML y las
aplicaciones XML.
Los CSS son unas plantillas de descripciones del formato
en el que se desea que aparezca el contenido de un
determinado documento. Sus descripciones se archivan en
documentos de texto sin formato, guardados con la
extensión .css, necesaria para su identificación.
Estas plantillas pueden ser enlazadas con uno o varios
documentos, por lo que todo el trabajo realizado en cada
plantilla, puede ser aprovechado por múltiples documentos,
siendo ésta una de las principales ventajas de las CSS.
Hojas de estilo en cascada
Curso -Taller “Introducción a XML”
[email protected]
Hojas de Estilo en Cascada
Otra de sus ventajas estriba en que cada vez que
se modifica algún dato en cualquier plantilla CSS,
automáticamente quedan actualizadas las
presentaciones de todos los documentos
enlazados con ella.
La última gran ventaja de las plantillas CSS, es que
permiten controlar el formato de un documento
hasta niveles de detalle imposibles de definir con
las etiquetas de formato HTML.
Hojas de estilo en cascada
Curso -Taller “Introducción a XML”
[email protected]
Propiedades importantes de las CSS
P r op ied a d
C o m e nt a rio
D i s p l a y : I n d i c a c ó m o v is u a li z a r e l c o n t e n i d o . C u a n d o s u v a lo r e s b lo c k s e
t ra ta c o m o u n b lo q u e y s e t e rm i n a c o n u n " p u n t o y a p a rt e " .
I n d i c a e l t ip o d e le t ra q u e s e d e b e a p l ic a r a s u c o n te n id o . V e r d a n a
F on t f a m i l y : e s u n a d e l a s m á s u ti li z a d a s e n la W e b .
F on t I n d i c a e l t a m a ñ o d e le tr a q u e s e d e b e a p l ic a r a s u c o n te n id o . S i l a
s iz e :
u n id a d e s p t , e l ta m a ñ o s e fi ja e n " p u n to s ti p o g rá fi c o s " .
I n d i c a e l c o lo r q u e s e d e s e a a p li c a r a s u c o n t e n id o . E n e s t e c a s o s e
C ol o r:
h a n u ti liz a d o d e s c ri p c io n e s p o r n o m b r e .
T ex t I n d i c a la a l in e a c ió n d e l t e x to . L o s v a l o r e s l e f t, r ig h t y j u s t ify
a li g n:
s ig n ifi c a n " iz q u i e r d a " , " d e r e c h a " y " ju s t if ic a d o " .
I n d i c a e l e s til o d e le tr a q u e h a y q u e a p lic a r a l t e x to . C o n e l v a l o r
F on t s ty l e:
i ta li c s e s e l e c c i o n a e l e s ti lo e n " c u rs iv a " .
Hojas de estilo en cascada
Curso -Taller “Introducción a XML”
[email protected]
Ejemplo de una Plantilla CSS
La siguiente es una plantilla CSS en la que se utilizan las
propiedades entes mencionadas.
tituloP {display:block; font-size:20pt; font-family:Verdana; color:green;
text-align:left}
autor {display:block; font-size:12pt; font-family:Verdana; color:red; textalign:right}
intro {display:block; font-family:Verdana; font-size:10pt; font-style:italic}
tituloA {display:block; font-family:Arial; text-align:left; font-size:14pt;
color:blue}
comentarioF {display:block; font-style:italic; text-align:center; textsize:10pt}
p {display:block; font-family:Verdana; font-size:10pt; text-align:justify }
Hojas de estilo en cascada
Curso -Taller “Introducción a XML”
[email protected]
XML con CSS
Para verlo como una página web, hay que indicar al
visualizador el sistema que deseamos aplicar a su formato. Esto
se consigue fácilmente añadiendo una segunda línea, debajo
de la declaración XML, que incluya una instrucción de
procesamiento adecuada, que para enlazarlo con una plantilla
CSS, será como la siguiente:
<?xml-stylesheet href="articulo.css" type="text/css"?>
En dicha instrucción de procesamiento se pueden distinguir
claramente la llamada a un procesamiento XML a través de una
hoja de estilo (xml stylesheet), la referencia a un archivo CSS
que se denomina articulo.css (href="articulo.css” ) y la
observación de que se trata de un tipo de documento CSS en
forma de texto sin formato (type="text/css” ).
Hojas de estilo en cascada
Curso -Taller “Introducción a XML”
[email protected]
5. DOCUMENTOS CSS
Los documentos CSS, o plantillas CSS, son descripciones
detalladas del formato de las entidades XML. Son muy
similares a las plantillas CSS utilizadas en HTML, ya que
utilizan la misma normativa, pero tienen algunas diferencias,
justificadas por el distinto enfoque de las etiquetas HTML
(prefijadas de antemano y con algunos criterios definidos) y
XML (libres e indefinidas por completo).
Las plantillas CSS pueden insertarse en el propio documento
XML, pero lo más adecuado y recomendable es que formen
parte de un archivo externo, con extensión .css, al que se hace
referencia desde el documento principal.
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
Este sistema recomendado tiene la gran ventaja de asegurar que,
cada vez que se realice alguna modificación, todos los
documentos XML relacionados, quedan inmediatamente
actualizados. En el caso de estar incluidos en el mismo
documento XML, cada modificación debe ser realizada en cada
documento.
Los documentos CSS son archivos de texto sin formato
guardados con extensión .css. No es necesario que estén en la
misma carpeta del documento principal, pudiendo ser
referenciados desde dicho documento a través de una dirección
absoluta, o mejor, relativa.
IMPORTANTE: Si alguna descripción o regla del documento CSS
contiene algún error o no existe alguna de las etiquetas del
documento principal en la plantilla, el visualizador anula el modelo
erróneo y utiliza los parámetros que tiene por defecto para
mostrar la correspondiente información utilizando los datos
correctos o con un formato simplificado.
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
MEJORAS DEL DOCUMENTO XML-CSS
Después de repasar las características más
importantes de la especificación CSS2, estamos en
disposición de mejorar mucho nuestro primer
documento XML-CSS.
Para realizar las mejoras no es preciso retocar el
documento XML, debiendo hacer los cambios sólo
en la plantilla CSS. Pudiéndose modificar el archivo
articulo.css repetidamente para ver el efecto de
dichas modificaciones en la presentación del
documento XML.
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
Una de las muchas variaciones posibles sería dejar la plantilla
CSS como el código que sigue a continuación, que se ha
guardado con el nombre articulo2.css.
tituloP {display:block; width:600px; font-size:20pt; fontfamily:Verdana; color:green; border-bottom:double 4pt navy;
text-align:left}
width:600px es el largo de la linea
border-bottom es el borde de abajo 4 puntos doble color navy
autor {display:block; font-size:12pt; font-family:Verdana;
color:red; text-align:right; margin-bottom:10pt}
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
intro {display:block; margin:25px; font-family:Verdana; fontsize:10pt; font-style:italic}
tituloA {display:block; font-family:Arial; margin-left:1cm; textalign:left; font-size:14pt; font-weight:bold; margin-bottom:10pt}
comentarioF {display:block; margin:.2in; padding:5px; fontstyle:italic; border:outset 3pt; text-align:center; text-size:10pt;
background-color:aqua}
p {display:block; margin-bottom:10pt; font-family:Verdana,sansserif; font-size:10pt; text-align:justify; text-indent:1cm}
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
Ahora vamos a incluir algunas correcciones. Se trata de
mostrar las palabras que aparecen entre comillas (nueva,
etiquetas y código) sin las comillas y con estilo de negrita
(<n>), y ya puestos, vamos a ordenar que la palabra que figura
entre paréntesis (tags), tenga un estilo de cursiva (<c>).
Estos efectos se consiguen añadiendo al código CSS de
articulo2.css las siguientes reglas:
n { font-weight:bold; display:inline }
c { font-style:italic; display:inline }
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
Esta nueva variante de la plantilla CSS hay que guardarla
como articulo3.css. También hay que modificar el documento
XML en dos sentidos: uno, actualizando la línea que llama a la
nueva plantilla CSS, y después, incluyendo las
correspondientes etiquetas <n> y <c> en sus respectivos
lugares. El código del nuevo documento XML, denominado
ejemplo3.xml, se corresponde con:
<?xml version="1.0" encoding="ISO-8859-1"?>
<p>En realidad, las ideas de esta <n>nueva</n> tecnología
son de sobra conocidas desde hace muchos años y llevan
décadas dando buenos resultados en múltiples proyectos.
Vamos a repasar algunas de estas ideas a continuación.</p>
<p>A estas marcas se las denomina <n>etiquetas</n>
(<c>tags</c>) o <n>códigos</n> y son un proceso válido si
se . . .
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
Comentario Oculto
Para terminar de mejorar el proceso, habría que incluir algunos
comentarios que ayudasen a leer los códigos XML y CSS más
fácilmente. Ya hemos visto cómo incluir comentarios con los
terminadores especiales para XML ( <!-- y --> ) y para CSS ( /*
y */ ), pero también podemos aprovechar el valor none de la
propiedad display para que cualquier elemento incluido en el
documento XML sea ocultado en el momento de la
presentación en la pantalla.
Un ejemplo del documento XML con comentarios podría ser el
que se muestra a continuación, localizado como
ejemplo4.xml.
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
<comentarioF>Última fecha de actualización: 12 de noviembre de
2002</comentarioF>
<comentario_oculto>Este documento es una simplificación de
otro más completo</comentario_oculto>
</articulo>
Y su respectiva modificación en la CSS
p {display:block; font-family:Verdana,sans-serif; font-size:10pt;
margin-bottom:10pt; text-align:justify; text-indent:1cm}
n {display:inline; font-weight:bold}
c {display:inline; font-style:italic}
comentario_oculto {display:none}
Documentos CSS
Curso -Taller “Introducción a XML”
[email protected]
6. La ayuda del HTML
Mientras no se desarrolle completamente XML, hay que aprovechar
las técnicas actualmente existentes para complementarlo, ya que
XML no es un sustituto de HTML, sino más bien un complemento.
Para poder seguir adelante, es imprescindible que comentemos un
nuevo concepto: el espacio de nombre (namespace).
En nuestro caso, vamos a disponer dos espacios de nombre, para
incluir los elementos particulares del documento XML en uno de
ellos y para poder utilizar las etiquetas del HTML en el otro espacio
de nombre. De esta forma, podremos aprovechar las ventajas de
los dos sistemas, y de paso, evitaremos colisiones entre etiquetas
coincidentes, como es el caso de la <P> de HTML y de la <p>
utilizada en nuestro ejemplo XML.
La ayuda del HTML
Curso -Taller “Introducción a XML”
[email protected]
Espacio de nombre
Para poder utilizar las etiquetas HTML paralelamente, vamos a
utilizar un espacio de nombre especial para que soporte sus
elementos. La forma más sencilla para crear dicho espacio de
nombre es incorporar el atributo xmlns:html="uri:html" a la
etiqueta del elemento raíz, que en nuestro caso quedará como:
......
<articulo xmlns:html="uri:html">
......
</articulo>
La ayuda del HTML
Curso -Taller “Introducción a XML”
[email protected]
Ejemplo
Por ejemplo, si se desea que el nombre del autor sirva de enlace para
que se le pueda mandar correo electrónico, hay que modificar el
correspondiente código para que quede como:
<autor>
<html:a href="mailto:[email protected]">Rodolfo R. Gallardo</html:a>
</autor>
Cualquier otro componente HTML que se desee incorporar debe seguir
la misma única regla: incluir el prefijo html: en el nombre de sus
etiquetas.
La ayuda del HTML
Curso -Taller “Introducción a XML”
[email protected]
Ejemplo
Por ejemplo, si se desea que el nombre del autor sirva de enlace para
que se le pueda mandar correo electrónico, hay que modificar el
correspondiente código para que quede como:
<autor>
<html:a href="mailto:[email protected]">Rodolfo R. Gallardo</html:a>
</autor>
Cualquier otro componente HTML que se desee incorporar debe seguir
la misma única regla: incluir el prefijo html: en el nombre de sus
etiquetas.
La ayuda del HTML
Curso -Taller “Introducción a XML”
[email protected]
7. Document Type Definition (DTD)
Crear una definición del tipo de documento, es como crear
nuestro propio lenguaje de marcado, para una aplicación
específica. Por ejemplo, podríamos crear un DTD que defina
una tarjeta de visitas. Si un documento se ajusta a un DTD se
denomina “válido”. Por ejemplo:
<!DOCTYPE etiqueta [
<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT codigo (#PCDATA)>
]>
<etiqueta>
<nombre>Juan Pérez</nombre>
<calle>c/ Daniel Larios, 111</calle>
<ciudad>Colima</ciudad>
<pais>México</pais>
<codigo>28030</codigo>
</etiqueta>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
La declaración del tipo de documento empieza en la primera línea
y termina con “] >”. Las declaraciones DTD son las líneas que
empiezan con “<!ELEMENT” y se denominan declaraciones de
tipo elemento.
En el ejemplo anterior, todas las declaraciones DTD que se
definen “etiquetas” están dentro del documento, pero pueden
definirse parcial o totalmente en otro documento. Por ejemplo:
<?xml version=“1.0”?>
<!DOCTYPE coche SYSTEM “http://www.ucol.mx/dtds/coche.dtd”>
<coche>
<modelo> . . . </modelo>
...
</coche>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Asociamos la DTD respecto de la cual construimos
el documento.
<?xml version="1.0" encoding="UTF-8"?>
En este ejemplo va implícita en el propio documento
XML, aunque también puede hacerse externa al
documento e incluso de una forma mixta.
Si la hubiésemos escrito en un fichero "ejemplo.dtd"
tendríamos que referenciarla de la siguiente
manera:
<!DOCTYPE documento SYSTEM "ejemplo.dtd">
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Entidades Predefinidas
En XML se definen 5 entidades predefinidas para
representar caracteres especiales y que no se
presenten como marcado en el procesador . Es decir,
que así podemos usar el carácter “<“ sin que se
interprete como el comienzo de una etiqueta XML.
Entidad
Carácter
&
&
&alt;
<
>
>
'
‘
"
“
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Comentarios
A veces es conveniente insertar comentarios en el
documento, que sean ignorados por el procesado de
la información y las reproducciones del documento.
Los comentarios tienen el mismo formato que el
HTML.
Ejemplo:
<?xml version=“1.0”?>
<!--Aquí va el tipo de documento-->
<!DOCTYPE EJEMPLO [
<!--Esto es un comentario-->
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Por ejemplo:
<!ELEMENT receta (titulo, ingredientes,
procedimiento)>
Siguiendo la definición de elemento anterior, este
ejemplo de documento XML sería válido:
<receta>
<titulo>...</titulo>
<ingredientes>...</ingredientes>
<procedimiento>...</procedimiento>
</receta>
Pero no este:
<receta>
<parrafo>Esto es un párrafo</parrafo>
<titulo>...</titulo>
<ingredientes>...</ingredientes>
<procedimiento>...</procedimiento>
</receta>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
La especificación de contenido puede ser de cuatro tipos:
EMPTY Puede no tener contenido. Suele usarse para los
atributos.
<!ELEMENT salto-de-pagina EMPTY>
ANY Puede tener cualquier contenido.
<!ELEMENT batiburrillo ANY>
Mixed tanto de PCDATA como de enfasis
<!ELEMENT enfasis (#PCDATA)>
<!ELEMENT parrafo (#PCDATA|enfasis)*>
Element Sólo puede contener sub-elementos especificados
en la especificación de contenido.
<!ELEMENT mensaje (remite, destinatario, texto)>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Declaraciones de lista de atributos
Los atributos permiten añadir información adicional a los
elementos de un documento. La principal diferencia entre los
elementos y los atributos, es que los atributos no pueden
contener sub-atributos. Se usan para añadir información
corta, sencilla y desestructurada.
<mensaje prioridad="urgente">
<de>Juan Perez</de>
<a>Hans van Parijs</a>
<texto idioma="holandes">
Hallo Hans, hoe gaat het?
...
</texto>
</mensaje>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
En el ejemplo anterior, para declarar la lista de atributo de
los elementos <mensaje> y <texto> haríamos lo siguiente:
<!ELEMENT mensaje (de, a, texto)>
<!ATTLIST mensaje prioridad (normal | urgente) normal>
<!ELEMENT texto (#PCDATA)>
<!ATTLIST texto idioma CDATA #REQUIRED>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Tipos de atributos
Atributos CDATA y NMTOKEN
Los atributos CDATA (Character DATA)sonlos más
sencillos, y pueden contener casi cualquier cosa. Los
atributos NMTOKEN (NaMe TOKEN) son parecidos, pero
sólo aceptan los caracteres válidos para nombrar cosas
(letras, números, puntos, guiones, subrayados y los dos
puntos).
<!ATTLIST mensaje fecha CDATA #REQUIRED>
<mensaje fecha="12 de noviembre de 2002"> <!ATTLIST
mensaje fecha NMTOKEN #REQUIRED>
<mensaje fecha="12-11-2002">
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Declaración de entidades
XML hace referencia a objetos (ficheros, páginas web,
imágenes, cualquier cosa) que no deben ser analizados
sintácticamente según las reglas de XML, mediante el uso
de entidades. Se declaran en la DTD mediante el uso de
"<!ENTITY"
Una entidad puede no ser más que una abreviatura que se
utiliza como una forma corta de algunos textos. Al usar
una referencia a esta entidad, el analizador sintáctico
reemplaza la referencia con su contenido. En otras
ocasiones es una referencia a un objeto externo o local.
Las entidades pueden ser:
•Internas o Externas
•Analizadas o No analizadas
•Generales o Párametro
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Entidades generales internas
Son las más sencillas. Son básicamente abreviaturas
definidas en la sección de la DTD del documento XML.
Son siempre entidades analizadas, es decir, una vez
reemplazada la referencia a la entidad por su contenido,
pasa a ser parte del documento XML y como tal, es
analizada por el procesador XML.
<!DOCTYPE texto [
<!ENTITY alf "Alien Life From">
]>
<texto><titulo>Un día en la vida de un &alf</titulo></texto>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Ejemplos de DTD
Un ejemplo de DTD que puede servir para resumir todo lo visto
hasta ahora podría ser un DTD que nos defina un lenguaje de
marcado para una base de datos de personas con direcciones email.
El archivo DIRECTORIO.DTD podría ser algo así:
<?xml encoding="UTF-8"?>
<!ELEMENT listin (persona)+>
<!ELEMENT persona (nombre, email*, relacion?)>
<!ATTLIST persona id ID #REQUIRED>
<!ATTLIST persona sexo (hombre | mujer) #IMPLIED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT relacion EMPTY>
<!ATTLIST relacion amigo-de IDREFS #IMPLIED enemigo-de
IDREFS #IMPLIED>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
Basándonos en este DTD, podríamos escribir nuestro primer
directorio en XML de la siguiente manera:
<?xml version="1.0"?>
<!DOCTYPE directorio SYSTEM "directorio.dtd">
<directorio>
<persona sexo="hombre" id="ricky">
<nombre>Ricky Martin</nombre>
<email>[email protected]</email>
<relacion amigo-de="laetitia"/>
</persona>
<persona sexo="mujer" id="leatitia">
<nombre>Laetitia Casta</nombre>
<email>[email protected]</email>
</persona>
</directorio>
Document Type Definition (DTD)
Curso -Taller “Introducción a XML”
[email protected]
8. Schemas XML
Un "schema XML" es algo similar a un DTD, es decir, que define
qué elementos puede contener un documento XML, cómo están
organizados, y que atributos y de qué tipo pueden tener sus
elementos.
La ventaja de los schemas con respecto a los DTDs son:
•Usan sintaxis de XML, al contrario que los DTDs.
•Permiten especificar los tipos de datos.
•Son extensibles.
Por ejemplo, un schema nos permite definir el tipo del contenido
de un elemento o de un atributo, y especificar si debes ser un
número entero, o una cadena de texto, o una fecha, etc. Los
DTDs no nos permiten hacer estas cosas.
Schemas XML
Curso -Taller “Introducción a XML”
[email protected]
Veamos un ejemplo de un documento XML, y su schema
correspondiente:
<documento xmlns="x-schema:personaSchema.xml">
<persona id="fulano">
<nombre>Fulano Menganez</nombre>
</persona>
</documento>
Como podemos ver en el documento XML anterior, se hace
referencia a un espacio de nombres (namespace) llamado
"x-schema:personaSchema.xml". Es decir, le estamos
diciendo al analizador sintáctico XML (parser) que valide el
documento contra el schema "personaSchema.xml".
Schemas XML
Curso -Taller “Introducción a XML”
[email protected]
El schema sería algo parecido a esto:
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<AttributeType name='id' dt:type='string' required='yes'/>
<ElementType name='nombre' content='textOnly'/>
<ElementType name='persona' content='mixed'>
<attrubyte type='id'/>
<element type='nombre'/>
</ElementType>
<ElementType name='documento' content='eltOnly'>
<element type='persona'/>
</ElementType>
</Schema>
El primer elemento del schema define dos espacios de nombre. El
primero "xml-data" le dice al analizador que esto es un schema y
no otro documento XML cualquiera. El segundo "datatypes" nos
permite definir el tipo de elementos y atributos utilizando el prefijo
"dt".
Schemas XML
Curso -Taller “Introducción a XML”
[email protected]
9. Extended Style Language (XSL)
El XSL es un lenguaje que nos permite definir una presentación o
formato para un documento XML. Un mismo documento XML
puede tener varias hojas de estilo XSL que lo muestren en
diferentes formatos (HTML, PDF, RTF, VRML, PostScript, sonido,
etc.)
La aplicación de una hoja de estilos XSL a un documento XML
puede ocurrir tanto en el origen (por ejemplo, un servlet que
convierta de XML a HTML para que sea mostrado a un navegador
conectado a un servidor web), o en el mismo navegador (como en
el caso del MS IE5, y en breve, Netscape 5).
Básicamente, XSL es un lenguaje que define una transformación
entre un documento XML de entrada, y otro documento XML de
salida.
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Una hoja de estilo XSL es una serie
de reglas que determina cómo va a
ocurrir la transformación. Cada
regla se compone de un patrón
(pattern) y una acción o plantilla
(template).
De este modo, cada regla afecta a
uno o varios elementos del
documento XML. El efecto de las
reglas es recursivo, para que un
elemento situado dentro de otro
elemento puede ser también
transformado. Las hojas de estilo
tiene una regla raiz que, además de
ser procesada, llama a las reglas
adecuadas para los elementos
hijos.
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Vamos a ver un ejemplo de todo esto:
<libro>
<titulo>Un título cualquiera</titulo>
<capitulos>
<capitulo>
<titulo>Capítulo 1</titulo>
<parrafo>...</parrafo>
<parrafo>...</parrafo>
</capitulo>
<capitulo>
<titulo>Capítulo 2</titulo>
...
</capitulo>
</capitulos>
</libro>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Queremos convertir este documento XML en HTML bien
formado, de la siguiente manera:
<HTML>
<HEAD>
<TITLE>Un título cualquiera</TITLE>
</HEAD>
<BODY>
<H1>Un título cualquiera</H1>
<HR>
<H2>Capítulo 1</H2>
<P>...</P>
<P>...</P>
<HR>
<H2>Capítulo 2</H2>
<P>...</P>
</BODY>
</HTML>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
La hoja de estilo XSL necesaria sería algo parecido a lo
siguiente:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="libro">
<HTML><HEAD>
<TITLE><xsl:process select="titulo"/></TITLE>
</HEAD><BODY>
<H1><xsl:process select="titulo"/></H1>
<xsl:process select="capitulos"/>
</BODY></HTML>
</xsl:template><xsl:template match="capitulos">
<xsl:process select="capitulo”/></xsl:template>
<xsl:template match="capitulo">
<H2><xsl:process select="titulo"/></H2>
<xsl:process select="parrafo"/></xsl:template>
<xsl:template match="parrafo"><P><xsl:process-children/></P>
</xsl:template></xsl:stylesheet>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Veamos un ejemplo muy sencillo de un pequeño lenguaje de
etiquetas para definir documentos FAQ:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE FAQ SYSTEM "FAQ.DTD">
<FAQ><INFO>
<TITULO> WINDOWS98? SOLO SI ME OBLIGAN!
</TITULO>
<AUTOR> Fernando Damián Lorenzo García </AUTOR>
<EMAIL> [email protected] </EMAIL>
<VERSION> 1.0 </VERSION>
<FECHA> 20.MAYO.99 </FECHA>
</INFO><PART NO="1">
<Q NO="1">
<QTEXT>¿Por qué tengo que instalar W95?</QTEXT>
<A> A mi también me parece una buena pregunta.</A>
</Q><Q NO="2">
<QTEXT>Y de que me vale?</QTEXT>
<A>Otra ingeniosa pregunta.</A>
</Q></PART>
</FAQ>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Para el lenguaje de marcas mostrado arriba tenemos el siguiente
DTD:
<!ELEMENT FAQ (INFO, PART+)>
<!ELEMENT INFO (TITULO, AUTOR, EMAIL?, VERSION?,
FECHA?)>
<!ELEMENT TITULO (#PCDATA)>
<!ELEMENT AUTOR (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ELEMENT VERSION (#PCDATA)>
<!ELEMENT FECHA (#PCDATA)>
<!ELEMENT PART (Q+)>
<!ELEMENT Q (QTEXT, A)>
<!ELEMENT QTEXT (#PCDATA)>
<!ELEMENT A (#PCDATA)>
<!ATTLIST PART NO CDATA #IMPLIED TITLE CDATA #IMPLIED>
<!ATTLIST Q NO CDATA #IMPLIED>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Veamos ahora un ejemplo de código XML para una librería virtual:
<?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>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Su DTD correspondiente:
<!ELEMENT autor ( #PCDATA ) >
<!ELEMENT descuento EMPTY >
<!ATTLIST descuento cantidad CDATA #REQUIRED >
<!ELEMENT disponible EMPTY >
<!ATTLIST disponible tiempo CDATA #REQUIRED >
<!ATTLIST disponible unidad CDATA #REQUIRED >
<!ELEMENT enlacelibro EMPTY >
<!ATTLIST enlacelibro href CDATA #REQUIRED >
<!ELEMENT formato ( #PCDATA ) >
<!ELEMENT libro ( titulo | disponible | autor | formato | publicacion |
precio | descuento | enlacelibro )* >
<!ELEMENT precio EMPTY >
<!ATTLIST precio cantidad CDATA #REQUIRED >
<!ATTLIST precio moneda CDATA #REQUIRED >
<!ELEMENT publicacion ( #PCDATA ) >
<!ELEMENT titulo ( #PCDATA ) >
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
10. HTML y XML
En algunas ocasiones, cuando no se conocen bien las posibilidades
del HTML y del XML, suele surgir la cuestión: si ya existe un potente
y conocido HTML, ¿para qué hay que utilizar XML?
La respuesta está en que no son sistemas incompatibles ni
excluyentes. Cada uno se debe utilizar donde mejor se aproveche.
HTML es muy bueno en dar formato a los documentos hipertexto, por
lo tanto, debe utilizarse en dichos documentos sin mayor problema.
XML tiene mejor comportamiento con documentos complejos
interactivos, así que, en ese sector debe utilizarse.
Veamos un sencillo ejemplo. Supongamos que hay que diseñar una
página web que incluya información sobre tres libros.
HTML y XML
Curso -Taller “Introducción a XML”
[email protected]
A través del código HTML se puede crear una tabla como la siguiente:
<TABLE>
<TR>
<TD>Título</TD><TD>Autor</TD><TD>Precio</TD>
</TR>
<TR>
<TD>AutoSketch</TD><TD>Ramón Montero</TD><TD>2.500</TD>
</TR>
<TR>
<TD>Windows 98</TD><TD>Jaime de Yraolagoitia</TD><TD>3.250</TD>
</TR>
<TR>
<TD>Web Graphics</TD><TD>Ron Wodaski</TD><TD>8.975</TD>
</TR>
</TABLE>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
La misma información, puesta en formato XML podría quedar
como se indica en el siguiente código:
<LIBROS>
<LIBRO>
<TITULO>AutoSketch</TITULO>
<AUTOR>Ramón Montero</AUTOR>
<PRECIO>2.500</PRECIO>
</LIBRO>
<LIBRO>
<TITULO>Windows 98</TITULO>
<AUTOR>Jaime de Yraolagoitia</AUTOR>
<PRECIO>3.250</PRECIO>
</LIBRO>
<LIBRO>
<TITULO>Web Graphics</TITULO>
<AUTOR>Ron Wodaski</AUTOR>
<PRECIO>8.975</PRECIO>
</LIBRO>
</LIBROS>
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
Ante estos ejemplos, el usuario que solo
desea publicar estos datos en una página web
por Internet, sería más lógico que se decidiese
por el código HTML, pero el diseñador que
utiliza estos datos para hacer cálculos de
precios, o selecciones de obras de autores,
por ejemplo, debe optar por XML sin dudarlo.
La actual normativa de HTML se encuentra en
su versión 4.01 desde el 24 de diciembre de
1999, tal como se puede observar en la figura
00.06. Se puede ver en la sede del W3C, en la
dirección: www.w3.org/TR/html4/.
Extended Style Language (XSL)
Curso -Taller “Introducción a XML”
[email protected]
11. Base de Datos XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<alumnos>
<alumno>
<numero>1</numero>
<nombre>Ramón</nombre>
<apellido>Primero</apellido>
<nivel>Iniciación</nivel>
<curso>XML</curso>
</alumno>
<alumno>
<numero>2</numero>
<nombre>Jaime</nombre>
<apellido>Segundo</apellido>
<nivel>Avanzado</nivel>
<curso>Windows 2000</curso>
</alumno>
<alumno>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<numero>3</numero>
<nombre>José Manuel</nombre>
<apellido>Tercero</apellido>
<nivel>Básico</nivel>
<curso>HTML</curso>
</alumno>
<alumno>
<numero>4</numero>
<nombre>María Teresa</nombre>
<apellido>Cuarta</apellido>
<edad></edad>
<nivel>Medio</nivel>
<curso>UNIX</curso>
</alumno>
</alumnos>
Guardar como alumnos.xml
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Para aprovechar la información del documento externo XML
alumnos.xml, hay que modificar el código HTML anterior para
dejarlo como el que sigue a continuación, que habrá que guardar
como alumnos.html.
<html>
<head><title>Lista de alumnos 1</title></head>
<body>
<xml id="ListaAlumnos1" src="alumnos.xml"></xml>
<table datasrc="#ListaAlumnos1" border="1">
<caption>LISTA DE ALUMNOS</caption>
<thead>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<th>Número</th>
<th>Nombre</th>
<th>Apellido</th>
<th>Curso</th>
<th>Nivel</th>
</thead>
<tbody><tr>
<td><span datafld="numero"></span></td>
<td><span datafld="nombre"></span></td>
<td><span datafld="apellido"></span></td>
<td><span datafld="curso"></span></td>
<td><span datafld="nivel"></span></td>
</tr></tbody>
</table>
</body></html>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
En el código HTML anterior se puede observar que la parte que
no interfiere con los datos del documento XML se trata como
cualquier código HTML típico.
También se puede ver que se ha añadido una línea con la
etiqueta <xml>, ajustada para enlazar con alumnos.xml y
conteniendo el identificador ListaAlumnos1.
Pero también se han utilizado dos nuevas entidades: datasrc
(data-source, origen de datos) y datafld (data-field, campo de
datos).
DATASRC aparece como atributo específico de <table> en la que
se hace una llamada a los datos existentes ListaAlumnos1
anteponiéndole el símbolo del "signo de número" # (<table
datasrc="#ListaAlumnos1">).
DATAFLD es otro atributo de la etiqueta HTML <span> que
permite hacer una llamada a "cada uno de los datos" del campo
de datos (elemento XML) al que hace referencia (<span
datafld="elemento_XML"></span>).
En este ejemplo, datasrc y datafld son atributos de elementos de
una tabla, porque es el sistema de presentación HTML elegido,
pero pueden añadirse a otras etiquetas HTML.
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Gestión individual de datos XML.
La presentación de datos a través de tablas organizadas en filas
y columnas es muy práctica en muchos casos, pero en otros, no
es el método ideal.
Tales son los casos en los que la información de algunas celdas
precisa de textos largos, o cuando el número de columnas es
demasiado grande para entrar en una pantalla, o también,
cuando el número de filas resultante es tan extenso que la
visualización de la tabla exige varios desplazamientos verticales.
La solución en estos casos pasa por el control de los datos en un
formato individualizado, de forma que el usuario pueda acceder a
la información de cada elemento principal en modo secuencial, o
sea, de uno en uno.
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<html>
<head>......</head>
<body>
<xml id="ListaAlumnos2" src="alumnos2.xml"></xml>
<center>
<h2>LISTADO DE ALUMNOS del Centro "TODO-WEB"</h2>
<h3>RELACIÓN DE ALUMNOS</h3>
</center>
<p>Número: <b><span datasrc="#ListaAlumnos2"
datafld="numero"></span></b></p>
<p>Alumno: <b><span datasrc="#ListaAlumnos2"
datafld="nombre"></span> 
<span datasrc="#ListaAlumnos2" datafld="apellido"></span></b></p>
<p>Edad: <b><span datasrc="#ListaAlumnos2"
datafld="edad"></span></b> 
Sexo: <b><span datasrc="#ListaAlumnos2"
datafld="sexo"></span></b></p>
<hr width="500" align="left">
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<p>Curso: <b><span datasrc="#ListaAlumnos2"
datafld="curso"></span></b></p>
<p>Nivel: <b><span datasrc="#ListaAlumnos2"
datafld="nivel"></span></b></p>
<p>Observaciones: <b><span datasrc="#ListaAlumnos2"
datafld="observaciones"></span></b></p>
<hr width="500" align="left"><center>
<button onclick="ListaAlumnos2.recordset.MoveFirst()"
title="Principio">  |<<   </button> 
<button onclick="if (! ListaAlumnos2.recordset.BOF)
ListaAlumnos2.recordset.MovePrevious()" title="Anterior">
 < </button> 
<button onclick="if (! ListaAlumnos2.recordset.EOF)
ListaAlumnos2.recordset.MoveNext()" title="Siguiente">
 > </button> 
<button onclick="ListaAlumnos2.recordset.MoveLast()" title="Final">
  >>|   </button>
</center></body></html>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Creando el archivo alumnos2.xml como sigue:
<?xml version="1.0" encoding="ISO-8859-1"?>
<alumnos>
<alumno>
<numero>1</numero>
<nombre>Ramón</nombre>
<apellido>Primero</apellido>
<nivel>Iniciación</nivel>
<curso>XML</curso>
<observaciones>Buen estudiante</observaciones>
<edad>20</edad>
<sexo>H</sexo>
</alumno>
<alumno>
<numero>2</numero>
<nombre>Jaime</nombre>
<apellido>Segundo</apellido>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<nivel>Avanzado</nivel>
<curso>Windows 2000</curso>
<observaciones>Parte de la Banda
Escolar</observaciones>
<edad>18</edad>
<sexo>H</sexo>
</alumno>
<alumno>
<numero>3</numero>
<nombre>José Manuel</nombre>
<apellido>Tercero</apellido>
<nivel>Básico</nivel>
<curso>HTML</curso>
<observaciones>Falta mucho a clase</observaciones>
<edad>21</edad>
<sexo>H</sexo>
</alumno>
<alumno>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<numero>4</numero>
<nombre>María Teresa</nombre>
<apellido>Cuarta</apellido>
<nivel>Medio</nivel>
<curso>UNIX</curso>
<observaciones>Es parte del equipo de
atletismo</observaciones>
<edad>32</edad>
<sexo>M</sexo>
</alumno>
</alumnos>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Modificando una vez más, para mejor presentación:
<html>
<head>......</head>
<body>
<xml id="ListaAlumnos3" src="alumnos3.xml"></xml>
<center>
<h2>LISTADO DE ALUMNOS del Centro "TODO-WEB"</h2>
<h3>RELACIÓN DE ALUMNOS</h3>
</center>
<p>Número: <b><span datasrc="#ListaAlumnos3"
datafld="numero"></span></b></p>
<p>Nombre: <input type="text" datasrc="#ListaAlumnos3"
datafld="nombre"
size="25"></p>
<p>Apellido: <input type="text" datasrc="#ListaAlumnos3"
datafld="apellido"
size="25">
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<p>Edad: <b><span datasrc="#ListaAlumnos3"
datafld="edad">
</span></b>      &nb
sp;
Sexo: <input type="radio" datasrc="#ListaAlumnos3"
datafld="sexo"
value="H">Hombre <input type="radio"
datasrc="#ListaAlumnos3" datafld="sexo"
value="M">Mujer</p>
<hr width="500" align="left">
<p>Curso: <select datasrc="#ListaAlumnos3"
datafld="curso" size="1">
<option value="HTML">HTML
<option value="UNIX">UNIX
<option value="Windows 2000">Windows 2000
<option value="XML">XML
</select>      
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Nivel: <select datasrc="#ListaAlumnos3" datafld="nivel"
size="1">
<option value="Iniciación">Iniciación
<option value="Básico">Básico
<option value="Medio">Medio
<option value="Avanzado">Avanzado
</select><p>
<p>Observaciones: <b><span datasrc="#ListaAlumnos10"
datafld="observaciones"></span></b></p>
<hr width="500" align="left">
<center>
<button onclick="ListaAlumnos3.recordset.MoveFirst()"
title="Principio">
  |<<   </button> 
<button onclick="if (! ListaAlumnos3.recordset.BOF)
ListaAlumnos3.recordset.MovePrevious()" title="Anterior">
 < 
</button> 
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<button onclick="if (! ListaAlumnos3.recordset.EOF)
ListaAlumnos3.recordset.MoveNext()" title="Siguiente">
 > 
</button> 
<button onclick="ListaAlumnos3.recordset.MoveLast()"
title="Final">
  >>|   </button></center>
</body>
</html>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Cartas personalizadas.
En primer lugar vamos a utilizar un documento XML denominado
agenda.xml como base de datos para generar automáticamente
cartas personalizadas.
Este documento puede ser el siguiente:
<?xml version="1.0" encoding="ISO-8859-1"?>
<agenda>
<cliente>
<nombre>Ana</nombre>
<apellidos>López García</apellidos>
<dirección>c/ Una, 11</dirección>
<tfno>111-11-11</tfno>
<empresa>UNA.COM</empresa>
<sector>Farmacia</sector>
<sexo>a</sexo>
</cliente>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<cliente>
<nombre>José</nombre>
<apellidos>Pérez González</apellidos>
<dirección>c/ Dos, 22</dirección>
<tfno>222-22-22</tfno>
<empresa>DOS.NET</empresa>
<sector>Turismo</sector>
<sexo>o</sexo>
</cliente>
<cliente>
<nombre>Juan</nombre>
<apellidos>Gómez Sánchez</apellidos>
<dirección>c/ Tres, 33</dirección>
<tfno>333-33-33</tfno>
<empresa>TRES.ORG</empresa>
<sector>Educación</sector>
<sexo>o</sexo>
</cliente>
</agenda>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
El código HTML capaz de generar las cartas personalizadas
para cada uno de los clientes, puede ser alguno similar a:
<html>
<head>
<title>Cartas</title>
</head>
<body>
<xml id="agenda" src="agenda.xml"></xml>
<table datasrc="#agenda" border="0">
<tr><td>
<p><span datafld="apellidos"></span>, <span
datafld="nombre"></span><br>
<span datafld="empresa"></span><br>
<span datafld="dirección"></span></p>
<br>
<p>Estimad<span datafld="sexo"></span> <span
datafld="nombre"></span>:</p>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<p>Como representante de <b><span
datafld="empresa"></span></b>, quedas
invitad<span datafld="sexo"></span> a la conferencia sobre
<i><span datafld="sector"></span></i> que se celebrará
el próximo 30 de
febrero de 2005 en el Hotel Pi.</p>
<p>Un saludo:</p>
<br><br><br>
<p align="right">Rodolfo Gallardo-Rosales</p>
<hr>
</td></tr>
</table>
</body>
</html>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Selección de datos
El tercer ejemplo nos muestra un proceso de selección de datos,
por el que cualquier usuario puede indicar una consulta sobre el
tema en el que tiene especial interés, mostrándose
seguidamente la información adecuada a la consulta.
Para ver un ejemplo práctico, vamos a utilizar una versión
modificada de nuestro anterior archivo de agenda, que debe
quedar como se muestra a continuación, guardado con el
nombre de agenda2.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<agenda>
<cliente>
<nombre>Ana</nombre>
<apellidos>López García</apellidos>
<dirección>c/ Una, 11</dirección>
<tfno>111-11-11</tfno>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<empresa>UNA.COM</empresa>
<sector>Farmacia</sector>
</cliente>
<cliente>
<nombre>José</nombre>
<apellidos>Pérez Lago</apellidos>
<dirección>c/ Dos, 22</dirección>
<tfno>222-22-22</tfno>
<empresa>DOS.NET</empresa>
<sector>Turismo</sector>
</cliente>
<cliente>
<nombre>Juan</nombre>
<apellidos>Gómez Mar</apellidos>
<dirección>c/ Tres, 33</dirección>
<tfno>333-33-33</tfno>
<empresa>TRES.ORG</empresa>
<sector>Educación</sector>
</cliente>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<cliente>
<nombre>María</nombre>
<apellidos>Rodríguez Río</apellidos>
<dirección>c/ Cuatro, 44</dirección>
<tfno>444-44-44</tfno>
<empresa>CUATRO.ES</empresa>
<sector>Educación</sector>
</cliente>
<cliente>
<nombre>Pedro</nombre>
<apellidos>González Monte</apellidos>
<dirección>c/ Cinco, 55</dirección>
<tfno>555-55-55</tfno>
<empresa>CINCO.DE</empresa>
<sector>Turismo</sector>
</cliente>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<cliente>
<nombre>Francisco</nombre>
<apellidos>Sánchez Cielo</apellidos>
<dirección>c/ Seis, 66</dirección>
<tfno>666-66-66</tfno>
<empresa>SEIS.FR</empresa>
<sector>Educación</sector>
</cliente>
</agenda>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Ahora hay que crear un código HTML capaz de realizar
búsquedas por el campo <sector>, de forma que cualquier
persona pueda localizar a todos los clientes de un determinado
sector, y ver sus datos.
Este proceso exige recurrir a código JavaScript (u otro lenguaje
similar), dando lugar a un archivo con nombre agenda2.htm,
que puede ser como:
<html>
<head>
<title>Búsqueda en agenda</title>
</head>
<body>
<xml id="agenda2" src="agenda2.xml"></xml>
<h2>Buscar datos en agenda por sectores comerciales:</h2>
<br>
<p>Seleccionar el sector adecuado:
<select id="Texto" name="Texto" size="1" onclick='Datos()'>
<option>SECTORES:</option>
<option>---------</option>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<option value="Educación">Educación</option>
<option value="Farmacia">Farmacia</option>
<option value="Turismo">Turismo</option>
</select>
</p>
<hr>
<p>Datos coincidentes con la búsqueda:</p>
<div id=Resultado></div>
<script language="JavaScript">
function Datos ()
{
palabra = Texto.value;
if (palabra == "")
{
Resultado.innerHTML = "<font color='red'>Seleccionar un sector
comercial</font>";
return;
}
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
agenda2.recordset.moveFirst();
ResultadoHTML = "";
while (!agenda2.recordset.EOF)
{
CadenaTexto = agenda2.recordset("sector").value;
if (CadenaTexto.indexOf(palabra) >=0)
ResultadoHTML += "<p><b>"
+ agenda2.recordset("apellidos")
+ "</b>, "
+ agenda2.recordset("nombre")
+ "<br><font color='blue'>Empresa:</font> "
+ agenda2.recordset("empresa")
+ "<br><font color='blue'>Tfno:</font> "
+ agenda2.recordset("tfno")
+ "<br><font color='blue'>Dirección:</font> "
+ agenda2.recordset("dirección")
+ "<br><font color='blue'>Sector:</font> "
+ agenda2.recordset("sector")
+ "<br><hr></p>";
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
agenda2.recordset.moveNext();
}
if (ResultadoHTML == "")
Resultado.innerHTML = "<font color='red'>No se ha encontrado
ningún cliente en
este sector</font>";
else
Resultado.innerHTML = ResultadoHTML;
}
</script>
</body>
</html>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
<cliente>
<nombre>María</nombre>
<apellidos>Rodríguez Río</apellidos>
<dirección>c/ Cuatro, 44</dirección>
<tfno>444-44-44</tfno>
<empresa>CUATRO.ES</empresa>
<sector>Educación</sector>
</cliente>
<cliente>
<nombre>Pedro</nombre>
<apellidos>González Monte</apellidos>
<dirección>c/ Cinco, 55</dirección>
<tfno>555-55-55</tfno>
<empresa>CINCO.DE</empresa>
<sector>Turismo</sector>
</cliente>
Base de Datos XML
Curso -Taller “Introducción a XML”
[email protected]
Para saber más...
Se recomienda visitar los siguientes recursos:
http://www.ibium.com/alf/xml/index.asp
http://www.ulpgc.es/otros/tutoriales/xml/
http://www.teleprogramadores.com/
http://gopher.sil.org/sgml/sgml.html
Contacto:
[email protected]
Para saber más
Curso -Taller “Introducción a XML”
Descargar