CSS 2 Para XML


Autor: F. Javier García Castellano
Web: http://decsai.ugr.es/~fjgc, Mail: fjgc@decsai.ugr.es
CSS1InicioEnlaces

(C) GeNeura Team
Web: http://geneura.ugr.es, Mail: tutti@geneura.ugr.es

1.- CSS 2 para XML

La especificación de CSS2 fue publicada en W3C en 1998 tanto para HTML como para XML, aunque es con XML donde toma la potencia real que tiene.

CSS2 incorpora herramientas para los desarrolladores WEB y para los diseñadores y no sólo añade funcionabilidad sino que también redefine algunas de las ya especificadas en CSS1. Estas nuevas características permiten al usuario selecionar y formatear elementos de forma precisa.

Se han añadido pseudoClases, y pseudoElementos que permiten dar formato a objetos seleccionados, objetos apuntados, etc. Se han añadido los tipos de medios. Esta nueva característica permite crear formatos diferentes dependiendo del tipo de médio que se vaya a utilizar para mostrarlo, video, TV, impresoras, etc. Se añade la base para manejar otros lenguajes como el Chino y el Árabe.

2.- Nuevos Selectores

Utilizando CSS2 se pueden seleccionar elementos basandose en un patron. El navegador busca ese patrón y despues aplica las reglas especificadas para él.

En la siguiente tabla se resumen todos los selectores y su forma de trabajar.

PatrónSignificado
*Selector universal.
ESelector de elementos del tipo E.
E FSelector del elemento del tipo F descendiente de un elemento del tipo E.
E > FSelectiona cualquier elemento F hijo del elemento E.
E:first-childSelecciona todos los elementos E que son el primer hijo del elemento padre de que se trate.
E:activeSelecciona todos los elementos E que están seleccionados.
E:hoverSeleciona los elementos E apuntados por el ratón.
E:lang(c) Selecciona los elementos E que están diseñados para utilizar el lenguaje c utilizando el atributo xml:lang.
E + FSelecciona todos los elementos F cuyo inmediato hermano es un elemento E.
E[atributo]Selecciona todos los elementos E con el atributo especificado.
E[atributo="mi_valor"]Selecciona todos los elementos E con el atributo especificado e inicializado a mi_valor.
E[atributo~="mi_valor"]Selecciona todos los elementos E con el atributo inicializado a una lista de valores entre el que se incluye mi_valor
E[lang|="codigo"]Selector de todos los elementos E con codigo asignado al atributo lang.
E#mi_IDSelecciona cualquier elemento E con el atributo ID igual a mi_ID.
  1. Selector Universal: Sirve para especificar propiedades comunes a todos los elementos. También se puede combinar con pseudo-clases para asignar propiedades a elementos con un determinado atributo.

    Por ejemplo:

    	  *:before{content:"_________"} 

    Muestra una raya delante de cada elemento.

  2. Selectores de descendientes: Es posible seleccionar elementos descendientes o hijos de un elemento determinado. Supongamos un poema que está dividido en estrofas y estas en versos. Con el selector
    	  POEMA * VERSO

    Este selector representa todos los versos que son nietos de un poema. Con el selector

    	  ESTROFA > VERSO

    Se seleccionan los versos que son hijos directos de una estrofa.

    Todo esto se puede combinar realizando por ejemplo la siguiente seleccion:

    	  POEMA ESTROFA > VERSO:first-letter

    Selecciona la primera letra de todos los versos dentro de una estrofa y a su vez hijas de un poema.

  3. Selectores de hermanos: Este selector utiliza el símbolo +.

    Por ejemplo:

    	  ESTROFA + NOTAS

    Selecciona el elemento NOTAS que existe justo detras de un elemento ESTROFA.

  4. Selectores por Atributos: Un selector por atributos especifica un atributo o valor de éste para seleccionar elementos.

    Por ejemplo:

    	  ESTROFA[NUMERO="2"]

    Selecciona el elemento ESTROFA que tiene el valor 2 en el atributo NUMERO.

  5. Selectores @rules
  6. Pseudo-Elementos Existen dos pseudo-elementos :before y :after que seleccionan el elemento anterior y posterior al elemento que se aplican.
              ESTROFA:after {content: "________"}
    

    En este ejemplo se indica que despues de cada estrofa, se debe colocar "________". Si en vez de un texto se desea indicar algún símbolo se pueden utilizar estas dos opciones:

  7. Pseudo-Clases Este tipo de selectores basa su operación en la posición del ratón, en el foco de los elementos, etc. La aplicación de estas pseudo-clases es en algunos casos autoexcluyente. En el caso de que existiera algún conflicto el orden de aplicación de reglas en cascada lo resuelve.

