В чем разница между XSLT и XSL-FO? - PullRequest
42 голосов
/ 11 апреля 2009

В чем разница между XSLT и XSL-FO?

Каждый ресурс, который я прочитал, обращается с ними, как будто они равны 1, или, по крайней мере, очень тесно связаны ..

Ответы [ 9 ]

36 голосов
/ 11 апреля 2009

Мне было интересно узнать об основах вопроса, потому что я думал, что на него легко ответить, однако, как только вы перейдете сюда: http://www.w3.org/TR/xsl/, станет ясно, что это действительно хороший вопрос - потому что в значительной степени первый вещь на странице это утверждение:

Эта спецификация определяет функции и синтаксис для расширяемого языка стилей (XSL), языка для выражения таблиц стилей. Он состоит из двух частей:

  1. язык для преобразования XML документы (XSLT) и
  2. словарь XML для указания семантика форматирования.

Тем не менее, в реальном мире XSLT (это то, что большинство людей предполагает, что вы подразумеваете под XSL) является средством для преобразования XML-документов в нечто иное - что-то еще чаще, чем не являющийся другим хорошо структурированным документом, вероятно, также отформатирован как XML (хотя я использовал XSLT для рендеринга XML в csv и простой (ish) текст).

XSL-FO, с другой стороны, относится к форматированию - к довольно строгому размещению содержимого на странице или последовательности страниц. Это полезно, потому что позволяет вам управлять контентом, распространяющимся по нескольким страницам, относительно просто указать формат страницы (или четных и нечетных страниц), включая верхние и нижние колонтитулы, границы, столбцы и т. Д., И сделать так, чтобы ваш поток контента в это , Поэтому можно было бы загрузить данные, скажем, в формате XML, а затем использовать XSLT для преобразования этих данных в документ, состоящий из XSL-FO, который, в свою очередь, отображается с использованием соответствующего инструмента, например, PDF для печати или других средств распространения. .

У меня есть сценарий использования, который заключается в том, чтобы взять кучу табличных данных, экспортировать эти данные в формате XML, преобразовать их в XSL-FO и оттуда в PDF, который поступает на принтер, который превращает указанный PDF в каталог на 500 страниц. В XSL-FO указывается, что нужны номера страниц, разрывы страниц в определенных обстоятельствах, что есть оглавление и индекс (каждый на основе определенных элементов), а процесс рендеринга (в PDF) обрабатывает заполнение номеров страниц. через доску.

Надеюсь, ты сейчас немного менее смущен ..

19 голосов
/ 30 августа 2009

Помимо сходства в акронимах, две технологии раньше были частью одной спецификации W3C (в черновом варианте). Позднее было принято решение разделить XSL (XSL-fo) и XSLT на две отдельные спецификации.

Цитата из W3Schools :

XSL-FO официально назван XSL

Почему эта путаница? XSL-FO и XSL то же самое?

Да, но мы дадим вам Объяснение:

Стиль - это и трансформация, и форматирование информации. Когда мир Wide Web Consortium (W3C) сделал свой Первый рабочий проект XSL, он содержал синтаксис языка для обоих преобразование и форматирование XML документы.

Позже рабочая группа на W3C раскололась первоначальный проект в отдельный Рекомендации:

* 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

Подробную аннотацию хронологии можно найти на домашней странице Дэйва Поусона : http://www.dpawson.co.uk/xsl/sect1/history.html

7 голосов
/ 24 декабря 2015

XSL - это семейство языков, используемых для преобразования и рендеринга документов XML

XSLT (Преобразования XSL): это язык для преобразования документов XML в другие документы XML или другие форматы, такие как HTML для веб-страниц обычный текст или объекты форматирования XSL , которые впоследствии могут быть преобразованы в другие форматы, такие как PDF , PostScript и PNG.

Преобразование может выполняться следующими тремя способами:

  1. Ссылка: Позвольте браузеру выполнить преобразование: с использованием <xsl:processing-instruction>
  2. Embedded: Преобразование на стороне клиента с использованием JavaScript.
  3. Время выполнения: Чтобы сделать данные XML доступными для всех типов браузеров, мы можем преобразовать документ XML на СЕРВЕРЕ.

Например :

enter image description here XSL-FO (объекты форматирования XSL): не поддерживается веб-браузерами, поскольку оно предназначено для вывода на печать, а не для просмотра в Интернете. (из @Hobbes)
В настоящее время поддерживаются следующие форматы вывода: PDF, PCL, PS, AFP, TIFF, PNG, SVG, XML (представление дерева областей), печать, AWT и TXT. Основной целью вывода является PDF. Soruce

Пример кода:

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

Блок-схема: enter image description here

6 голосов
/ 11 апреля 2009

XSLT используется для преобразования, XSL (то же самое, что XSL-FO) используется для форматирования.

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

3 голосов
/ 11 апреля 2009

Как насчет определения Википедии ?

Объекты форматирования XSL, или XSL-FO, язык разметки для документа XML форматирование, которое чаще всего используется для создавать PDF-файлы. XSL-FO является частью XSL, набор технологий W3C, предназначенных для преобразование и форматирование Данные XML. Другие части XSL XSLT и XPath. По состоянию на 12 декабря 2006, текущая версия XSL-FO v1.1.

2 голосов
/ 24 мая 2012

Это может быть довольно запутанным, так как учебный сайт w3schools (не относится к w3.org) говорит

XSL-FO теперь официально называется XSL

