¿Como pasar una página XML a HTML?
Tabla de Contenido
- Proceso de transformación
- La página HTML
-
Vista de la página HTML en navegador
-
Vista de código HTML
-
¿Qué necesitamos para hacer la transformación a XML?
-
¿Por qué necesitamos varios archivos para poder hacer la transformación?
- La página XML
-
Analizando la estructura y el formato
-
Particularidades del documento XML
-
¿Que debe tener el documento XML?
-
Este es el documento XML
- La página XSL
-
Particularidades del documento XSL
-
¿Que debe tener el documento XSL?
-
¿Como procesar el contenido del documento XML?
-
Filtrando la información del XML
-
Este es el documento XSL
-
Resultado: página XML transformada
- Más sobre la transformación
- CSS
-
Usar las hojas de estilo CSS
- DTD
-
Documentos 'bien formados'
-
Importancia del DTD / XSD
-
Insertar el DTD en el documento XML
-
Un ejemplo de DTD
- XSD
-
Esquema XML Ejemplo
-
Declaraciones y Definiciones
-
Validación del XML usando XSD
Contenido
-
Proceso de transformación
-
La página HTML
-
Página HTML
Esta es la página HTML de la que partimos
Esta página HTML será la que transformemos a XML
Nombre |
Apellido |
Ana |
López |
Teresa |
Trujillo |
-
-
|
-
Código HTML
<html>
<head>
<title>Esta es la página HTML de la que partimos (código)</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<link rel='stylesheet' href='Como.htm' type='text/css'>
<link rel='stylesheet' href='../../../../../style.css' type='text/css'>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<table border='1'>
<tr>
<td>Nombre</td>
<td>Apellido</td>
</tr>
<tr>
<td>Ana</td>
<td>López</td>
</tr>
<tr>
<td>Teresa</td>
<td>Trujillo</td>
</tr>
<tr>
<td>Isabel</td>
<td>Martín</td>
</tr>
<tr>
<td>Maria</td>
<td>Plata</td>
</tr>
</table>
<p>- </p>
<blockquote>
<p>-</p>
</blockquote>
</body>
</html>
|
-
La página HTML
- La página HTML de origen.
- Una página XML en la que estará el contenido de los datos que había en la página HTML. Únicamente contiene los datos estructurados jerárquicamente, no su formato o la estructura con que se mostrarán en la pantalla del usuario una vez procesados.
- Una página XSL, que es la encargada de definir el formato de los datos y la estructura que tendrá nuestra página XML para que se vea en el navegador como la página HTML original. Es la verdadera encargada de realizar la transformación.
- Una página DTD o XSD para validar nuestra página XML, de manera que los datos introducidos en ella sean correctos (que cada dato sea del tipo especificado, etc.) Estas páginas son opcionales.
- Un navegador que permita visualizar páginas XML (Microsoft Explorer 6).
|
-
Varios archivos XSL
- Con el archivo XML no tenemos suficiente, pues aunque los datos en el documento XML están estructurados de manera jerárquica, solo contiene los datos, no la estructura con la que se mostrarán ni el formato en que se presentan.
- El archivo XSL es el que 'da sentido' al XML, pues concreta su contenido en una estructura y un formato 'real', es decir, es la que transforma realmente los datos que serán mostrados por el dispositivo.
- Esto significa que a una misma página XML podríamos aplicar varias páginas XSL distintas, de manera que podríamos mostrar la información de maneras distintas.
- No solo podríamos mostrar la misma información de maneras distintas, también podemos elegir que información será mostrada de la contenida en el archivo XML.
- Si quisiéramos hacer esto con HTML tendríamos que escribir una página HTML por cada una de las maneras en que queremos mostrar la información.
- Podemos establecer varios símiles para entender esto mejor:
- Una casa:
- XML = Los ladrillos, puertas, ventanas, etc. de los que disponemos para construir la casa.
- XSL = Los planos de la casa. La manera en la que se disponen los ladrillos, puertas, y los demás elementos.
- Fútbol:
- XML = Los jugadores.
- XSL = Las distintas formaciones en que pueden disponerse los jugadores, en función de si queremos una táctica más defensiva o de más ataque.
- Tanto los DTD como los XSD nos sirven para validar que los datos siguen la estructura definida, pero ambos son opcionales.
|
-
La página XML
-
¿Qué vamos a transformar?
- Si observamos la página HTML que vamos a transformar podemos extraer su estructura y su formato:
- Haz dos zonas principales: titular y cuerpo de la página:
- La fuente del titular presenta un tamaño mayor que el resto de la página.
- El cuerpo a su vez se divide en una zona de texto que da una breve descripción de la página y una tabla con datos.
- La tabla posee dos zonas: titulo y datos. Hay dos datos distintos: nombre y apellido.
|
-
-
Contenido del documento XML
- Una primera línea que indica que se trata de un documento XML y la codificación que este tiene.
<?xml version='1.0' encoding='ISO-8859-1'?>
- Una referencia al documento XSL que le da el formato/transformación (si lo tiene):
<?xml-stylesheet type='text/xsl' href='xslejemplo.xsl'?>
- El documento XML se vería::
|
-
-
La página XSL
-
-
Contenido del documento XSL
- Como el documento XSL es en realidad un documento XML debe haber una primera línea que indica que se trata de un documento XML y la codificación que este tiene.
<?xml version='1.0' encoding='ISO-8859-1'?>
- Debe contener una referencia que declare que se trata de un documento XSL:
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0' >
- El atributo match asigna la plantilla a un elemento XML. Si dicho elemento es / se asocia a la totalidad del documento.
- El documento XSL se vería::
|
-
Procesar los elementos
- En el XSL indicamos como queremos mostrar/tratar cada elemento del documento XML.
- Para ello hacemos lo siguente:
- Seleccionamos el elemento correspondiente mediante el atributo 'value-of select' e indicamos el elemento deseado respecto al raíz del documento:
<xsl:value-of select='/Pag/Titulo' />
- Lo incluimos entre los tag que queremos que actúen sobre él:
- Si queremos repetir esto mismo para cada valor del elemento XML debemos usar <xsl:for-each>:
- Es importante no olvidar el espacio que precede a la barra / que cierra el tag <xsl:value-of select>.
|
-
Cómo procesar la información
<xsl:for-each select='Pag/ListaPersonas/Persona[Nombre='Ana']'>
<tr>
<td>
<xsl:value-of select='Nombre'/>
</td>
<td>
<xsl:value-of select='Apellidos'/>
</td>
</tr>
</xsl:for-each>
Ver este ejemplo
<xsl:for-each select='Pag/ListaPersonas/Persona[Articulos>7']'>
<tr>
<td>
<xsl:value-of select='Nombre'/>
</td>
<td>
<xsl:value-of select='Apellidos'/>
</td>
</tr>
</xsl:for-each>
Ver este ejemplo
- En función de un cierto valor podemos presentar el contenido de distintas maneras:
<xsl:if test='Apellido='Plata'>
<tr>
<td>
<b><xsl:value-of select='Nombre'/></b>
</td>
<td>
<xsl:value-of select='Apellido'/>
</td>
</tr>
</xsl:if>
Ver este ejemplo
- Podemos hacer que si una condición se cumple los valores se muestren de una manera y los que no la cumplan se muestren de otra manera:
<xsl:choose>
<xsl:when test='Apellido='Plata'>
<td bgcolor='#ff0000'>
<xsl:value-of select='Nombre'/>
</td>
</xsl:when>
<xsl:otherwise>
<td>
<xsl:value-of select='Nombre'/>
</td>
</xsl:otherwise>
</xsl:choose>
Ver este ejemplo
|
-
-
-
Más sobre la transformación
-
CSS
-
Usando hojas de estilo CSS2 en XML
- Podemos usar hojas de estilo en cascada (CSS 2) en nuestros XML para mejorar
su apariencia.
- Esto es una 'solución poco deseable', ya que podríamos
hacer esto mediante el XSL, lo cual es preferible, ya que es el nuevo estandar
para definir estilos.
- La llamada a la hoja de estilo se hace añadiendo la siguiente línea
en el código de nuestro documento XML:
<?xml-stylesheet type='text/css' href='HOJA_DE_ESTILO.css'?>
Código de la hoja de estilo estilo.css |
Código del documento XML |
EDAD
{
color: #FF0000;
font-size: 20pt;
}
NOMBRE, APELLIDO
{
color: #0000FF;
font-size: 20pt;
}
ARTICULOS
{
Display: block;
color: #000000;
margin-left: 20pt;
}
etc.
|
<?xml version='1.0' encoding='ISO-8859-1'?>
<?xml-stylesheet type='text/css' href='estilo.css'?>
<!-- Este es nuestro primer archivo XML -->
<Pag>
<Titulo>Página HTML</Titulo>
<PagDesc>Para transformar a XML</PagDesc>
<PersonaLista>
<Persona>
<Nombre>Ana</Nombre>
<Apellido>López</Apellido>
<Edad>27</Edad>
<Articulos>5</Articulos>
</Persona>
<Persona>
<Nombre>Teresa</Nombre>
<Apellido>Trujillo</Apellido>
<Edad>55</Edad>
<Articulos>7</Articulos>
</Persona>
<Persona>
<Nombre>Maria</Nombre>
<Apellido>Plata</Apellido>
<Edad>22</Edad>
<Articulos>12</Articulos>
</Persona>
<Persona>
<Nombre>Isabel</Nombre>
<Apellido>Martín</Apellido>
<Edad>25</Edad>
<Articulos>1</Articulos>
</Persona>
</PersonaLista>
</Pag>
|
|
-
DTD
-
XML: documentos bien formados
- Un texto XML está bien formado si sigue las reglas estructurales y de notación del XML.
- Las expresiones 'es casa La roja bonita' y ' 5 (+ - 2 <) 3 = 7' no son expresiones con sentido o 'bien formadas' aunque estén correctamente escritas.
Documento 'bien formado': sigue las reglas definidas por el XML. |
- Algunas normas básicas para que un documento XML esté bien formado son:
- Todos los tag deben cerrarse obligatoriamente.
- Existen tags 'vacíos' que se abren y se cierran de 'una sola vez': <Cantidad unidad='12' />
- Los tag deben abrirse y cerrarse siguiendo un orden, siguiendo una estructura jerárquica.
- Los valores de los atributos deben ir siempre entre comillas 'valor'.
- Los caracteres <, > y ' deben representarse como (<), (>) y (") en el texto, ya que son caracteres especiales o tokens del XML.
- Para comprobar que un documento XML está bien formado el parser usa el DTD (Document type definition) o el XSD (XML Schema Definition) como referencia, mostrando mensajes de error si estos existen.
Documento 'válido': coincide con lo especificado en el DTD/XSD. |
- Si el parser no valida (como suele ocurrir con el que tienen la mayoría de los navegadores):
- 'Lee'el XML.
- Verifica si está 'bien formado'.
- Muestra la estructura del documento como un árbol de objetos.
- Si el parser valida:
- 'Lee' el XML.
- Verifica si está 'bien formado'.
- Determina si los tag son legales, si los nombres de los atributos tienen
sentido, si los elementos están anidados correctamente, etc.
|
-
¿Porqué son importantes los esquemas?
- Los esquemas DTD / XSD son importantes porque:
- Suele hacerlos el mismo creador del documento XML.
- Sin ellos no se pueden validar los documentos XML.
- Definen la correcta estructura de los elementos del documenteo XML.
- Definen los elementos que pueden aparecer en el documento xml
- Definen los atributos de los elementos que pueden aparecer en el documento xml.
- Definen qué elementos son hijos de los elementos principales del documentos xml
- Definen la secuencia en la cual los hijos de los elementos pueden aparecer en el documento xml.
- Definen el número de hijos de los elementos.
- Definen cuando un elemento es vacío o puede incluir texto.
- Definen el tipo de datos para los elementos y sus atributos.
- Definen los valores predeterminados para algunos elementos y atributos.
|
-
-
Un ejemplo de DTD
- Ejemplo de DTD para un documento XML:
<!ELEMENT Recipe (Nombre, Apellido, Edad?, Articulos, Situacion?)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Apellido (#PCDATA)>
<!ELEMENT Edad (#CDATA)>
<!ELEMENT Articulos (#PCDATA ) #REQUIRED>
<!ELEMENT Situacion (#PCDATA)>
<!ATTLIST Situacion Casado CDATA '0'
Trabajo
CDATA 'si'>
- <!ELEMENT Recipe (Nombre, Apellido, Edad?, Articulos, Situacion?)> define los tag en el documento. Los que presentan ? son opcionales.
- <!ELEMENT Nombre (#PCDATA)> indica que el tag Nombre contiene solamente cadenas de texto.
- En <!ATTLIST Situacion Casado CDATA '0' Trabajo CDATA 'si'>, el tag Sexo tiene dos posibles atributos: 'casado' cuyo valor por defecto es '0' y 'trabajo' cuyo valor por defecto es 'si'.
|
-
XSD
Página generada automáticamente desde la Base de Datos: XML/ el 28/3/2008 13:16:52