ws3 what versiones ultima school creador and xml xslt xsl-fo

what - xml versiones



¿Cuál es la diferencia entre XSLT y XSL-FO? (9)

¿Cuál es la diferencia entre XSLT y XSL-FO?

Todos los recursos que he leído tratan con ellos como si fueran 1, o al menos muy estrechamente relacionados.


¿Qué hay de la definición de Wikipedia ?

XSL Formatting Objects, o XSL-FO, es un lenguaje de marcado para el formato de documento XML que se usa con más frecuencia para generar archivos PDF. XSL-FO es parte de XSL, un conjunto de tecnologías W3C diseñadas para la transformación y el formateo de datos XML. Las otras partes de XSL son XSLT y XPath. A partir del 12 de diciembre de 2006, la versión actual de XSL-FO es v1.1.


Aparte de las similitudes en los acrónimos, las dos tecnologías solían ser parte de la misma especificación W3C (en forma de borrador). Más tarde se decidió dividir XSL (XSL-fo) y XSLT en dos especificaciones separadas.

Cita de W3Schools :

XSL-FO tiene el nombre formal de XSL

¿Por qué esta confusión? ¿XSL-FO y XSL son lo mismo?

Sí, lo es, pero le daremos una explicación:

El estilo se trata tanto de transformar y formatear la información. Cuando el World Wide Web Consortium (W3C) realizó su primer borrador de trabajo XSL, contenía la sintaxis del lenguaje para transformar y formatear documentos XML.

Más tarde, el Grupo de Trabajo del W3C dividió el borrador original en Recomendaciones separadas:

* XSLT, a language for transforming XML documents * XSL or XSL-FO, a language for formatting XML documents * XPath, a language for navigating in XML documents

Puede encontrar una anotación detallada de la cronología en la página principal de Dave Pawson : http://www.dpawson.co.uk/xsl/sect1/history.html


Como muchas otras cosas, depende de tu punto de vista y tu historia.