EJERCICIO 9:
Formatear el fichero XML de ejemplo para que aparezca la primera letra de los contenidos de varias etiquetas, de diferente tamaño.

3.- Formateo de páginas

Se indican mediante @page y se aplican a una página no a un elemento individual de XML. CSS2 asume que las páginas son rectángulares. Las propiedades disponibles son:

  1. size: Especifica el alto y ancho de una página y se puede especificar mediante una o dos longitudes absolutas o mediante las palabras clave auto, portrait, landscape y inherit.
  2. margin: Especifica el margen de la página. mediante uno, dos, tres o cuatro longitudes absolutas.
  3. mark: Sirve para situar marcas en la página. La propiedad puede tomar cuatro valores crop, cross, inherit y none.
  4. page: Esta propiedad es utilizada con cualquier elemento diferente de @page. Y sirve para asignar propiedades a la página de un elemento. Los valores que puede tomar page son identificados mediante reglas @page.

    Por ejemplo:

              @page narrow  {size: 9cm 18cm}
              @page rotated {size: landscape}
              POEMA {page: narrow}
              ESTROFA {page: rotated}
    
  5. page-break-before, page-break-after, page-break-inside: Inserta un salto de página antes, despues o en el medio del elemento que la define. Se aplica a cualquier elemento diferente de @page.Cuando alguna de estas propiedades se inicializa a auto nunca se fuerza un salto de página. Los valores que puede tomar son always y avoid que fuerzan o impiden un salto.

4.- Formateo Visual

4.1.- Display

CSS2 añade nuevas formas de la propiedad display que son:

Por ejemplo:

           POESIA {display: table}
           ESTROFA{display:table-row}
           VERSO{display:table-cell}

Este ejemplo alinea todos los versos en celdas. El resultado es una tabla de tres columnas, puesto que en cada estrofa existen tres versos.

EJERCICIO 10:
Realiza los cambios necesarios para que aparezcan los versos en una tabla.

4.2.- Height y Width

Estas dos propiedades permiten fijar el tamaño de la caja que contiene a cada elemento. El tamaño por defecto de una caja de un elemento se calcula según su contenido, pero este calculo se puede modificar mediante seis propiedades:

EJERCICIO 11:
Comprobar cual es la implementación de estas propiedades en nuestro navegador.

4.3.- Overflow

Cuando el tamaño de la caja asignado es menor que el necesario, entonces esta propiedad permite especificar qué hacer con la parte no visible. Las posibilidades son:

EJERCICIO 12:
Mostrar cada estrofa en una ventana independiente con barras de scroll.

4.4.- Clip

Indica qué porción del texto debe mostrarse cuando existe un overflow. la forma de indicarlo es mediante la función rect(top, bottom, left, right).

Ejemplo de utilización:

           VERSO {height: 80px; width: 150px; overflow:auto; clip: rect(5px,5px,5px,5px) }

Nota: Esta propiedad sólo funciona en el IExplorer 5.0.

4.5.- Visibility

La visibilidad de un elemento puede ser visible, hidden, collapse ( Lo mismo que hidden en algunos elementos pero es diferente en tablas por ejemplo ), y inherit.

EJERCICIO 13:
Explica la diferencia entre hidden y poner la propiedad display con none.

4.6.- Cursor

Se trata de la propiedad que especifica el cursor del ratón cuando el elemento es apuntado por éste. Los posibles valores son:

Nota: Esta propiedad sólo funciona en el IExplorer 5.0.

4.7.- Colores

CSS2 Añade una nueva forma de asignar colores y es utilizando los mismos colores que el entorno esté utilizando. Algunas de las posibilidades son:

ColorDescripción
ActiveBorder Borde de una ventana activa
Background Color de fondo del escritorio
ButtonHighlight Boton seleccionado
ButtonShadow Sombra de los botones
ButtonText Color del texto de los botones
Highlight Elementos seleccionados
HighlightText Texto seleccionado
InactiveBorder Borde inactivo
InactiveCaption Color de un título inactivo
InactiveCaptionText Color del texto de un título inactivo
InfoBackground Color de fondo de la ayuda
InfoText Color del texto de la ayuda
Menu Menu
MenuText Texto del menú
Scrollbar Barra de scroll
ThreeDDarkShadow Sombra oscura en 3D
ThreeDFace Cara principal en 3D
ThreeDHighlight Cara de iluminación en 3D
ThreeDLightShadow Sombra clara 3D
ThreeDShadow Sombra 3D
Window Ventana
WindowFrame Frame de la ventana
WindowText Texto de la ventana

4.8.- Fuentes

CSS2 aporta una serie de propiedades nuevas para las fuentes que son:

  1. font-size-adjust: La facilidad para entender una fuente depende de su parámetro x-height. Esta propiedad preserva el valor de este parámetro ante posibles desajustes. Admite valores como ".58". Es otra forma de espresar el tamaño de una fuente pero mediante el parámetro x-height.
  2. font-stretch: Especifica el espacio entre caracteres. Los posibles valores que puede tomar son:

    Nota: Esta propiedad no funciona en Mozilla.

4.9.- text-shadow

Especifica el color y tamaño de la sombra de un texto. El formato es: text-shadow: color distancia-h-texto, distancia-v-texto

VERSO {text-shadow: red -5pt  -5pt}

Nota: No está disponible en Mozilla.

4.10.- Vertical-align

Especifica el desplazamiento del texto respecto a la base de la línea. Puede tomar los valores baseline, sub, super, top, middle, bottom, text-top y text-bottom.

5.- Formateo de Cajas

CSS2 añade opciones que nos permiten situar una caja en un aposición concreta, dentro de otra caja o en una ventana.

Para ello se utilizan las propiedades de posicionamiento y las propiedades outline.

5.1.- Propiedades Outline

La diferencia entre este tipo de línea y un borde es que el borde se añade al ancho de la caja mientras que una línea de este tipo no.

  1. outline-style: Es análoga a border-style y toma los mismos valores.
  2. outline-width: Indica el grosor de la línea y puede tomar thin, medium y thick.
  3. outline-color: Igual que cualquier color
  4. outline: Resume las tres anteriores. tomando los datos en el orden ancho, estilo y color

Nota: No está disponible en Mozilla.

5.2.- Propiedades de posicionamiento

Este conjunto de propiedades manejan la posición de una caja. El nombre de la propiedad es position y los valores que puede tomar son:

EJERCICIO 14:
Muestra el fichero sonatinaFormateo.xml y formatea tu fichero de ejemplo de forma parecida.

EJERCICIO 15:
Haz un segundo CSS para tu fichero de ejemplo. (que no se parezca en nada al primero)

Un fichero CSS contiene una serie de reglas de estilo o, también llamadas, unidades css. Dichas unidades css se componen de un selector(normalmente el nombre de una etiqueta de nuestro documento XML) y una lista o cadena de estilos. Dicha lista consta de un conjunto de pares de elementos separados por el caracter ;  donde cada par, está formado por el nombre de una propiedad y un valor, separándose con el caracter :

Sintaxis:


            Selector {propiedad:valor; propiedad:valor; ... propiedad:valor}