HML Y XSL

Embed Size (px)

Citation preview

Extensible Markup LanguageExtensible Markup Language (XML)

Desarrollador World Wide Web Consortium Informacin general Extensin de archivo Tipo de MIME Tipo de formato Estndar(es).xml application/xml, text/xml

Lenguaje de marcado 1.0 (Fourth Edition) 1.1 (Second Edition)

Formato abierto ? XML, siglas en ingls de eXtensible Markup Language ('lenguaje de marcas extensible'), es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una simplificacin y adaptacin del SGML y permite definir la gramtica de lenguajes especficos (de la misma manera que HTML es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades, de ah que se le denomine metalenguaje.1 Algunos de estos lenguajes que usan XML para su definicin son XHTML, SVG, MathML. XML no ha nacido slo para su aplicacin en Internet, sino que se propone como un estndar para el intercambio de informacin estructurada entre diferentes plataformas. Se

puede usar en bases de datos, editores de texto, hojas de clculo y casi cualquier cosa imaginable. XML es una tecnologa sencilla que tiene a su alrededor otras que la complementan y la hacen mucho ms grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la informacin de una manera segura, fiable y fcil.

Contenido

1 Historia 2 Crticas 3 Ventajas del XML 4 Estructura de un documento XML o 4.1 Documentos XML bien formados y control de errores o 4.2 Partes de un documento XML 4.2.1 Prlogo 4.2.2 Cuerpo o 4.3 Elementos o 4.4 Atributos o 4.5 Entidades predefinidas o 4.6 Secciones CDATA o 4.7 Comentarios 5 Validez o 5.1 Document Type Definition 5.1.1 Declaraciones tipo elemento 5.1.2 Modelos de contenido 5.1.3 Declaraciones de lista de atributos 5.1.4 Tipos de atributos 5.1.5 Declaracin de entidades 5.1.6 Espacios de nombres o 5.2 XML Schemas (XSD) 5.2.1 Ventajas de los Schemas frente a los DTD 6 Herramientas para trabajar con documentos XML 7 Lenguajes creados usando XML o 7.1 Extensible Stylesheet Language (XSL) o 7.2 Lenguaje de enlace XML (XLINK) o 7.3 Otras tecnologas 8 Vase tambin 9 Enlaces externos 10 Referencias

Historia

XML proviene de un lenguaje inventado por IBM en los aos setenta, llamado GML (Generalized Markup Language), que surgi por la necesidad que tena la empresa de almacenar grandes cantidades de informacin. Este lenguaje gust a la ISO, por lo que en 1986 trabajaron para normalizarlo, creando SGML (Standard Generalized Markup Language), capaz de adaptarse a un gran abanico de problemas. A partir de l se han creado otros sistemas para almacenar informacin.2 En el ao 1989 Tim Berners Lee cre la web, y junto con ella el lenguaje HTML. Este lenguaje se defini en el marco de SGML y fue de lejos la aplicacin ms conocida de este estndar. Los navegadores web sin embargo siempre han puesto pocas exigencias al cdigo HTML que interpretan y as las pginas web son caticas y no cumplen con la sintaxis. Estas pginas web dependen fuertemente de una forma especfica de lidiar con los errores y las ambigedades, lo que hace a las pginas ms frgiles y a los navegadores ms complejos. Otra limitacin del HTML es que cada documento pertenece a un vocabulario fijo, establecido por el DTD. No se pueden combinar elementos de diferentes vocabularios. Asimismo es imposible para un intrprete (por ejemplo un navegador) analizar el documento sin tener conocimiento de su gramtica (del DTD). Por ejemplo, el navegador sabe que antes de una etiqueta debe haberse cerrado cualquier previamente abierto. Los navegadores resolvieron esto incluyendo lgica ad hoc para el HTML, en vez de incluir un analizador genrico. Ambas opciones, de todos modos, son muy complejas para los navegadores. Se busc entonces definir un subconjunto del SGML que permita:

Mezclar elementos de diferentes lenguajes. Es decir que los lenguajes sean extensibles. La creacin de analizadores simples, sin ninguna lgica especial para cada lenguaje. Empezar de cero y hacer hincapi en que no se acepte nunca un documento con errores de sintaxis.

Para hacer esto XML deja de lado muchas caractersticas de SGML que estaban pensadas para facilitar la escritura manual de documentos. XML en cambio est orientado a hacer las cosas ms sencillas para los programas automticos que necesiten interpretar el documento.

CrticasXML y sus extensiones han sido regularmente criticadas por su nivel de detalle y complejidad.3 El mapeo del modelo de rbol bsico de XML hacia los sistema de tipos de lenguajes de programacin o bases de datos puede ser difcil, especialmente cuando se utiliza XML para el intercambio de datos altamente estructurados entre aplicaciones, lo que no era su objetivo primario de diseo. Otras crticas intentan refutar la afirmacin de que XML es una lenguaje autodescriptivo4 (aunque la especificacin XML no hace ninguna afirmacin de este tipo). Se propone a JSON y YAML frecuentemente como alternativas,

centrndose ambas en la representacin de datos estructurados, en lugar de en documentos narrativos .

Ventajas del XML

Es extensible: Despus de diseado y puesto en produccin, es posible extender XML con la adicin de nuevas etiquetas, de modo que se pueda continuar utilizando sin complicacin alguna. El analizador es un componente estndar, no es necesario crear un analizador especfico para cada versin de lenguaje XML. Esto posibilita el empleo de cualquiera de los analizadores disponibles. De esta manera se evitan bugs y se acelera el desarrollo de aplicaciones. Si un tercero decide usar un documento creado en XML, es sencillo entender su estructura y procesarla. Mejora la compatibilidad entre aplicaciones. Podemos comunicar aplicaciones de distintas plataformas, sin que importe el origen de los datos, es decir, podramos tener una aplicacin en Linux con una base de datos Postgres y comunicarla con otra aplicacin en Windows y Base de Datos MS-SQL Server. Transformamos datos en informacin, pues se le aade un significado concreto y los asociamos a un contexto, con lo cual tenemos flexibilidad para estructurar documentos.

Estructura de un documento XMLLa tecnologa XML busca dar solucin al problema de expresar informacin estructurada de la manera ms abstracta y reutilizable posible. Que la informacin sea estructurada quiere decir que se compone de partes bien definidas, y que esas partes se componen a su vez de otras partes. Entonces se tiene un rbol de trozos de informacin. Ejemplos son un tema musical, que se compone de compases, que estn formados a su vez por notas. Estas partes se llaman elementos, y se las seala mediante etiquetas. Una etiqueta consiste en una marca hecha en el documento, que seala una porcin de ste como un elemento. Un pedazo de informacin con un sentido claro y definido. Las etiquetas tienen la forma , donde nombre es el nombre del elemento que se est sealando. A continuacin se muestra un ejemplo para entender la estructura de un documento XML: Nombre del remitente Correo del remitente

Nombre del destinatario Correo del destinatario Este es mi documento con una estructura muy sencilla no contiene atributos ni entidades... Este es mi documento con una estructura muy sencilla no contiene atributos ni entidades...

Aqu est el ejemplo de cdigo del DTD del documento Edit_Mensaje.dtd: Remitente (Nombre, Mail)> Nombre (#PCDATA)> Mail (#PCDATA)> Destinatario (Nombre, Mail)> Nombre (#PCDATA)> Mail (#PCDATA)> Texto (Asunto, Parrafo)> Asunto (#PCDATA)> Parrafo (#PCDATA)>

Documentos XML bien formados y control de erroresLos documentos denominados como bien formados (del ingls well formed) son aquellos que cumplen con todas las definiciones bsicas de formato y pueden, por lo tanto, analizarse correctamente por cualquier analizador sintctico (parser) que cumpla con la norma. Se separa esto del concepto de validez que se explica ms adelante.

Los documentos han de seguir una estructura estrictamente jerrquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente incluida en otra, es decir, las etiquetas deben estar correctamente anidadas. Los elementos con contenido deben estar correctamente cerrados. Los documentos XML slo permiten un elemento raz del que todos los dems sean parte, es decir, solo pueden tener un elemento inicial. Los valores atributos en XML siempre deben estar encerrados entre comillas simples o dobles. El XML es sensible a maysculas y minsculas. Existe un conjunto de caracteres llamados espacios en blanco (espacios, tabuladores, retornos de carro, saltos de lnea) que los procesadores XML tratan de forma diferente en el marcado XML.

Es necesario asignar nombres a las estructuras, tipos de elementos, entidades, elementos particulares, etc. En XML los nombres tienen alguna caracterstica en comn. Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan marcas; son partes del documento que el procesador XML espera entender. El resto del documento entre marcas son los datos entendibles por las personas.

Partes de un documento XMLUn documento XML est formado por el prlogo y por el cuerpo del documento as como texto de etiquetas que contiene una gran variedad de efectos positivos o negativos en la referencia opcional a la que se refiere el documento, hay que tener mucho cuidado de esa parte de la gramtica lxica para que se componga de manera uniforme. Prlogo Aunque no es obligatorio, los documentos XML pueden empezar con unas lneas que describen la versin XML, el tipo de documento y otras cosas. El prlogo de un documento XML contiene:

Una declaracin XML. Es la sentencia que declara al documento como un documento XML. Una declaracin de tipo de documento. Enlaza el documento con su DTD (definicin de tipo de documento), o el DTD puede estar incluido en la propia declaracin o ambas cosas al mismo tiempo. Uno o ms comentarios e instrucciones de procesamiento.

Cuerpo A diferencia del prlogo, el cuerpo no es opcional en un documento XML, el cuerpo debe contener solo un elemento raz, caracterstica indispensable tambin para que el documento est bien formado. Sin embargo es necesaria la adquisicin de datos para su buen funcionamiento.

ElementosLos elementos XML pueden tener contenido (ms elementos, caracteres o ambos), o bien ser elementos vacos.

AtributosLos elementos pueden tener atributos, que son una manera de incorporar caractersticas o propiedades a los elementos de un documento. Deben ir entre comillas.

Por ejemplo, un elemento estudiante puede tener un atributo Mario y un atributo tipo, con valores come croquetas y taleno respectivamente. Esto es un da que Mario va paseando

Entidades predefinidasEntidades para representar caracteres especiales para que, de esta forma, no sean interpretados como marcado en el procesador XML. Ejemplo: entidad predefinida: & carcter: &.

Secciones CDATAArtculo principal: Anexo:Etiquetas HTML/XHTML.

Es una construccin en XML para especificar datos utilizando cualquier carcter sin que se interprete como marcado XML. No confundir con 2(#PCDATA) que es para los elementos. Permite que caracteres especiales no rompan la estructura. Ejemplo:

ComentariosComentarios a modo informativo para el programador que han de ser ignorados por el procesador. Los comentarios en XML tienen el siguiente formato:

ValidezQue un documento est bien formado solamente se refiere a su estructura sintctica bsica, es decir, que se componga de elementos, atributos y comentarios como XML especifica que se escriban. Ahora bien, cada aplicacin de XML, es decir, cada lenguaje definido con esta tecnologa, necesitar especificar cul es exactamente la relacin que debe verificarse entre los distintos elementos presentes en el documento. Esta relacin entre elementos se especifica en un documento externo o definicin (expresada como DTD Document Type Definition, 'Definicin de Tipo de Documento' o como XSchema). Crear una definicin equivale a crear un nuevo lenguaje de marcado, para una aplicacin especfica.

Document Type Definition

La Document Type Definition o DTD (en espaol "definicin de tipo de documento") define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos. Los documentos XML que se ajustan a su DTD son denominados vlidos. Declaraciones tipo elemento Los elementos deben ajustarse a un tipo de documento declarado en una DTD para que el documento sea considerado como vlido. Modelos de contenido Un modelo de contenido es un patrn que establece los subelementos aceptados, y el orden en que se aceptan. Declaraciones de lista de atributos Los atributos se usan para aadir informacin adicional a los elementos de un documento. Tipos de atributos

Atributos CDATA y NMTOKEN Atributos enumerados y notaciones Atributos ID e IDREF

Declaracin de entidades XML hace referencia a objetos que no deben ser analizados sintcticamente segn las reglas XML, mediante el uso de entidades. Las entidades pueden ser:

Internas o externas Analizadas o no analizadas Generales o parametrizadas

Espacios de nombres Los espacios de nombres XML permiten separar semnticamente los elementos que forman un documento XML.

XML Schemas (XSD)Un Schema es algo similar a un DTD. Define qu elementos puede contener un documento XML, cmo estn organizados y qu atributos y de qu tipo pueden tener sus elementos. Ventajas de los Schemas frente a los DTD

Usan sintaxis de XML, al contrario que los DTD. Permiten especificar los tipos de datos. Son extensibles.

Herramientas para trabajar con documentos XMLDe hecho cualquier procesador de texto, que sea capaz de producir archivos .txt es capaz de generar XML, aunque en los entornos de desarrollo como Eclipse o Visual Studio, se facilita, ya que reconoce los formatos y ayuda a generar un XML bien formado.

Lenguajes creados usando XMLExtensible Stylesheet Language (XSL)El Lenguaje de Hoja de Estilo Extensible (eXtensible Stylesheet Language, XSL) es una familia de lenguajes que permiten describir como los archivos codificados en xml sern formateados (para mostrarlos) o transformados. Hay tres lenguajes en esta familia: XSL Transformations (XSLT), XSL Formatting Objects (XSL-FO)y XML Path Language.

Lenguaje de enlace XML (XLINK)XLink es una aplicacin XML que intenta superar las limitaciones que tienen los enlaces de hipertexto en HTML. XLink 1.1 es ya una recomendacin W3C.

Otras tecnologas

Hojas de estilo o XSL-FO o XSLT o XLink o XPointer o XSL o hojas de estilo en cascada (CSS) o XLT (XML representation of Lexicons and Terminologies) Programacin o JDOM o SAX o STAX o VTD-XML Consulta de datos o XQuery o Xpath Seguridad o Xades (XML Advanced Electronic Signatures)

Hay quien opina que XML es demasiado pesado para algunas aplicaciones y difcil de editar con un editor de texto simple. Por ello merece la pena mencionar algunas alternativas ms ligeras y simples. Los lenguajes de marcas ligeros:

Simple Outline XML: es un XML simplificado que se puede convertir sin problemas en XML completo. YAML y OGDL. Estos dos son ficheros de solo texto que no estn emparentados con XML como el SOX, antes comentado. BBCode. ste tiene un uso muy restringido para dar formato nada ms.

Tambin hay por lo menos un lenguaje basado en XML en formato binario, llamado EBML.

XSL o Extensible Stylesheet Language no se trata de un nico lenguaje, sino de toda una familia de recomendaciones del World Wide Web Consortium (http://www.w3.org/Style/XSL/) para expresar Hojas de estilo en lenguaje XML. El lenguaje XSL consta de tres partes:

XSL Transformations (XSLT): un lenguaje para transformar documentos XML(http://www.w3.org/TR/xslt y http://www.w3.org/TR/xslt20/)

XML Path Language (XPath), un lenguaje de expresin usado por XSLT para acceder o referirse a partes de un documento XML. (XPath se usa tambin en la especificacin X Link). ( http://www.w3.org/TR/xpath y http://www.w3.org/TR/xpath20/) XSL Formatting Objects (XSL-FO): un vocabulario XML para especificar formatos semnticos. http://www.w3.org/TR/xsl

Una hoja de estilo XSLT especifica la presentacin de una clase de documentos XML para describir cmo un evento de clase se transforma dentro de un documento XML que usa un vocabulario formateado tal como (X)HTML o XSL-FO. A pesar de la existencia de las CCS u Hojas de Estilo en Cascada que sirven para definir las presentaciones de los documentos en la Web, se ha creado otra forma especfica para las presentaciones en XML. Esto se debe a que las CCS u Hojas de Estilo en Cascada son eficaces para describir formatos y presentaciones, pero no sirven para decidir qu tipo de datos deben ser mostrados y cules no deben salir en la pantalla. CCS se utiliza con documentos XML en los casos en los que debe mostrarse todo su contenido. XLM no slo sirve para especificar cmo queremos presentar los datos de un documento XML, sino tambin para filtrar los datos de acuerdo con ciertas condiciones. XSL es ms complejo que las CCS y permite muchas ms funciones que las Hojas de Estilo, ya que se asimila ms a un lenguaje de programacin. Adems de la presentacin visual, XLS permite otras opciones como la ejecucin de bucles y sentencias, operaciones lgicas, ordenacin de datos, selecciones por comparacin, utilizacin de plantillas, etc. XSL o eXtensible Stylesheet Language define o implementa el lenguaje de estilo de los documentos escritos para XML. Desde 1997 varias empresas informticas como Arbortext, Microsoft e Inso se pusieron a trabajar en una propuesta de XSL (antes llamado "xml-style") que presentaron al W3C y cuyo fin era permitir modificar el aspecto de un documento. Con las Hojas de Estilo ya se podan lograr algunas mejoras en el aspecto del documento, pero XSL permite otras muchas aplicaciones como mltiples columnas, texto girado, orden de visualizacin de los datos de una tabla, mltiples tipos de letra con amplia variedad en los tamaos, etc. El lenguaje SGML tiene su propio estndar para la transformacin y representacin de sus documentos en forma de rbol, el DSSSL (Document Style Semantics and Specification Language, ISO10179), que en realidad es un lenguaje de programacin completo y muy potente basado en el dialecto Scheme del lenguaje LISP. Por tanto, ya que XML es una versin reducida de SGML pareca lgico hacer tambin una versin reducida del DSSSL, llamada en este caso XSL (Extended Stylesheet Language). El estndar XSL est basado en el lenguaje de semntica y especificacin de estilo de documento (DSSSL, Document Style Semantics and Specification Language) y, por otro lado, se considera ms potente que las hojas de estilo en cascada (CSS, Cascading Style Sheets), usado en un principio con el lenguaje HTML. Las CSS se usan para visualizar simples estructuras de documentos XML y hoy se ha conseguido una gran integracin en XML con el protocolo CSS2 (Cascading Style Sheets, level 2) ofreciendo nuevas formas de composicin y una ms rpida visualizacin), pero XSL es sumamente til cuando se requiere una mayor potencia de diseo en los documentos XML, sobre todo cuando stos encierran datos estructurados como tablas, organigramas, etc.

As pues, bsicamente, XSL es un lenguaje de hojas de estilos diseado para su utilizacin en la Web, que provee ms funcionalidades que las hojas de estilo en cascada (CSS o Cascade Stylesheet) y proporciona un representacin de forma independiente de la plataforma utilizada o del medio de representacin de la informacin recogida en los documentos XML. Dicha representacin se crea mediante la formacin de un rbol de objetos de flujo (flow objects tree). Un objeto de flujo tiene una clase, la cual representa una tarea o actividad de representacin. Asimismo, un objeto de flujo dispone de un conjunto de caractersticas, mediante las cuales se puede especificar mucho ms la representacin. La asociacin de elementos en el rbol origen con los objetos de flujo se lleva a cabo mediante las reglas de construccin, las cuales contienen un patrn para identificar elementos especficos en el rbol origen, y una accin para especificar un subrbol resultante de objetos de flujo. El procesador de hojas de estilo procesar de forma recursiva los elementos del origen para producir un completo rbol de objetos de flujo. Adems de las reglas de construccin, XSL tambin soporta reglas de estilo, las cuales permiten la mezcla de caractersticas. Mientras que una sola regla de construccin puede ser invocada para un elemento en particular del origen, pueden ser invocadas todas las reglas de estilo aplicables, permitiendo la mezcla de caractersticas como en CSS. Resumiendo, un hoja de estilo XSL describe el proceso de presentacin a travs de un pequeo conjunto de elementos XML. Esta hoja, puede contener elementos de reglas que representan a las reglas de construccin y elementos de reglas de estilo que representan a las reglas de mezcla de estilos. En cuanto a la inclusin de imgenes en las pginas XML, estas son slo enlaces, luego pueden representarse de cualquier modo soportado por las especificaciones XLink y Xpointer, incluyendo la utilizacin de una sintaxis similar a las imgenes HTML existentes. Estas especificaciones, sin embargo, ofrecen un mejor control sobre la activacin y cruce de enlaces, por lo que se puede elegir, por ejemplo, si se carga o no una imagen al cargar una pgina, o mediante un clic del ratn, o en una ventana adicional, sin tener que cambiar el cdigo. Los soportes para formatos grficos son un problema especfico de los navegadores y visualizadores, y por tanto de la definicin del XSL especfico. XML por s mismo ni predice ni restringe nada. Los formatos que se perfilan como de mayor utilidad son GIF, JPG, TIFF y CGM. Para una explicacin ms detallada de cmo funciona XSL, se puede consultar la web del World Wide Web Consortium: What Is XSL. (http://www.w3.org/Style/XSL/WhatIsXSL.html) y para una informacin ms completa sobre Hojas de estilo, ver la pgina Web style sheets (http://www.w3.org/Style/)

XSLTXSLT est recogido en la Recomendacin del W3C: XSL Transformations (XSLT) Version 2.0 http://www.w3.org/TR/xslt20/ Una transformacin en el lenguaje XSLT est expresada en la forma de una hoja de estilo, cuya sintaxis est bien formada en XML conforme a la Recomendacin Namespaces in XML (http://www.w3.org/TR/REC-xml-names/). Una hoja de estilo generalmente incluye tanto elementos que estn bien definidos por XSLT como elementos que no estn definidos por XSLT. Los elementos definidos XSLT se distinguen por el uso de namespaces o espacios de nombre http://www.w3.org/1999/XSL/Transform, tal y como se refiere en la especificacin como el XSLT namespace. Esta especificacin es una definicin de la sintaxis y semntica de los espacios de nombre XSLT. El trmino hoja de estilo refleja el hecho de que uno de los roles ms importantes de XSLT es tambin aadir informacin de estilo a un documento fuente XML para transformarlo en un documento que consta de objetos de formato XSL, o en otro formato orientado a la presentacin, tal como HTML, XHTML, o SVG. Sin embargo, lo que caracteriza a XSLT es que se usa para un gran nmero de tareas de transformacin, no exclusivamente para aplicaciones de formato y presentacin. Una transformacin expresada en XSLT describe reglas para transformar cero o ms recursos en rbol en cero o ms recursos en rbol. La estructura de estos rboles se describe en el Modelo de Datos (Data Model). La transformacin se realiza mediante un conjunto de reglas de patrn. Una regla asocia un patrn, con nodos iguales en el documento fuente, con un constructor de secuencias. En algunos casos, la evaluacin del constructor de secuencias originar la construccin de nuevos nodos, los cuales pueden usarse para producir parte del rbol resultante. La estructura de los rboles resultantes puede ser completamente diferente de la estructura de los rboles fuente. En la construccin del rbol resultante, los nodos de los rboles fuente pueden ser filtrados y reordenados, y puede aadirse una nueva estructura. Este mecanismo permite que las hojas de estilo sean aplicadas a una extensa clase de documentos que tienen estructuras de recursos similares. Una hoja de estilo puede constar de varios mdulos de hojas de estilo contenidos en diferentes documentos XML. Para una transformacin dada, una de estas funciones es el mdulo de hojas de estilo principal (principal stylesheet module.) La hoja de estilo completa se adjunta para encontrar los mdulos de hojas de estilo directa o indirectamente referenciados desde el modulo de hoja de estilo principal usando los elementos xsl:include y xsl:import . Una aplicacin concreta de XLT es, por ejemplo, su utilizacin para disear un portal. Al poder separar el contenido (XML) de la presentacin (XLT) es posible utilizar un mismo entramado o esqueleto para disear un portal en XML y cambiar la apariencia grfica utilizando una plantilla u hoja de estilo mediante XLT.

XpathXPath es un lenguaje para direccionar partes de un documento XML, y est diseado tanto para ser utilizado con XSL como por XPointer. Se trata de una especificacin W3C: http://www.w3.org/TR/xpath XPath tambin proporciona una serie de funcionalidades bsicas para manipular cadenas, nmeros y booleanos. XPath opera sobre la estructura lgica abstracta de un documento XML, ms que en su sintaxis superficial y se denomina as por el uso que hace de una notacin de caminos, como en los URLs, para navegar a travs de la estructura jerrquica de un documento XML. Adems de su uso para direccionar, XPath esta diseado tambin de modo que tiene un subconjunto natural que puede usarse para cotejar (comprobar si un nodo encaja con un patrn o no); este uso de XPath se describe en XSLT. XPath modela un documento XML como un rbol de nodos. Hay diferentes tipos de nodos, incluyendo nodos elemento, nodos atributo y nodos texto. XPath define un modo de calcular un valor de cadena para cada tipo de nodo. Algunos tipos de nodo tambin tienen nombres. XPath es totalmente compatible con XMLNamespaces. As, el nombre de un nodo se modela como un par consistente en una parte local y un (quiz nulo) URI de espacio de nombres; a esto se le llama un nombre expandido. El modelo de datos es el siguiente: El rbol contiene nodos. Hay siete tipos de nodos:

nodos raz: El nodo raz es la raz del rbol. No aparecen nodos raz salvo como raz del rbol. El nodo elemento del elemento de documento es hijo del nodo raz. El nodo raz tiene tambin como hijos los nodos instruccin de procesamiento y comentario correspondientes a las instrucciones de procesamiento y comentarios que aparezcan en el prlogo y tras el fin del elemento de documento. El valor de cadena del nodo raz es la concatenacin de los valores de cadena de todos los nodos texto descendientes del nodo raz en orden de documento. El nodo raz no tiene nombre expandido. nodos elemento: Hay un nodo elemento por cada elemento en el documento. Los nodos elemento tienen un nombre expandido calculado expandiendo el QName del elemento especificado en la etiqueta de acuerdo con la Recomendacin XML Names. El URI de espacio de nombres del nombre expandido del elemento ser nulo si el QName no tiene prefijo y no hay un espacio de nombres por defecto aplicable. Los hijos de un nodo elemento son los nodos elemento, nodos comentario, nodos instruccin de procesamiento y nodos texto que contiene. Las referencias de entidades tanto a entidades internas como externas son expandidas. Las referencias de caracteres son resueltas. El valor de cadena de un nodo elemento es la concatenacin de los valores de cadena de todos los nodos texto descendientes del nodo elemento en orden de documento. Los nodos elemento pueden tener un identificador nico (ID). Este es el valor del atributo que se declara en el DTD como de tipo ID. No puede haber dos elementos en un documento con el mismo ID. Si un procesador XML informa de la existencia de dos elementos de un documento con el mismo ID (lo cuales posible

slo si el documento es no valido) entonces el segundo elemento en orden de documento debe ser tratado como si no tuviese ID. Si un documento no tiene DTD, entonces ningn elemento del documento tendr ID. nodos texto: Los datos de carcter se agrupan en nodos texto. En cada nodo texto se agrupan todos los datos de carcter que sea posible: un nodo texto nunca tiene un hermano inmediatamente anterior o siguiente que sea nodo texto. El valor de cadena de los nodos texto son los datos de carcter. Los nodos texto siempre tienen al menos un carcter. Cada carcter en una seccin CDATA se trata como datos de carcter. As, en el documento fuente ser tratado igual que 1] selecciona todos los hijos para del nodo contextual salvo el primero following-sibling::chapter[position()=1] selecciona el siguiente hermano chapter del nodo contextual preceding-sibling::chapter[position()=1] selecciona el anterior hermano chapter del nodo contextual /descendant::figure[position()=42] selecciona el cuadragsimo segundo elemento figure en el documento /child::doc/child::chapter[position()=5]/child::section[position() =2] selecciona la segunda section del quinto chapter del elemento de documento doc child::para[attribute::type="warning"] selecciona todos los hijos para del nodo contextual que tengan un atributo type con valor warning child::para[attribute::type='warning'][position()=5] selecciona el quinto hijo para del nodo contextual que tenga un atributo type con valor warning child::para[position()=5][attribute::type="warning"] selecciona el quinto hijo para del nodo contextual si ese hijo tiene un atributo type con valor warning child::chapter[child::title='Introduction'] selecciona los hijos chapter del nodo contextual que tengan uno o ms hijos title con string-value igual a Introduction child::chapter[child::title] selecciona los hijos chapter del nodo contextual que tengan uno o ms hijos title child::*[self::chapter or self::appendix] selecciona los hijos chapter y appendix del nodo contextual child::*[self::chapter or self::appendix][position()=last()] selecciona el ltimo hijo chapter o appendix del nodo contextual

Hay dos tipos de caminos de localizacin: caminos de localizacin relativos: consiste en una secuencia de uno o ms pasos de localizacin separados por /. Los pasos en un camino de localizacin relativo se componen de izquierda a derecha. Cada paso selecciona un conjunto de nodos relativos a un nodo contextual. Una secuencia inicial de pasos se une al paso siguiente de la siguiente forma. La secuencia inicial de pasos selecciona un conjunto de nodos relativos a un nodo de contexto. Cada nodo de ese conjunto se usa como nodo de contexto para el siguiente paso. Los distintos conjuntos de nodos identificados por ese paso se unen. El conjunto de nodos identificado por la composicin de pasos es dicha unin. Por ejemplo, child::div/child::para selecciona los elementos para hijos de los elementos div hijos del nodo contextual, o, en otras palabras, los elementos para nietos que tengan padres div. caminos de localizacin absolutos: consiste en / seguido opcionalmente por un camino de localizacin relativo. Una / por si misma selecciona el nodo raz del documento que contiene al nodo contextual. Si es seguida por un camino de localizacin relativo, entonces el camino de localizacin selecciona el conjunto de nodos que seleccionara el camino de localizacin relativo relativo al nodo raz del documento que contiene al nodo contextual.

Un paso de localizacin tiene tres partes: un eje, que especifica la relacin jerrquica entre los nodos seleccionados por el paso de localizacin y el nodo contextual, una prueba de nodo, que especifica el tipo de nodo y el nombre-expandido de los nodos seleccionados por el paso de localizacin, y cero o ms predicados, que usan expresiones arbitrarias para refinar an ms el conjunto de nodos seleccionado por el paso de localizacin.

La sintaxis del paso de localizacin es el nombre de eje y prueba de nodo separados por dos caracteres de dos puntos, seguido de cero o ms expresiones, cada una entre parntesis cuadrados. Por ejemplo, en child::para[position()=1] , child es el nombre del eje, para es la prueba de nodo y [position()=1] es un predicado. El conjunto de nodos seleccionado por el paso de localizacin es el que resulta de generar un conjunto de nodos inicial a partir del eje y prueba de nodo, y a continuacin filtrar dicho conjunto por cada uno de los predicados sucesivamente. El conjunto de nodos inicial se compone de los nodos que tengan la relacin con el nodo contextual que se especifica en el eje, y tengan el tipo de nodo y nombreexpandido especificados por la prueba de nodo. Por ejemplo, un paso de localizacin descendant::para selecciona los elementos para descendientes del nodo contextual: descendant especifica que cada nodo en el conjunto de nodos inicial debe ser un descendiente del contexto; para especifica que cada nodo en el conjunto de nodos inicial debe ser un elemento llamado para . El significado de algunas pruebas de nodos depende del eje. El conjunto de nodos inicial se filtra por el primer predicado para generar un nuevo conjunto de nodos; este nuevo conjunto de nodos es entonces filtrado usando el segundo predicado, y as sucesivamente. El conjunto de nodos final es el conjunto de nodos seleccionado por el paso de localizacin. El eje afecta a la forma en que

se evala la expresin de cada predicado y, por tanto, la semntica de un predicado se define con respecto a un eje. Estn disponibles los siguientes ejes: El eje child contiene los hijos del nodo contextual El eje descendant contiene los descendientes del nodo contextual; un descendiente es un hijo o el hijo de un hijo, etc; de este modo el eje descendant nunca contiene nodos atributo o espacio de nombres El eje parent contiene el padre del nodo contextual, si lo hay El eje ancestor contiene los ancestros del nodo contextual; los ancestros del nodo contextual consisten en el padre del nodo contextual y el padre del padre, etc; as, el eje ancestor siempre incluir al nodo raz, salvo que el nodo contextual sea el nodo raz El eje following-sibling contiene todos los siguientes hermanos del nodo contextual; si el nodo contextual es un nodo atributo o un nodo espacio de nombres, el eje following-sibling est vaco El eje preceding-sibling contiene todos los hermanos precedentes del nodo contextual; si el nodo contextual es un nodo atributo o un nodo espacio de nombres, el eje preceding-sibling est vaco El eje following contiene todos los nodos del mismo documento que el nodo contextual que estn despus de este segn el orden del documento, excluyendo los descendientes y excluyendo nodos atributo y nodos espacio de nombres El eje preceding contiene todos los nodos del mismo documento que el nodo contextual que estn antes de este segn el orden del documento, excluyendo los ancestros y excluyendo nodos atributo y nodos espacio de nombres El eje attribute contiene los atributos del nodo contextual; el eje estar vaco a no ser que el nodo contextual sea un elemento El eje namespace contiene los nodos espacio de nombres del nodo contextual; el eje estar vaco a no ser que el nodo contextual sea un elemento El eje self contiene simplemente el propio nodo contextual El eje descendant-or-self contiene el nodo contextual y sus descendientes El eje ancestor-or-self contiene el nodo contextual y sus ancestros; as, el eje "ancestor-or-self" siempre incluir el nodo raz

Los ejes ancestor, descendant,following, preceding y self particionan un documento (ignorando los nodos atributo y espacio de nombres): no se superponen y juntos contienen todos los nodos del documento. Cada eje tiene un tipo principal de nodo. Si un eje puede contener elementos, entonces el tipo principal de nodo es elemento; en otro caso, ser el tipo de los nodos que el eje contiene. As, Para el eje attribute, el tipo de nodo principal es atributo. Para el eje namespace, el tipo de nodo principal es espacio de nombres. Para los dems ejes, el tipo de nodo principal es elemento.

Una prueba de nodo que sea un QName (nombre calificado) es verdadera si y solo si el tipo del nodo es el tipo principal de nodo y tiene un nombre expandido igual al nombre expandido especificado por el QName. Por ejemplo, child::para selecciona los elementos para hijos del nodo contextual; si el nodo contextual no tiene ningn hijo para , seleccionar un conjunto vaco de nodos. attribute::href selecciona el atributo href del nodo contextual; si el nodo contextual no tiene atributo href, seleccionar un conjunto vaco de nodos. Un QName en la prueba de nodo se expande en un nombre expandido utilizando las declaraciones de espacio de nombres del contexto de la expresin. Esta es la misma forma en que se hace la expansin para los nombres de tipos de elemento en las etiquetas de inicio y fin salvo que el espacio de nombres por defecto declarado con xmlns no se utiliza: si el QName no tiene prefijo, entonces el URI de espacio de nombres es nulo (esta es la misma forma en que se expanden los nombres de atributos). Ser un error que el QName tenga un prefijo para el cual no haya una declaracin de espacio de nombres en el contexto de la expresin. Una prueba de nodo * es verdadera para cualquier nodo del tipo principal de nodo. Por ejemplo, child::* seleccionar todo elemento hijo del nodo contextual, y attribute::* seleccionar todos los atributos del nodo contextual. Una prueba de nodo puede tener la forma NCName:*. En este caso, el prefijo es expandido de la misma forma que con un QName, utilizando las declaraciones de espacio de nombres del contexto. Ser un error que no haya una declaracin de espacio de nombres para el prefijo en el contexto de la expresin. La prueba de nodo ser verdadera para cualquier nodo del tipo principal cuyo nombre expandido tenga el URI de espacio de nombres al qu el prefijo se expande, con independencia de la parte local del nombre. La prueba de nodo text() es verdadera para cualquier nodo de texto. Por ejemplo, child::text() seleccionar los nodos de texto hijos del nodo contextual. Anlogamente, la prueba de nodo comment() es verdadera para cualquier nodo comentario, y la prueba de nodo processing-instruction() es verdadera para cualquier instruccin de procesamiento. La prueba processinginstruction() puede tener un argumento que sea Literal; en este caso, ser verdadera para cualquier instruccin de procesamiento que tenga un nombre igual al valor del Literal. Una prueba de nodo node() es verdadera para cualquier nodo de cualquier tipo que sea. Los ejes estn orientados hacia adelante o hacia atrs. Un eje que solo puede contener el nodo contextual o nodos que estn a continuacin del nodo contextual segn el orden de documento es un eje hacia adelante. Un eje que solo puede contener el nodo contextual o nodos que estn antes del nodo contextual segn el orden de documento es un eje hacia atrs. As, los ejes ancestor, ancestor-or-self, preceding, y preceding-sibling son ejes hacia atrs; todos los dems ejes son hacia

adelante. Dado que el eje self siempre tendr a lo sumo un nodo, no supone ninguna diferencia que sea un eje hacia adelante o hacia atrs. La posicin de proximidad de un miembro de un conjunto de nodos con respecto a un eje se define como la posicin del nodo en el conjunto ordenado segn el orden de documento si el eje es hacia adelante y segn el orden inverso de documento si el eje es hacia atrs. La primera posicin es 1. Un predicado filtra un conjunto de nodos con respecto a un eje para producir un nuevo conjunto de nodos. Por cada nodo en el conjunto de nodos a filtrar, la PredicateExpr es evaluada con dicho nodo como nodo contextual, con el nmero de nodos en el conjunto de nodos como tamao contextual, y con la posicin de proximidad del nodo en el conjunto de nodos respecto al eje como posicin contextual; si PredicateExpr se evala como verdadera para ese nodo, el nodo se incluye en el nuevo conjunto de nodos; en otro caso, no se incluye. Una PredicateExpr se evala evaluando la Expr y convirtiendo el resultado en un booleano. Si el resultado es un nmero, se convertir en verdadero si el nmero es igual a la posicin contextual y se convertir en falso en otro caso; si el resultado no es un nmero, entonces el resultado se convertir igual que con una llamada a la funcin boolean. As un camino de localizacin para[3] es equivalente a para[position()=3] . Las expresiones se analizan dividiendo primero la cadena de caracteres a analizar en tokens y a continuacin analizando la secuencia de tokens resultante. Se puede usar libremente espacio en blanco entre tokens. El proceso de tokenizacin se describe en Estructura Lxica. En la tokenizacin, siempre se devuelve el token ms largo posible. La especificacin tambin alude a las funciones que las implementaciones de XPath deben incluir siempre en la librera de funciones que se usa para evaluar expresiones. Hay funciones de conjunto de nodos, de cadenas, booleanas y numricas. Existe tambin una Especificacin llamada XML Path Language (XPath) 2.0. (http://www.w3.org/TR/xpath20/). En la versin 2, XPath es un lenguaje de expresin que permite el procesamiento de conformidad al modelo de datos definido en XQuery 1.0 and XPath 2.0 Data Model. (http://www.w3.org/TR/xpath-datamodel/) El modelo de datos tambin ofrece una representacin de rbol de los documentos XML. XPath 2.0 es un conjunto de XPath 1.0 con algunas capacidades aadidas, como la de soportar un conjunto ms rico de tipos de datos, y usar los esquemas de XML Schema para validar los documentos.

XSL Formatting Objects (XSL-FO)El eXtensible Stylesheet Language Formatting Objects (XSL-FO) es una Recomendacin del W3C: http://www.w3.org/TR/xsl.

Desafortunadamente, el trmino XSL se usa a menudo tanto en un sentido genrico, como en otro especfico, lo que crea una gran confusin. Como ya hemos afirmado, genricamente, XSL es, en la actualidad, una familia de 3 Recomendaciones producidas por el W3C: XSL Transformations (XSLT), XML Path Language (XPath), y eXtensible Stylesheet Language (el uso especfico de XSL). Para borrar la confusin entre los usos genricos y especficos de XSL, mucha gente se refiere a la ltima especificacin (que actualmente especifica el formateador de objetos) como XSL-FO. Hay tambin una confusin importante sobre las diferencias entre XSL-FO y CSS. CSS o Cascading Style Sheets es un lenguaje de hojas de estilo externo. Se usa para aplicar estilo a un documento XML o HTML para seleccionar elementos en el documento y adjuntar propiedades de estilo a cada elemento seleccionado. En contraste, XSL-FO es un lenguaje para describir un estilo de documento completo, incluyendo la organizacin de su contenido, estilo, disposicin y reglas de seleccin de la composicin, entre ellas la necesidad de formatearlo y paginarlo. Para usarlo, se aplica una hoja de estilo XSLT (stylesheet XSLT) o algn otro mecanismo al documento original XML o XHTML, transformndolo en un documento XSL-FO, lo que se llama alimentar un formateador. El desarrollo de XSL-FO se debi a 3 razones fundamentales. La primera es que no exista un lenguaje para describir la paginacin de documentos complejos en la Web. Todava hoy, cuando se imprime un documento desde un navegador, la lnea de texto que aparece al final de la pgina, aparece a menudo cortada. Si esto sucede en un dibujo, medio dibujo aparece en la primera pgina y un espacio en una caja negra aparece en la siguiente pgina. CSS2.0 aadi algn soporte bsico para la paginacin, pero todava no ha sido plenamente implementado en los navegadores comunes. Es ms, CSS trabaja solamente con documentos cuyo contenido est organizado de la misma forma que la presentacin no elementos que saltan, ni elementos presentados fuera de secuencia, etc. La segunda razn es que no exista forma para operar con documentos largos y con composiciones complejas. La Web estndar no soporta cosas como tablas de contenidos, llamadas, notas al pie, notas al final, ndices o mltiples artculos en una pgina, composiciones comunes en peridicos, revistas o pginas de catlogos. Y la tercera es que el nivel de la tipografa en CSS no bastaba para imprimir documentos, puesto que CSS se limitaba nicamente a las necesidades de los navegadores, y no era un formato adecuado para la impresin. Objetivos del Working Group As pues, el grupo de trabajo del XSL-WG, estableci un nmero de objetivos para el diseo de XSLT y XSL-FO: XSLT y XSL-FO se expresaran en sintaxis pura XML . Esto producira dos significativas ventajas: XSLT y XSL-FO trabajaran con la existencia de parsers XML, y podran ser validados y manipulados usando herramientas XML existentes. XSLT y XSL-FO deberan declarar un conjunto de elementos y atributos plenamente descriptivos para obtener los resultados deseados. (En contraste, un lenguaje de procedimiento o procesado tal

como PostScript que describe los algoritmos que producirn el resultado.) Aunque las expresiones de programacin estn permitidas en algunos atributos, no se requerira usarlas y no se requera scripting interna. XSL se creara sobre CCS y extendera y aumentara CSS-2 para cubrir los espacios donde ste no resuelve los problemas. Al mismo tiempo, podra compartir muchas propiedades de estilo y muchos de los modelos de formato y disposicin de las CSS. As pues, XSL incluira soporte para paginar documentos de gran complejidad, para dotar de estilo a documentos en los que sea muy importante la composicin del contenido (tales como libros de texto, manuales, contratos o catlogos industriales), XSL aadira soporte para caractersticas como notas al pie, notas finales, globos, ndices, tablas de contenidos, diferentes y homogneos modelos y plantillas de pginas, etc. Tambin aadira soporte para documentos de composicin reglada como peridicos, revistas, catlogos y folletos. Y, por supuesto, continuara soportando los documentos navegables que podran ser soportados usando CSS. XSL debera cubrir los requerimientos de presentacin bsica para la mayor parte de usos de impresin y para un gran rango de dispositivos de presentacin y visualizacin, incluyendo reflujo o repaginacin para dispositivos de bolsillo ; y para los requerimientos de accesibilidad. Para hacer todo esto, era necesario proveer un mecanismo de transformacin que reorganice, filtre el contenido para una mejor presentacin para el medio deseado y los requerimientos de acceso. Esto hace necesario separar el diseo de la composicin y los controles de paginacin secuencia, as como que el mismo estilo de contenido puede ser situado en disposiciones diferentes. El mecanismo de transformacin podra proveer una manera para modificar la presentacin (estilo y composicin) para soportar requerimiento de accesibilidad tales como un texto largo o fuentes alternativas, negro sobre blanco o blanco sobre negro (o alternar esquemas de colores), alternar la navegacin y la presentacin aural, etc. XSL-FO mejorara la tipografa y las caractersticas de disposicin de los formatos de pginas existentes y sera compatible con los principales modelos de formato. Adems, SXL- FO tendra soporte multilinge incluyendo el uso de Unicode y reglas bidireccionales de Unicode. Soportara un nmero de caractersticas especiales de composicin usadas en Asia y los lenguajes del Medio Este, o que esto fuera fcil de hacer en el futuro. XSL-FO proveera soporte para caractersticas multilinges de fuentes de moderna tecnologa, tales como fuentes libres. En adicin a los objetivos del proyecto, el Working Group tambin estableci la necesidad de publicar alguna gua sobre cmo usar XSL-FO. Lo ms importante es que XSL-FO estuviera explcitamente no diseado para la autora manual, esto es, que fueran generadas por mquina a travs de XSLT, la programacin y la composicin o las aplicaciones de diseo. Este no era un nuevo concepto, ya que en la publicacin dinmica actual de websites se almacena rutinariamente su contenido en XML neutral y entonces las mquinas generan el HTML apropiado para el navegador.

Mucha gente se hace las siguientes preguntas: "Si ya existen las CSS para qu se necesita XSL-FO? o "Si existen unas maravillosas herramientas de composicin WYSIWYG, muchas de las cuales pueden procesar XML, por qu usar XSL-FO?" Adems, muchas personas piensan tambin que las hojas de estilo CSS y XSL son bastante ms difciles y complicadas de escribir que utilizar las agradables interfaces grficas GUIs de programas de composicin tales como FrameMaker o InDesign. Sin embargo, los requerimientos de la industria de la edicin y la publicacin son amplios y diversos. Algunos documentos requieren elementos de creacin profesional para interactivamente modificar la disposicin, el contenido y la tipografa para as obtener un resultado aceptable; otros documentos resultan mejores cuando son generados y formateados bajo demanda usando sistemas basados en reglas. XSL-FO est diseado para cubrir este agujero en el formato bajo demanda en el sector de la industria; en donde es ideal para productos de colecciones de pginas tales como Adobe Document Server.

Los requerimientos del sector de formato bajo demanda son totalmente diferentes de aquellos diseados para la interaccin, y herramientas de composicin WYSIWYG tales como FrameMaker e InDesign. Hoy las herramientas de composicin WYSIWYG son muy buenas en la creacin y perfeccionamiento de documentos individuales, que es el motor primordial de la existencia de muchas de las publicaciones tradicionales de la industria. En estos productos WYSIWYG, el contenido, el estilo y la composicin estn estrechamente ligadas al documento y as, mover el documento a un medio alternativo (pantalla versus papel, pantallas con diferentes tamaos o formatos) es una tarea ardua, complicada y difcil. Otra rea donde las herramientas WYSIWYG no son buenas es en la produccin de cientos de documentos cuyo contenido est sacado de una base de datos y vertido en documentos a modo de plantillas donde cambian los datos. En estos casos, se necesita que pueda darse a toda la coleccin de documentos un aspecto comn y agradable, y que sea fcil de elaborar. Existen dos situaciones en las que es mejor operar con software de composicin interactiva: cuando un diseador necesita control creativo de la disposicin, y cuando un escritor o ilustrador necesita trabajar con el contenido mientras simultneamente ve o modifica esta composicin. En la edicin de revistas, por ejemplo, el diseo de pginas es en muchos casos complejo y la composicin de cada pgina est hecha a la medida del contenido. (A menudo, ambos, el contenido y la composicin, sern ajustados de forma repetida para obtener el resultado deseado.) En la produccin de folletos, los grficos y la composicin deben ser producidos al mismo tiempo y los cambios influyen los unos en los otros. Tambin en la produccin de peridicos, el contenido est a menudo editado para rellenar un espacio exacto. En estas situaciones, las herramientas de composicin interactiva como Adobe InDesign y Adobe InCopy son la eleccin apropiada. Sin embargo hay situaciones donde la composicin interactiva es imposible. Como ejemplo podemos poner casos en los que la generacin del contenido de los documentos viene dada en respuesta a requerimientos individuales (quizs a travs del servidor Web) o variaciones de un documento plantilla donde varan algunos campos de datos. En tales situaciones, XSL-FO corriendo en un producto como Adobe Document Server es la eleccin apropiada. Otro objetivo importante es imprimir nicamente el contenido que toma grficos y texto desde las mismas fuentes o recursos de contenido neutro XML que estn siendo dinmicamente publicados en la Web. XSL-FO, en conjuncin con la especificacin XML compaera, XML SVG, ofrece una manera clara para unificar las herramientas de publicacin dinmica orientadas a la Web y la impresin. As pues, XSL-FO es un formato intermediario entre el medio XML neutro y el medio dependiente de la salida. Si se alimenta con contenido estructurado XML y una hoja de estilo XSLT a un procesador XSLT, el resultado es XSL-FO. Luego se alimenta XSL-FO, junto con fuentes mtricas y algn grfico o imagen externa, dentro de un formateador XSL-FO, y el resultado es un documento paginado (en PDF o cdigo para imprimir) que puede ser visualizado o impreso. La siguiente imagen muestra a la perfeccin el funcionamiento de todo este proceso:

Fuente: DEACH, Stephen. "What Is XSL-Fo and When Should I Use It?" The Seybold Report . Vol. 2, No. 17. December 9, 2002. http://www.seyboldreports.com/TSR/free/0217/techwatch.html

En resumen, el lenguaje XSL o Extensible Stylesheet Language abarca una serie de tecnologas que se pueden compendiar de la siguiente forma:XSLT (XSL Transforms): La palabra Transforms muestra exactamente en qu consiste esta parte del estndar pues describe cmo los documentos XML pueden ser filtrados y convertidos en otros documentos XML, incluyendo archivos XSL-FO. Desafortunadamente, un XSLT que especifica este tipo de conversin se denomina hoja de estilo, lo cual crea una gran confusin debido al uso tradicional del trmino. Una hoja de estilo XSLT es un concepto que encierra una rutina de bsqueda y sustitucin ms sofisticada que el de las hojas de estilo anteriores. Xpath (XSL Path Language): Se usa con XSLT para especificar las partes de un documento XML a las cuales se aplica la transformacin. Los modelos XPath en documentos XML son un rbol de nodos con padrehijos y relaciones entre ellos prximas-lejanas. Estos nodos son de diferentes tipos: nodos elemento, nodos atributo, nodos texto, etc. Si XSLT es una herramienta de bsqueda y reemplazo sofisticada, entonces Xpath es la manera para seleccionar qu nodos o tipos de nodos buscar. XSL-FO (XSL Formatting Objects): El archivo XSL-FO contiene el medio y apariencia especfica de los objetos formateados para fabricar la pgina (o, para salida de audio, el discurso). Para el medio impreso, los objetos formateados (formatting object) pueden incluir caracteres, bloques de texto, imgenes, tablas, bordes, pginas maestras y otros elemento similares. XSL-FO no es un lenguaje de descripcin de pgina. Puede especificar varias reglas de composicin (por ejemplo, dnde situar una ruptura de pgina) y requerimientos (por ejemplo, ir a una nota al pie en el final de la pgina), pero no determina la colocacin actual de cada elemento. Esto est determinado por el motor paginador XSL-FO, llamado formateador (formatter). La salida de un formateador no necesita necesariamente tener asignada una impresora, esto quiere decir que la salida puede ser un archivo PostScript o PDF, que necesitara un software adicional de interpretacin. Hay varios formateadores XSL-FO que se usan comnmente para generar PDF.