Apuntes básicos del Tema 6

Anuncio
LENGUAJES DE MARCAS
Tema 6
Apuntes básicos del Tema 6
CSS con documentos XML
Contenidos:
1. Introducción: CSS con documentos XML
2. Diferencias fundamentales con la aplicación de CSS en HTML
3.
Como incluir la hoja de estilos externa en el documento XML
4.
Un ejemplo sencillo
5. Aplicando estilos en XML
6.
Incluir la hoja de estilo en el documento
7. Otras posibilidades de presentaciones de documentos XML
1. - Introducción: CSS con documentos XML
Volviendo al ámbito
de XML después de haber visto en los dos temas anteriores la
particularización en XHTML y su presentación con las hojas de estilo CSS, debe quedar todavía
más claro (si cabe) la separación total y absoluta entre el contenido y la presentación de nuestros
documentos.
Hemos visto en los tres primeros temas qué es XML y los requisitos y técnicas para que sean bien
formados y válidos, teniendo en cuenta la estructura y contenidos de los documentos que lo utilizan,
por lo que podemos decir que XML se encarga del contenido de la información pero no interviene
para nada en la presentación. Sin embargo, hemos de ser muy conscientes de que hoy en día la
presentación visual es un factor muy importante.
Aunque en los próximos temas veremos que hay otras técnicas para poder modificar y ampliar las
características de presentación de los datos contenidos en documentos XML, vamos a ver ahora
como las hojas de estilo en general sirven para mejorar la expresividad de los datos ya que se
pueden utilizar para establecer la mayoría de las características visuales, por ejemplo, los colores, la
visualización en bloques, el tamaño de la fuente, etc. de forma que podremos usar nuestros
documentos XML en el navegador como si se tratase de una página HTML.
Curso 2012/2013
1
LENGUAJES DE MARCAS
Tema 6
No obstante, no debemos olvidar que aunque CSS2 sirven tanto para HTML como para XML,
debido a que ya fue desarrollado teniendo en cuenta estas especificaciones, su desarrollo actual en
XML esta menos comprobado y documentado que en HTML cosa que nos obliga a extremar la
comprobación en los distintos navegadores del uso que de esta técnica podamos hacer.
2. - Diferencias fundamentales con la aplicación de CSS en HTML
Resaltamos tres características diferenciadoras que se deben tener en cuenta cuando pasamos a
utilizar las hojas de estilo en el ámbito de XML después de haberlas manejado en el contexto de
HTML:
•
La principal diferencia en este contexto (la de presentación de los datos en un navegador)
que hemos de tener en cuenta es que en HTML las etiquetas están limitadas, tienen una
función definida y conocida, y por lo tanto los navegadores ya tiene una hoja de estilo por
defecto para establecer el estilo inicial de todos los elementos HTML cuando la página no
incluye ninguna hoja de estilos propia. Por ejemplo, cuando el navegador se encuentre la
etiqueta <h1> además de entender que se trata de un encabezamiento de mayor importancia,
si sus características no han sido modificadas
mediante estilos incorporados,
probablemente visualizará el texto en times new roman con un tamaño de 24 puntos. Otra
cosa es que los distintos navegadores se pongan de acuerdo para hacerlo de forma
homogénea.
Pero en los documentos XML las etiquetas que podemos definir son infinitas y los
navegadores no tienen ninguna información para su presentación, por lo que dependerá
exclusivamente de la información añadida que nosotros incorporemos.
•
Por otra parte, los atributos style y class, así como los elementos <style> o <link> no pueden
usarse en XML ya que no tienen el significado que interpreta el navegador cuando son
utilizados en documentos html.
Como veremos en el apartado siguiente, la forma habitual de incorporar la hoja de estilos a
nuestro documento XML será mediante la instrucción de procesamiento
<?xml-stylesheet type=”text/css” href=”url_hoja_estilo” ?>.
Curso 2012/2013
2
LENGUAJES DE MARCAS
Tema 6
aunque como comentaremos al final del tema también podremos hacer algún truco para
poder incorporar los estilos
en el propio documento, acción por otra parte no muy
aconsejable.
•
Este sistema de utilización de CSS en XML para presentar la información solo es
aconsejable para su visualización si el contenido del documento está formado por texto y los
datos se organizan y presentan de forma sencilla y secuencial, mostrando la totalidad de la
información. Para presentaciones más sofisticadas veremos en los próximos temas otras
soluciones, entre las que figura la posibilidad de transformar un documento XML en otro
HTML.
3. - Como incluir la hoja de estilos externa en el documento XML
Ya hemos avanzado en el punto anterior que la forma habitual de incorporar la hoja de estilos a
nuestro documento XML será la llamada externa mediante la instrucción de procesamiento
<?xml-stylesheet type=”text/css” href=”url_hoja_estilo” ?>.
Recordemos que una instrucción de procesamiento está pensada para proporcionar información a
las aplicaciones pero no forma parte del documento. Ya hemos utilizado esta instrucción para crear
el prólogo de los documentos XML, que habitualmente comenzaban por:
<?xml version="1.0" encoding="ISO-8859-1" ?>
La llamada a la hoja de estilo estará situada necesariamente entre este prólogo y el elemento raíz del
documento. Por ejemplo:
En este caso la llamada podría estar situada antes o después de <!DOCTYPE …pero siempre
después de <?xml... y antes de <BIBLIOTECA>
Esta sintaxis es muy similar a la etiqueta link de HTML, con los atributos:
•
•
type =“text/css” que indica que el documento es una hoja de estilos.
href=”url_hoja_estilo” que contiene la dirección absoluta o relativa donde se encuentra el
fichero de estilos
Curso 2012/2013
3
LENGUAJES DE MARCAS
Tema 6
4. - Un ejemplo sencillo
Vamos a utilizar un ejemplo muy simple sobre películas en documento XML para ver de forma
sencilla la transformación que puede aplicarse en la visualización de la información que contiene
dentro del navegador.
Una simplificación de ese caso podría ser el siguiente documento XML ya validado:
Si lo visualizamos en el navegador obtenemos la conocida vista:
Si ahora le incluimos la instrucción de procesamiento correspondiente:
y creamos una sencilla hoja de estilos peliculas_css_1.css con el contenido simple:
Curso 2012/2013
4
LENGUAJES DE MARCAS
Tema 6
Al visualizarlo en el navegador nos queda:
Comprobamos que nos ha hecho caso en todas las especificaciones que hemos realizado en nuestra
hoja de estilos, aunque el contenido sale siempre en la misma línea.
Este detalle tendrá que tenerse siempre en cuenta ya que una de las diferencias principales entre
HTML y XML es que no están definidos los elementos como de bloque o de línea.
Por defecto en XML todos los elementos serán en línea, y para que tenga las características de
elementos en bloque tendremos que trasformarlo explicitamente con la propiedad display que ya
conocemos del tema anterior. Aunque pongamos la propiedad en el elemento raíz esta no se hereda,
como vemos ya incorporada en el
elemento filmoteca que es el elemento raíz de nuestro
documento:
y que incluso después de incorporar más películas en nuestro fichero XML, siguen apareciendo
todos los elementos en línea:
Curso 2012/2013
5
LENGUAJES DE MARCAS
Tema 6
Para comenzar a solucionarlo incorporamos la regla correspondiente al elemento pelicula con la
propiedad display:
y ya obtenemos algo más legible:
No obstante, para poder visualizar cada elemento separadamente tendremos que incluir la propiedad
display en cada uno ellos:
Añadimos también alguna otra propiedad:
y nos quedará:
Bien, aunque el resultado no sea muy artístico nos ha servido de guía elemental para iniciar la
aplicación de CSS en XML. En el apartado siguiente comentaremos algunas otras características y
aplicaciones útiles.
Curso 2012/2013
6
LENGUAJES DE MARCAS
Tema 6
5. - Aplicando estilos en XML
Como ya hemos comentado en la introducción, CSS2 fue desarrollado ya pensando en XML por lo
que sus normas pueden ser aplicadas igual que en HTML, tal y como se indica en la introducción
de su especificación:
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.el consorcio CW3......
No obstante, no debemos olvidar que aunque .CSS2 sirven tanto para HTML como para XML,en la
práctica nos encontraremos . que muchas características de los estándares no funcionan o funcionan
en un navegador y no en otro (aunque esto último también hemos visto que ocurría en la aplicación
sobre HTML).
Ya que estas técnicas están mucho menos comprobadas y documentadas para XML que para HTML
tendremos que ser muy estrictos en la comprobación de su correcta implementación.
Vamos a ver ahora algunos casos, ya conocidos por su aplicación en HTML, pero que pueden ser
interesantes en el ámbito de XML. Se recuerda que todas las comprobaciones están hechas bajo el
navegador Firefox, y que su funcionamiento no está garantizado en otros.
a) Ocultar elementos en la visualización.
Como la presentación de la información de un documento XML se realiza de forma
secuencial mostrando siempre la totalidad de la información, cabe recordar el uso de la
propiedad display para omitir un determinado elemento
Si queremos que solo aparezca el título y el Obtenemos:
director:
Curso 2012/2013
7
LENGUAJES DE MARCAS
Tema 6
Pero en ese caso sabemos que quedará el
También
podemos
utilizar
la
propiedad
hueco correspondiente a esa información:
visibility :
b) Poner etiquetas a la información:
Dado que nuestros documentos XML tienen un perfil muy marcado como contenedores de datos
(por eso nos recuerdan tan a menudo las bases de datos) parece muy interesante incluir en su
visualización información referente a la naturaleza del dato que presentamos. Podemos incluir
etiquetas delante de cada elemento haciendo uso de las pseudo-clases de CSS.
Veamoslo en nuestro ejemplo, aplicado al elemento Título:
Añadimos en nuestra hoja de estilos:
Obtenemos:
De la misma forma, podrían tener su correspondiente etiqueta el resto de elementos.
Curso 2012/2013
8
LENGUAJES DE MARCAS
Tema 6
c) Atributos de XML en CSS
En nuestros documentos XML hemos utilizado en alguna ocasión la información incluida en
atributos en lugar de ocupar un elemento, pero esta información no es transmitida al navegador de
forma directa para su visualización.
Podemos hacer uso del selector de atributos de CSS para combinarlo con las pseudo-clases y así
subsanar este problema.
Vamos a añadir el elemento reparto en nuestro documento:
<reparto>
<interprete papel="protagonista">Jonathan Pryce</interprete>
<interprete papel="protagonista">Robert De Niro</interprete>
<interprete papel="secundario">Michaelk Palin</interprete>
<interprete>Bob Hoskins</interprete>
</reparto>
Una vez modificado el correspondiente DTD para poder validarlo (notar que debe permitir el
atributo como optativo, ya que en algún caso no se especifica):
Curso 2012/2013
9
LENGUAJES DE MARCAS
Tema 6
Añadimos en el documento CSS las siguientes Que tendrán el efecto:
reglas:
d) Presentación por medio de tablas
Ya sabemos que las tablas se encuentran en la frontera entre el contenido y la presentación de los
elementos, especialmente teniendo en cuenta el mal uso que se ha hecho de esta herramienta dentro
de HTML. Pero en realidad debería de ser un elemento de presentación y particularmente adecuado
en el caso de los posibles datos que contienen los documentos XML.
Mediante el valor “table” de la propiedad display podemos aprovechar para formatear nuestros
documentos. Si volvemos a nuestro documento sencillo inicial con las tres películas incorporadas y
redactamos un documento CSS como el siguiente:
Curso 2012/2013
10
LENGUAJES DE MARCAS
Tema 6
podemos obtener la siguiente visualización de los datos:
6) Incluir la hoja de estilo en el documento
Ya hemos visto en el punto 3 que la forma normal, aconsejable y prevista de incluir los estilos en
los documentos XML es mediante su creación en un documento CSS externo y enlazarlo mediante
la instrucción de procesamiento
<?xml-stylesheet type=”text/css” href=”url_hoja_estilo” ?>.
No obstante, puede ser útil disponer de un mecanismo para excepcionalmente poder trabajar con
los estilos dentro del propio documento. El problema, como hemos comentado anteriormente, es
que en XML no tiene sentido la etiqueta <STYLE> ya que carece de significado y se entendería
como una etiqueta de elemento más, diseñada por nosotros.
Curso 2012/2013
11
LENGUAJES DE MARCAS
Tema 6
Pero podemos hacer un pequeño truco basado en la utilización de la propiedad y valor display:none
y haciendo referencia a la llamada al estilo mediante el símbolo #
Lo vemos como ejemplo en el caso más sencillo que hemos utilizado anteriormente. Los pasos han
sido:
1. Incorporar las definiciones de estilo en <st> como un elemento más dentro del elemento
raíz <filmoteca>
2. Incorporar el atributo id=”miestilo” en este nuevo elemento.
3. Aplicar la propiedad display:none al elemento <st> para ocultar la visualización del código
que contiene.
4. Sustituir la URL de la hoja de estilo externa por la referencia a “#miestilo”
Este sería el contenido del documento XML compacto incluyendo internamente la definición de los
estilos:
Curso 2012/2013
12
LENGUAJES DE MARCAS
Tema 6
7) Otras posibilidades de presentaciones de documentos XML: de CSS
a XSL
En el punto 1 hemos comentado que en los próximos temas veremos que hay otras técnicas para
poder modificar y ampliar las características de presentación de los
datos contenidos en
documentos XML. En concreto la alternativa la presenta la tecnología XSL y más concretamente el
lenguaje de transformación XSLT.
Curso 2012/2013
13
LENGUAJES DE MARCAS
Tema 6
Podríamos preguntarnos la necesidad de un nuevo método de presentación si ya disponemos de
CSS, pero como ya hemos dicho antes este sistema solo es aconsejable para su visualización si el
contenido del documento está formado mayoritariamente por texto y los datos se organizan y
presentan de forma sencilla y secuencial, mostrando la totalidad de la información.
Con la aplicación de XSL no solamente podremos organizar la presentación de forma sencilla y
organizada
sino que también nos servirá para filtrar los datos basándonos en condiciones
prefijadas, de forma similar a la utilización de un lenguaje de programación. Pero eso ya lo veremos
en un tema próximo...
Curso 2012/2013
14
Descargar