Quelle est la différence entre XSLT et XSL-FO?

Quelle est la différence entre XSLT et XSL-FO?

Toutes les ressources que j’ai lues les traitent comme si elles étaient 1, ou du moins très étroitement liées.

Je m’interrogeais sur la base de la question car je pensais que c’était facile de répondre, mais dès que vous allez ici: http://www.w3.org/TR/xsl/, il devient clair que c’est en fait une bonne question – car à peu près la première chose sur la page est cette déclaration:

Cette spécification définit les fonctionnalités et la syntaxe du langage XSL (Extensible Stylesheet Language), un langage permettant d’exprimer des feuilles de style. Il se compose de deux parties:

  1. un langage de transformation de documents XML (XSLT), et
  2. un vocabulaire XML pour spécifier la sémantique du formatage.

Cependant, dans le monde réel, XSLT (ce que la plupart des gens supposent que vous entendez par XSL) est un moyen de transformer des documents XML en quelque chose d’autre. XML (bien que j’aie utilisé XSLT pour rendre le XML au format CSV et texte brut (ish)).

Le format XSL-FO, quant à lui, concerne le formatage – la présentation de contenu sur une page ou une séquence de pages de manière assez ssortingcte. C’est utile car il vous permet de gérer du contenu réparti sur plusieurs pages, il est relativement simple de spécifier le format d’une page (ou pages paires et impaires), y compris les en-têtes, pieds de page, bordures, colonnes, etc. . On prendrait donc un chargement de données dans un format XML, par exemple, puis utiliser XSLT pour convertir ces données en un document composé de XSL-FO, lui-même rendu à l’aide d’un outil approprié, disons PDF pour impression ou autre moyen de dissortingbution. .

Le cas d’utilisation que j’ai est de prendre une stack de données tabulaires, d’exporter ces données au format XML, de les rendre dans XSL-FO et de là au format PDF qui est envoyé à une imprimante qui transforme ledit PDF en un répertoire de 500 pages. On spécifie dans le XSL-FO que l’on veut des numéros de page, des sauts de page dans des circonstances spécifiques, qu’il existe une table des matières et un index (chacun basé sur des éléments particuliers) et que le processus de rendu (au format PDF) à tous les niveaux.

J’espère que vous êtes un peu moins confus maintenant ..

Outre les similitudes dans les acronymes, les deux technologies faisaient partie de la même spécification W3C (sous forme de brouillon). Il a ensuite été décidé de diviser XSL (XSL-fo) et XSLT en deux spécifications distinctes.

Citation de W3Schools :

XSL-FO est formellement nommé XSL

Pourquoi cette confusion? Est-ce que XSL-FO et XSL sont la même chose?

Oui, mais nous vous donnerons une explication:

Le style concerne à la fois la transformation et le formatage des informations. Lorsque le Consortium World Wide Web (W3C) a réalisé son premier brouillon de travail XSL, il contenait la syntaxe du langage pour transformer et formater des documents XML.

Plus tard, le groupe de travail du W3C a divisé le projet initial en recommandations distinctes:

* 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 

Une annotation détaillée de la chronologie peut être trouvée sur la page d’accueil de Dave Pawson : http://www.dpawson.co.uk/xsl/sect1/history.html

XSLT est utilisé pour transformer, XSL (qui est identique à XSL-FO) est utilisé pour le formatage.

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

XSL est une famille de langages utilisée pour transformer et restituer des documents XML

XSLT (XSL Transformations): langage permettant de transformer des documents XML en d’ autres documents XML ou autres formats, tels que HTML pour les pages Web, texte brut ou objects de formatage XSL , pouvant ensuite être convertis dans d’autres formats, tels que PDF , PostScript. et PNG.

La transformation peut effectuer les trois manières suivantes:

  1. Référencé: Laisse le navigateur effectuer la transformation: en utilisant
  2. Embedded: transformation côté client en utilisant JavaScript.
  3. Runtime: Pour rendre les données XML disponibles pour tous les types de navigateurs, nous pouvons transformer le document XML sur le SERVER.

Par exemple :

entrer la description de l'image ici XSL-FO (objects de formatage XSL): n’est pas pris en charge par les navigateurs Web car il est conçu pour l’impression, pas pour la visualisation en ligne. (de @Hobbes)
Les formats de sortie actuellement pris en charge incluent PDF, PCL, PS, AFP, TIFF, PNG, SVG, XML (représentation en arborescence), Print, AWT et TXT. La cible de sortie principale est PDF. Soruce

Exemple de code:

      

Organigramme: entrer la description de l'image ici

Qu’en est-il de la définition de Wikipedia ?

Les objects de formatage XSL, ou XSL-FO, sont un langage de balisage pour le formatage des documents XML, le plus souvent utilisé pour générer des fichiers PDF. XSL-FO fait partie de XSL, un ensemble de technologies W3C conçues pour la transformation et le formatage des données XML. Les autres parties de XSL sont XSLT et XPath. Au 12 décembre 2006, la version actuelle de XSL-FO est la v1.1.

Cela peut être assez déroutant car le site du tutoriel de w3schools (non lié à w3.org) dit

XSL-FO est maintenant officiellement nommé XSL

entrer la description de l'image ici

cela signifie que XSL-FO et XSL sont la même chose, mais ils ne le sont pas!