XSLT es un lenguaje (escrito en XML) "para transformar documentos XML en otros documentos XML.", Aunque el XSLT 3.0 CR actual ( http://www.w3.org/TR/xslt-30/ ) lo cambia a "un lenguaje diseñado principalmente para transformar documentos XML en otros documentos XML ". (Énfasis añadido.)

XSL-FO es "un vocabulario XML para especificar la semántica de formateo". Se define en la Recomendación "Extensible Stylesheet Language (XSL) Version 1.1" ( http://www.w3.org/TR/xsl11/ ). Un formateador, como el de Antenna House, toma un documento XML en el vocabulario de FO y produce resultados con estilo y paginado.

Donde entra en juego la historia es que inicialmente solo había una especificación: Lenguaje Extensible de Hojas de Estilo (XSL), que definía tanto la transformación (obtener su XML en el vocabulario de FO XML) como el estilo, haciendo que el FO se diseñara y forma paginada. La página de la historia de Dave Pawson ( http://www.dpawson.co.uk/xsl/sect1/history.html ) vinculada a la respuesta de Mads Hansen tiene todos los detalles, pero a medida que XSL se convierte en una Recomendación, la transformación la parte fue considerada generalmente útil y se desglosó como "Transformaciones XSL (XSLT)". Transformar el marcado en el marcado no era nuevo, pero tener un estándar para él con múltiples implementaciones (la mayoría) compatibles era una bocanada de aire fresco.

La forma en que XSLT podría abordar partes de un documento XML también se consideró generalmente útil, y se desglosó como "XML Path Language (XPath)", por lo que podría ser utilizado por otras especificaciones. (XPath es utilizado por, por ejemplo, XQuery y XLink).

El punto de vista al que se llega es que la Recomendación XSL 1.1 aún define un proceso de transformación más formato, pero la parte de transformación simplemente se define en un documento separado. Ver http://www.w3.org/TR/xsl11/#d0e386

Mientras que el XSL 1.1 PoV oficial es que XSLT y XSL-FO son partes de XSL, y probablemente cada formateador FO puede hacer la parte de transformación, en la práctica, la mayoría de las personas transforman su XML en XML en el vocabulario FO utilizando un procesador XSLT externo y alimentar ese FO XML a su formateador.

Donde la historia se encuentra con el punto de vista es que XSLT 1.0 ( http://www.w3.org/TR/xslt ) se definió a sí mismo como parte de un sistema XSL:

XSLT está diseñado para usarse como parte de XSL, que es un lenguaje de hojas de estilo para XML. Además de XSLT, XSL incluye un vocabulario XML para especificar el formateo. XSL especifica el estilo de un documento XML mediante el uso de XSLT para describir cómo el documento se transforma en otro documento XML que utiliza el vocabulario de formateo.

Pero ese punto de vista no está presente en XSLT 2.0 ( http://www.w3.org/TR/xslt20/ ) y ya pasó en el tiempo de XSLT 3.0.

La última parte del punto de vista es que cuando muchas personas dicen "XSL" se refieren solo a XSLT, excepto aquellas que cuando dicen "XSL" se refieren a XSL-FO mientras olvidan que su formateador FO puede hacer ambas cosas.


Esto puede ser bastante confuso ya que w3schools tutorial site (no relacionado con w3.org) dice

XSL-FO ahora se llama formalmente XSL

eso significa que XSL-FO y XSL son la misma cosa, pero no lo son.

XSL básicamente representa datos XML en un documento HTML. XSL-FO trata sobre el formato del documento en sí. Por ejemplo, si desea transformar XML en un documento de Word, desea agregar números de página, cambiar el margen o el diseño de página, agregar encabezados y pies de página, etc. Estos elementos solo se pueden direccionar mediante etiquetas XSL FO, XSLT no tiene forma de acceder al documentar los derechos. En el campo técnico, lo más probable es que se encuentre con un escenario en el que los datos XML se procesen en documentos Word o PDF. Necesitará números de página, formato de diseño, encabezado, etc. Estas son partes muy importantes del documento.

Otra gran diferencia es XSL y XSL FO tiene diferentes motores. XSL no puede representar etiquetas XSL-FO. Esta pregunta habla sobre qué motor usar para XSL FO

¿Cuál es el mejor motor xsl fo comercial?

Un típico XSL Fo tempate lools como este

<?xml version="1.0" encoding="ISO-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="A4"> <fo:region-body /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello W3Schools</fo:block> </fo:flow> </fo:page-sequence> </fo:root>

Tenga en cuenta que no hay referencia a datos XML. Se trata de formatear el documento en sí. Este es un elemento extremadamente importante cuando se trata de transformar datos XML en documentos legales. Porque necesita el número de buscapersonas, el número de documento, el diseño, etc., si el documento de salida es en formato PDF o Word. Sin esta información, es muy difícil implementar números de página o encabezados, etc.

La confusión viene porque este documento casi seguramente contiene etiquetas XSL ya que vamos a extraer datos XML. Sin embargo, si no hay un motor XSL Fo, el documento no se procesará.

En resumen, son similares y trabajan juntos, pero no son lo mismo. Son renderizados por diferentes motores.


Me preguntaba sobre la base de la pregunta porque pensé que era fácil de responder, sin embargo, tan pronto como vaya aquí: http://www.w3.org/TR/xsl/ queda claro que en realidad es una buena pregunta: porque casi lo primero en la página es esta afirmación:

Esta especificación define las características y la sintaxis del Lenguaje extensible de hojas de estilo (XSL), un lenguaje para expresar hojas de estilo. Está formado por dos partes:

  1. un lenguaje para transformar documentos XML (XSLT), y
  2. un vocabulario XML para especificar la semántica de formateo.

Sin embargo, en el mundo real, XSLT (que es lo que la mayoría de las personas supondrán que quiere decir con XSL) es un medio para transformar documentos XML en otra cosa; esa otra cosa más a menudo no es otro documento bien estructurado, probablemente también formateado XML (aunque he usado XSLT para representar XML a csv y texto simple (ish)).

Por otro lado, XSL-FO se trata de formatear, de diseñar contenido en una página o una secuencia de páginas de una manera bastante estricta. Es útil porque le permite administrar contenido que se distribuye en varias páginas, es relativamente sencillo especificar el formato de una página (o incluso páginas impares), incluidos encabezados, pies de página, bordes, columnas, etc. y hacer que su contenido fluya en ese . Por lo tanto, uno tomaría una carga de datos en, digamos, un formato XML y luego usaría XSLT para convertir esos datos en un documento que consta de XSL-FO que a su vez se representa utilizando una herramienta apropiada en, por ejemplo, PDF para imprimir u otros medios de distribución. .

El caso de uso que tengo es tomar una pila de datos tabulares, exportar esos datos como XML, renderizarlos en XSL-FO y de allí a PDF que va a una impresora que convierte dicho PDF en un directorio de 500 páginas. Uno especifica en el XSL-FO que uno quiere números de página, saltos de página en circunstancias específicas, que hay una tabla de contenidos y un índice (cada uno basado en elementos particulares) y el proceso de representación (en PDF) maneja el llenado de los números de página en todos los ámbitos.

Espero que estés un poco menos confundido ahora ...


XSL-FO significa Extensible Stylesheet Language Formatting Objects y se trata de formatear y ahora se conoce como XSL para evitar toda confusión. Así que ya no te preocupes por XSL-FO.

Sin embargo, XSLT trata de transformar xML. Entonces está muy claro. XSL se trata de formatear y XSLT trata sobre la transformación.


XSLT es un formato de plantilla que se puede usar para generar todo tipo de documentos, incluido el documnent de texto sin formato.

XSL-FO denota el uso de XSLT para producir documentos FO.



XSL es una familia de idiomas utilizada para transformar y procesar documentos XML

XSLT (Transformaciones XSL): es un lenguaje para transformar documentos XML en otros documentos XML u otros formatos como HTML para páginas web, texto plano o en XSL Formateando Objetos , que posteriormente pueden convertirse a otros formatos, como PDF , PostScript y PNG.

La transformación puede hacer de las siguientes tres formas:

  1. Referenciado: deje que el navegador realice la transformación: usando <xsl:processing-instruction>
  2. Embebido: transformación del lado del cliente usando JavaScript.
  3. Tiempo de ejecución: para que los datos XML estén disponibles para todo tipo de navegadores, podemos transformar el documento XML en el SERVIDOR.

Por ejemplo :

XSL-FO (Objetos de formato XSL): no es compatible con los navegadores web porque está diseñado para impresión, no para visualización en línea. (de @Hobbes)
Los formatos de salida soportados actualmente incluyen PDF, PCL, PS, AFP, TIFF, PNG, SVG, XML (representación de árbol de área), Print, AWT y TXT. El objetivo principal de salida es PDF. Soruce

Código de ejemplo:

<fo:table-row height=".5cm"> <fo:table-cell> <fo:block></fo:block> </fo:table-cell> </fo:table-row>

Diagrama de flujo: