Qual é a diferença entre XSLT e XSL-FO?

Qual é a diferença entre XSLT e XSL-FO ?

Todos os recursos que li lidam com eles como se fossem um, ou pelo menos muito ligados..

Author: Benjamin Gruenbaum, 2009-04-11

9 answers

Eu estava me perguntando sobre a base da questão, porque eu pensei que era fácil responder, no entanto, assim que você vá aqui: http://www.w3.org/TR/xsl/ torna-se claro que é realmente uma boa pergunta, porque praticamente a primeira coisa que a página é esta declaração:

Esta especificação define as características e a sintaxe da Extensible Stylesheet Language (XSL), uma linguagem para expressar folhas de estilo. É constituído por duas partes:

  1. a linguagem para transformar XML documentos (XSLT), e
  2. Um vocabulário XML para indicar formatação semântica.

No Entanto, no mundo real, XSLT (que também é o que a maioria das pessoas assume que você quer dizer com XSL) é um meio para transformar documentos XML em algo diferente - que outra coisa mais frequentemente do que não de ser outro bem estruturado documento, provavelmente, também formatada como XML (que eu usei XSLT para processar XML, csv e simples(ish) texto).

XSL-FO por outro lado é sobre formatação - sobre colocar o conteúdo em uma página ou uma sequência de páginas de uma forma bastante estrita. É útil porque permite que você gerencie conteúdo que é espalhado por várias páginas, é relativamente simples para especificar o formato de uma página (ou mesmo e ímpar páginas), incluindo cabeçalhos, rodapé, contornos, colunas, etc e ter o seu fluxo de conteúdo para isso. Seria, portanto, pegar uma carga de dados em, digamos, um formato XML e, em seguida, usar XSLT para converter esses dados em um documento que consiste de XSL-FO que por sua vez é renderizado usando uma ferramenta apropriada em say PDF para impressão ou outros meios de distribuição.

O caso de uso que eu tenho é pegar uma pilha de dados tabulares, exportar esses dados como XML, torná-los em XSL-FO e de lá para PDF que vai para uma impressora que transforma esse PDF em um diretório de 500 páginas. Um especifica no XSL-FO que se quer números de página, quebra de página em circunstâncias específicas, que há um índice e um índice (cada um baseado em elementos particulares) e o processo de renderização (para PDF) lida com o preenchimento dos números de páginas em toda a linha.

Espero que estejas um pouco menos confuso agora..
 37
Author: Murph, 2015-02-10 20:37:16

Para além das semelhanças nas siglas, as duas tecnologias faziam parte do mesmo spec W3C(sob a forma de rascunho). Mais tarde foi decidido dividir XSL(XSL-fo) e XSLT em duas especificações separadas.

Citação de W3Schools:

XSL-FO é formalmente chamado XSL

Porquê esta confusão? Is XSL-FO e XSL a mesma coisa? Sim, é, mas vamos dar-te um explicação:

O estilo tem a ver com transformação. e informação de formatação. Quando o mundo O Wide Web Consortium (W3C) primeiro rascunho XSL, continha a sintaxe da linguagem para ambos transformar e formatar XML documento.

Mais tarde, o grupo de trabalho da W3C dividiu o projecto original em separado Recomendações:
* 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

Uma anotação detalhada da cronologia pode ser encontrada na página inicial de Dave Pawson : http://www.dpawson.co.uk/xsl/sect1/history.html

 19
Author: Mads Hansen, 2013-08-07 00:53:56

O XSL é uma família de linguagens utilizadas para transformar e tornar os documentos XML

XSLT(XSL Transformations) : é uma linguagem para transformar documentos XML em outro XML documentos, ou outros formatos, tais como HTML para páginas da web, texto sem formatação ou XSL Objetos de Formatação, que posteriormente pode ser convertido para outros formatos, como PDF, PostScript e PNG.

A transformação pode fazer os seguintes três formas:

  1. referenciado: deixe o navegador fazer a transformação : Usando <xsl:processing-instruction>
  2. incorporado: transformação do lado do cliente usando JavaScript.
  3. Tempo de execução: para tornar os dados XML disponíveis para todos os tipos de navegadores, podemos transformar o documento XML no servidor.

Por exemplo:

enter image description here XSL-FO (objectos de formatação XSL): não é suportado pela web navegadores porque foi desenhado para impressão, não para visualização online. (de @Hobbes)
Os formatos de saída suportados atualmente incluem PDF, PCL, PS, AFP, TIFF, PNG, SVG, XML (area tree representation), Print, AWT e TXT. O alvo de saída principal é PDF. Soruce

Código de exemplo:

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

Fluxograma: enter image description here

 7
Author: Premraj, 2016-01-04 00:10:21

XSLT é usado para transformar, XSL (que é o mesmo que XSL-FO) é usado para formatação.

Http://www.w3schools.com/xslfo/xslfo_intro.asp

 6
Author: Björn, 2009-04-11 16:55:51

E a definição da Wikipédia ?

Os objectos de formatação XSL, ou XSL-FO, são uma linguagem de marcação para o documento XML formatação que é mais usado para gerar PDFs. XSL-FO faz parte do XSL, um conjunto de tecnologias W3C concebidas para a transformação e formatação de Dados XML. As outras partes do XSL são: XSLT e XPath. A partir de 12 de dezembro, 2006, a versão actual do XSL-FO é v1. 1.

 3
Author: Manuel, 2009-04-11 16:47:47

Isto pode ser bastante confuso como w3schools tutorial site (não relacionado com w3.org) diz

XSL-FO é agora formalmente chamado XSL

enter image description here