enter image description here

это означает, что XSL-FO и XSL - это одно и то же, но это не так!

XSL в основном представляет данные XML в документ HTML XSL-FO - это форматирование самого документа. Например, если вы хотите преобразовать XML в текстовый документ, вы хотите добавить номера страниц, изменить поля или макет страницы, добавить верхние и нижние колонтитулы и т. Д. Эти элементы можно адресовать только с помощью тегов XSL FO, XSLT не имеет доступа к Собственность документов. В технической области вы, скорее всего, столкнетесь со сценарием, в котором данные XML отображаются в виде слова или документа PDF. Для этого потребуются номера страниц, формат макета, заголовок и т. Д. Это очень важная часть документа.

Еще одно большое отличие - XSL и XSL FO имеют разные двигатели. XSL не может отображать теги XSL-FO. Этот вопрос говорит о том, какой движок использовать для XSL FO

Какой лучший коммерческий xsl fo engine?

Типичный XSL Fo tempate lools, подобный этому

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

Обратите внимание, что нет ссылки на данные XML. Это все о форматировании самого документа. Это чрезвычайно важный элемент, когда речь идет о преобразовании данных XML в юридические документы. Потому что вам нужен номер пейджера, номер документа, макет и т. Д., Если выходной документ PDF или слово. Без этой информации трудно реализовать номера страниц или заголовки и т. Д.

Путаница возникает из-за того, что этот документ почти наверняка будет содержать теги XSL, поскольку мы будем извлекать данные XML. Однако, если нет движка XSL Fo, документ не будет обработан.

Короче говоря, они похожи и работают вместе, но это не одно и то же. Они отображаются разными движками.

1 голос
/ 04 декабря 2015

Как и многие другие вещи, это зависит от вашей точки зрения и вашей истории.

XSLT - это язык (написанный на XML), «предназначенный для преобразования документов XML в другие документы XML», хотя текущий XSLT 3.0 CR (http://www.w3.org/TR/xslt-30/) меняет его на «язык, разработанный в основном * 1006»). * для преобразования документов XML в другие документы XML. "(выделение добавлено.)

XSL-FO - это «словарь XML для определения семантики форматирования». Он определен в Рекомендации «Extensible Stylesheet Language (XSL) версии 1.1» (http://www.w3.org/TR/xsl11/).). Модуль форматирования, например, от Antenna House, берет документ XML в словаре FO и выдает стилизованный и разбитый на страницы вывод.

История начинается с того, что изначально была только одна спецификация - Расширяемый язык стилей (XSL) - которая определяла как преобразование - перевод вашего XML в словарь FO XML - так и стилизацию - получение FO в стилизованную и разбитую на страницы форму. Страница истории от Дейва Поусона (http://www.dpawson.co.uk/xsl/sect1/history.html), на которую ссылается ответ Мэдса Хансена, содержит полную информацию, но на пути к тому, что XSL стал Рекомендацией, часть преобразования была в целом полезной и была разбита на «XSL». Преобразования (XSLT) ". Преобразование разметки в разметку не было новым, но наличие стандарта для него с несколькими (в основном) совместимыми реализациями было глотком свежего воздуха.

Способ, которым XSLT мог обращаться к частям XML-документа, также считался в целом полезным, и его называли «XML Path Language (XPath)», чтобы его могли использовать другие спецификации. (XPath используется, например, XQuery и XLink.)

Суть в том, что в Рекомендации XSL 1.1 все еще определяется процесс преобразования плюс форматирование, но часть преобразования, как оказалось, определена в отдельном документе. См http://www.w3.org/TR/xsl11/#d0e386

Хотя официальный XSL 1.1 PoV состоит в том, что XSLT и XSL-FO являются частями XSL, и, вероятно, каждый модуль форматирования FO может выполнять часть преобразования, на практике большинство людей преобразуют свои XML в XML в словаре FO с использованием внешнего XSLT-процессор и передает этот FO XML в форматтер.

Если история соответствует точке зрения, XSLT 1.0 (http://www.w3.org/TR/xslt) определяется как часть системы XSL:

XSLT разработан для использования как часть XSL, который является языком стилей для XML. В дополнение к XSLT, XSL включает словарь XML для определения форматирования. XSL задает стилизацию XML-документа с помощью XSLT, чтобы описать, как документ преобразуется в другой XML-документ, использующий словарь форматирования.

Но эта точка зрения отсутствует в XSLT 2.0 (http://www.w3.org/TR/xslt20/) и давно исчезла ко времени XSLT 3.0.

Последняя часть точки зрения состоит в том, что, когда многие люди говорят «XSL», они имеют в виду просто XSLT, за исключением тех, которые, когда они говорят «XSL», они имеют в виду XSL-FO, в то время как большинство из них забывают, что их средство форматирования FO может выполнять и то и другое.

0 голосов
/ 11 апреля 2009

XSL-FO расшифровывается как объекты форматирования языка расширяемой таблицы стилей и касается форматирования, и теперь известен как XSL, чтобы избежать путаницы. Так что больше не беспокойтесь о XSL-FO.

XSLT, однако, о преобразовании xML. Так что это очень понятно. XSL - это форматирование, а XSLT - трансформация.

0 голосов
/ 11 апреля 2009

XSLT - это формат шаблона, который можно использовать для генерации всех видов документов, включая простой текстовый документ.

XSL-FO обозначает использование XSLT для производства документов FO.

...