XSL représente essentiellement des données XML dans un document HTML XSL-FO concerne le formatage du document lui-même. Par exemple, si vous souhaitez transformer XML en un document Word, vous souhaitez append des numéros de page, modifier la marge ou la mise en page, append des en-têtes et des pieds de page, etc. Seuls les tags XSL FO permettent d’accéder à ces éléments. document des propriétés. Dans le domaine technique, vous rencontrerez très probablement un scénario où les données XML sont rendues dans un document Word ou PDF. Il faudrait des numéros de page, un format de mise en page, un en-tête, etc. Ce sont des éléments très importants du document.

Une autre grande différence est XSL et XSL FO a des moteurs différents. XSL ne peut pas rendre les balises XSL-FO. Cette question parle du moteur à utiliser pour XSL FO

Quel est le meilleur moteur xsl fo commercial?

Un lustres en XSL typiques comme celui-ci

          Hello W3Schools    

Notez qu’il n’y a aucune référence aux données XML. Il s’agit de formater le document lui-même. C’est un élément extrêmement important pour transformer des données XML en documents juridiques. Si vous avez besoin d’un numéro de pager, d’un numéro de document, d’une mise en page, etc., si le document de sortie est en format pdf ou word. Sans ces informations, il est très difficile d’implémenter des numéros de page ou des en-têtes, etc.

La confusion vient du fait que ce document contiendra certainement des balises XSL lorsque nous extrairons des données XML. Cependant, s’il n’ya pas de moteur XSL Fo, le document ne sera pas rendu.

Donc, en bref, ils sont similaires et travaillent ensemble, mais ce n’est pas la même chose. Ils sont rendus par différents moteurs.

Comme beaucoup d’autres choses, cela dépend de votre sharepoint vue et de votre histoire.

XSLT est un langage (écrit en XML) “pour transformer des documents XML en d’autres documents XML”, bien que l’actuel XSLT 3.0 CR ( http://www.w3.org/TR/xslt-30/ ) modifie cela en “a langage conçu principalement pour transformer des documents XML en d’autres documents XML. ” (Accentuation ajoutée.)

XSL-FO est “un vocabulaire XML pour spécifier la sémantique de formatage”. Il est défini dans la Recommandation “Extensible Stylesheet Language (XSL) Version 1.1” ( http://www.w3.org/TR/xsl11/ ). Un formateur, tel que celui d’Antenna House, prend un document XML dans le vocabulaire FO et produit une sortie stylisée et paginée.

Là où l’histoire entre en jeu, il n’y avait au départ qu’une seule spécification – le langage XSL (Extensible Stylesheet Language) – qui définissait à la fois la transformation – l’introduction du XML dans le vocabulaire FO – et le stylisme – forme paginée. La page d’historique de Dave Pawson ( http://www.dpawson.co.uk/xsl/sect1/history.html ) liée à la réponse de Mads Hansen contient tous les détails, mais en cours de route, XSL devient une recommandation. La partie était généralement utile et a été divisée en “Transformations XSL (XSLT)”. Transformer le balisage en balisage n’était pas nouveau, mais le fait d’avoir un standard avec plusieurs implémentations (principalement) compatibles était une bouffée d’air frais.

La manière dont XSLT pouvait adresser des parties d’un document XML était également perçue comme étant généralement utile, et a été divisée en “XML Path Language (XPath)” afin d’être utilisée par d’autres spécifications. (XPath est utilisé par exemple par XQuery et XLink.)

Le sharepoint vue vient du fait que la recommandation XSL 1.1 définit toujours un processus de transformation plus le formatage, mais il se trouve que la partie de transformation est définie dans un document distinct. Voir http://www.w3.org/TR/xsl11/#d0e386

Alors que le PoV officiel de XSL 1.1 est que XSLT et XSL-FO font tous deux partie de XSL et que tous les formateurs de FO peuvent le faire, en pratique, la plupart des gens transforment leur XML en XML dans le vocabulaire FO alimenter ce FO XML à leur formateur.

Le sharepoint vue de l’histoire est que XSLT 1.0 ( http://www.w3.org/TR/xslt ) se définit comme faisant partie d’un système XSL:

XSLT est conçu pour être utilisé avec XSL, un langage de feuille de style pour XML. En plus de XSLT, XSL inclut un vocabulaire XML pour spécifier le formatage. XSL spécifie le style d’un document XML à l’aide de XSLT pour décrire comment le document est transformé en un autre document XML qui utilise le vocabulaire de mise en forme.

Mais ce sharepoint vue n’existe pas dans XSLT 2.0 ( http://www.w3.org/TR/xslt20/ ) et il est révolu depuis le XSLT 3.0.

La dernière partie du sharepoint vue est que lorsque beaucoup de gens disent “XSL”, ils signifient seulement XSLT, sauf ceux qui, quand ils disent “XSL”, signifient XSL-FO tout en oubliant que leur formateur de FO peut faire les deux.

XSL-FO signifie Extensible Stylesheet Language Formatting Objects (Objets de formatage de langage de feuille de style extensible) et concerne le formatage et s’appelle désormais XSL pour éviter toute confusion. Alors ne vous inquiétez plus du XSL-FO.

XSLT concerne cependant la transformation de xML. Donc, c’est très clair. XSL concerne le formatage et XSLT concerne la transformation.

XSLT est un format de modèle qui peut être utilisé pour générer toutes sortes de documents, y compris des documents en texte brut.

XSL-FO désigne l’utilisation de XSLT pour produire des documents FO.