Isso significa que XSL-FO e XSL é a mesma coisa, mas não são!

O XSL representa basicamente dados XML num documento HTML XSL-FO é sobre a formatação do próprio documento. Por exemplo, se você quiser transformar XML em um documento do word, você quer adicionar números de página, Alterar margem ou página disposição, adicionar cabeçalhos e rodapés, etc. Estes itens só podem ser endereçados através de tags FO XSL, XSLT não tem nenhuma maneira de acessar os properites do documento. No campo técnico, você provavelmente vai encontrar um cenário onde os dados XML são renderizados em documento word ou PDF. Ele precisaria de números de página, formato de layout, cabeçalho etc. Trata-se de uma parte muito importante do documento.

Outra grande diferença é XSL e XSL FO tem motores diferentes. O XSL não consegue desenhar as marcas XSL-FO. Esta pergunta fala sobre qual motor a utilizar para XSL FO

Qual é o melhor motor comercial xsl fo?

Um 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> 

Note que não há referência a dados XML. Trata-se de formatar o próprio documento. Este é um elemento extremamente importante quando se trata de transformar dados XML em documentos legais. Porque você precisa de número de pager, número do documento, layout etc Se o documento de saída é pdf ou word. Sem esta informação, é dolorosamente difícil de implementar números de páginas ou cabeçalhos, etc.

A confusão surge porque este documento irá quase de certeza conter marcas XSL à medida que vamos puxando os dados XML. No entanto, se não houver nenhum motor fo XSL, o documento não será renderizado.

Em suma, são semelhantes e trabalham juntos, mas não são a mesma coisa. Eles são renderizados por diferentes motores.
 2
Author: Hammad Khan, 2017-05-23 12:10:02
Como tantas outras coisas, depende do seu ponto de vista e da sua história.

XSLT é uma linguagem (escrita em XML) "para transformar documentos XML em outros documentos XML."embora o atual XSLT 3.0 CR (http://www.w3.org/TR/xslt-30/) muda para "uma linguagem projetada principalmente para transformar documentos XML em outros documentos XML."(Sublinhado nosso.)

XSL-FO é "um vocabulário XML para especificar semântica de formatação."Está definido na recomendação" Extensible Stylesheet Language (XSL) Version 1.1 " ([10]}http://www.w3.org/TR/xsl11/). um formatador, como o da Antenna House, pega num documento XML no vocabulário FO e produz um resultado estilizado e paginado.

De onde vem o histórico é que inicialmente havia apenas uma spec -- Extensible Stylesheet Language ( XSL) -- que definia tanto a transformação -- obtendo o seu XML no vocabulário fo XML -- e o estilo -- obtendo o FO em estilizado e forma paginada. A página de história de Dave Pawson ([14]} http://www.dpawson.co.uk/xsl/sect1/history.html ([5]) ligada à resposta de Mads Hansen tem os detalhes completos, mas ao longo do caminho para XSL se tornar uma recomendação, a parte de transformação foi vista como geralmente útil e foi quebrada como "transformações XSL (XSLT)". Transformar markup para markup não era novo, mas ter um padrão para ele com múltiplas implementações (principalmente) compatíveis era uma lufada de ar fresco.

O caminho que XSLT poderia abordar partes de um documento XML também foi visto como geralmente útil, e foi quebrado como "XML Path Language (XPath)" para que pudesse ser usado por outras especificações. (XPath is used by, e.g., XQuery and XLink.)

Onde o ponto de vista surge é que a recomendação xsl 1.1 ainda define um processo de transformação mais formatação, mas a parte de transformação acontece ser definida em um documento separado. Ver http://www.w3.org/TR/xsl11/#d0e386

Embora o XSL 1.1 PoV oficial seja que o XSLT e o XSL-FO são ambas partes do XSL, e provavelmente todos os formatadores FO podem fazer a parte de transformação, na prática, a maioria das pessoas transformam o seu XML em XML no vocabulário FO usando um processador XSLT externo e alimentam esse fo XML para a sua formatação.

Onde o histórico encontra o ponto de vista é que o XSLT 1, 0 ( http://www.w3.org/TR/xslt definiu-se como fazendo parte de um XSL sistema:

O XSLT foi concebido para ser usado como parte do XSL, que é uma linguagem de 'stylesheet' para XML. Além do XSLT, o XSL inclui um vocabulário XML para especificar a formatação. XSL especifica o estilo de um documento XML usando XSLT para descrever como o documento é transformado em outro documento XML que usa o vocabulário de formatação.

Mas esse ponto de vista não está presente no XSLT 2. 0 ( http://www.w3.org/TR/xslt20/ e já se foi há muito tempo. XSLT 3.0.

A parte final do ponto de vista é que quando muitas pessoas dizem "XSL" eles significam apenas XSLT, exceto aqueles que quando eles dizem "XSL" eles significam XSL-FO, esquecendo principalmente que seu formatador FO pode fazer ambos.

 1
Author: Tony Graham, 2015-12-04 09:51:23

XSL-FO significa Extensible Stylesheet Language Formatting Objects e é sobre formatação e agora é conhecido como XSL para evitar toda a confusão. Então não se preocupe mais com XSL-FO.

XSLT no entanto é sobre transformar xML. Por isso, é muito claro. XSL é sobre formatação e XSLT é sobre transformação.

 0
Author: Srikar Doddi, 2011-09-23 14:33:15

XSLT é um formato de modelo que pode ser usado para gerar todos os tipos de documentos, incluindo documentação de texto simples.

XSL-FO significa a utilização de XSLT para produzir documentos FO.

 -1
Author: Maurice Perry, 2009-04-11 16:47:16