Las hojas de estilo en cascada implica que cada elemento hijo contiene todos los elementos que están en un nivel superior al que está el propio elemento. Podemos entender que cuando se aplica un estilo a un elemento, este estilo afecta a todos los elementos que estén dentro de este elemento, a todos los elementos hijos de ese elemento al que se le ha aplicado el estilo.
La diferencia entre CSS en HTML y CSS en XML es tan pequeña que los mismos conceptos aplicados en hojas de estilo en HTML nos sirven para XML.
La primera diferencia que encontramos es que las etiquetas propias de HTML para asignar estilos y clases en XML no existen; para asignar estilos en XML debemos utilizar la instrucción de procesamiento <?xml-stylesheet ?>
La sintaxis completa de la instrucción xml-stylesheet sería:
<?xml-stylesheet type=nombretipo href=urlhojaestilo?> En realidad esta sintaxis se parece mucho al elemento LINK de HTML, en este caso type hace referencia a cualquier lenguaje de hoja de estilo que soporte el navegador, en general encontraremos “text/css” o “text/xsl”. Href hace referencia a la ubicación externa o referencia de la hoja de estilo CSS que se desea utilizar.
Veamos un ejemplo:
<?xml-stylesheet type=”text/css” href=“nota1.css”?> <!-- Nota1.xml -->
<documento>
<body>
advertencia>Esto es una advertencia</advertencia> En caso contrario
consejo>Esto es un consejo</consejo> ,mientras que < recurso >esto es un recurso</ recurso > </body>
</documento>
Como vemos, este documento nota1.xml hace referencia hace referencia a una hoja de estilo CSS llamada nota1.css, el cual podría contener:
consejo margin-left:.5in;width:250px;border:solid 3px black;position:relative; background-color:yellow } recurso margin-left:.5in;width:250px;border:solid 3px black;position:relative; background-color:green } advertencia margin-left:.5in;width:250px;border:solid 3px black;position:relative; background-color:red}
Como vemos, esta hoja de estilo CSS para XML es casi idéntica a las hojas de estilo CSS para HTML y sencillamente lo que se hace es asignar unos determinados parámetros de visualización a cada una de las etiquetas del documento XML.
Hasta ahora hemos visto como podíamos utilizar hojas de estilo externas al documento XML mediante el atributo href de la instrucción xml-stylesheet. Este tipo de hojas de estilo son muy prácticas para mantener el mismo estilo en varios documentos XML; pero habrá algunas veces en que resulta más útil trabajar con estilos dentro de los documentos XML.
Ya se ha comentado que la etiqueta <STYLE> que utilizaríamos en HTML en XML no tiene ningún significado específico, por lo tanto para incluir reglas de hojas de estilo en un elemento dentro del mismo documento deberemos aplicar la siguiente solución: mediante un identificador
determinado incluiremos las reglas de hoja de estilo a un elemento y referenciaremos a la hoja de estilo mediante el identificador de la instrucción xml-stylesheet
Veamos un ejemplo:
<?xml-stylesheet type=”text/css” href = “#miEstilo”?> <documento> <st id=”miEstilo”> title {font-size:24pt;display:block;} p {font-size:11pt; display:block;} p:first-letter {float:left;font-size:36pt;} st {display:none;} b {font-weight:bold;} </st>
<title>Hojas de estilo CSS dentro de los documentos XML</title>
<p>Se utiliza el signo # para indicar que se hace referencia a una <b>hoja de estilo</b> dentro del documento</p>
</documento>
En este caso la hoja de estilo está contenida en el nodo <st> pero está referenciada mediante su identificador miEstilo. El modo de funcionamiento del símbolo # en la declaración xml- stylesheet es similar a los enlaces o hipervínculos relativos a una página en HTML.
5 Definición de tipo de documento. Los DTD’s
Lo primero que debemos saber es que hay dos tipos de documentos XML: válidos y bien formados. Éste es uno de los aspectos más importantes de este lenguaje, así que hace falta entender bien la diferencia:
• Bien formados: son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintácticas que después se van a explicar, sin estar sujetos a unos elementos fijados en un DTD. De hecho los documentos XML deben tener una estructura jerárquica muy estricta, de la que se hablará más tarde, y los documentos bien formados deben cumplirla.
• Válidos: Además de estar bien formados, siguen una estructura y una semántica determinada por un DTD: sus elementos y sobre todo la estructura jerárquica que define el DTD, además de los atributos, deben ajustarse a lo que el DTD dictamine
El DTD (definición del tipo de documento, Document Type Definition) proporciona la gramática para una clase de documentos XML. Esta gramática contiene la definición del conjunto de etiquetas que puede contener esa clase de documentos XML, los nombres que pueden utilizarse en los elementos, dónde pueden aparecer y cómo se interrelacionan entre ellos. Se puede decir que un DTD es una definición exacta de la gramática de un documento. Estas normas o gramática se expresan mediante una notación llamada declaración de marcaje La declaración de marcaje es una notación descrita en la especificación XML (de W3C) siendo una manera de expresar un conjunto de reglas gramaticales que permiten indicar:
• Los elementos y atributos válidos dentro de un documento XML • Los elementos que se pueden utilizar dentro de otros elementos • Los elementos y los atributos opcionales
Los documentos XML enviados con un DTD se reconocen como "XML válido". En este caso, un intérprete de XML podría comparar los datos entrantes con las normas definidas en el DTD para comprobar que los datos se han estructurado correctamente. Los datos enviados sin un
XML, que pueden ser internas (cuando van incluidas junto al código XML) o externas (si se encuentran en un documento propio).
Un ejemplo de un DTD que defina la estructura de un documento XML relacionado con libros, podría ser un documento conteniendo el siguiente código:
<!ELEMENT LIBROS (LIBRO)+>
<!ELEMENT LIBRO (TITULO, AUTOR, PRECIO)> <!ELEMENT TITULO (#PCDATA)>
<!ELEMENT AUTOR (#PCDATA)> <!ELEMENT PRECIO (#PCDATA)>
En el DTD del ejemplo se definen los elementos (!ELEMENT) que integran el documento XML. En la primera línea se indica que el elemento principal es LIBROS, del que dependen uno o más (+) elementos LIBRO. La segunda línea sirve para especificar que el elemento LIBRO contiene tres elementos (TITULO, AUTOR, PRECIO) que se deben marcar en dicho orden. Las restantes líneas aclaran que los elementos TITULO, AUTOR y PRECIO contienen valores de cadenas de texto, como ya habíamos comentado PCDATA’s
Como síntesis de lo descrito podemos decir:
• Crear un DTD (Definición de tipo de Documento), es como crear nuestro propio lenguaje de validación para una aplicación específica
• DTD es también un archivo de texto • DTD contiene
o Tipos de elementos o Atributos
o Entidades
o Restricciones de combinación y valores que contendrá el XML • Solo lo que se contiene es válido
• Un DTD puede residir en un archivo externo (quizá compartido por varios documentos XML), o bien puede estar contenido en el propio documento XML
• Los documentos que se ajustan a su DTD se denominan Válidos.
• Una vez bajado un documento XML, el procesador sintáctico (Aplicación o navegador), puede aplicar un DTD para conocer si cumple con las normas establecidas
• No confundir ‘bien formado’ con ‘válido’
o Bien formado es que respeta la sintaxis de XML o Válido es que respeta las reglas del DTD
Figura 1.8. Esquema de un documento XML válido
• Un documento XML puede ser válido y bien formado a la vez • El DTD es opcional
• No se puede decir que el documento es válido si no se utilizan DTD’s (pero tampoco que sea no válido)
• ¿Que ventajas tiene?
o Pueden ser publicados o compartidos por varias empresas para definir ‘sus estándares’, pudiéndose generar de esta forma, un estándar de validaciones o Un programa emite un XML, y otro lo consume, pero validando que cumpla
con el contrato establecido
o Muchas empresas están publicando estándares de validación, los cuales pueden ser reutilizados
• Si bien pueden residir en el mismo documento, es posible su enlace externo para su reutilización
<?xml version=“1.0”?>
<!DOCTYPE persona SYSTEM http://www.lapiedra.com/persona.dtd>