Объекты форматирования XSL

редактировать
Объекты форматирования XSL
Расширение имени файла .xml,.fo
Тип Интернет-носителя приложение / xml,. text / xml(устарел)
Uniform Type Identifier (UTI) public.xml
РазработаноWorld Wide Web Consortium
Тип форматаЯзык разметки
Содержится вXML
Стандарт 1.1

XSL-FO (Объекты форматирования XSL ) - это язык разметки для Форматирование документа XML, которое чаще всего используется для создания файлов PDF. XSL-FO является частью XSL (Extensible Stylesheet Language), набора технологий W3C, предназначенных для преобразования и форматирования данных XML. Другие части XSL - это XSLT и XPath. Версия 1.1 XSL-FO была опубликована в 2006 году.

XSL-FO считается завершенной функцией W3C: последнее обновление рабочего проекта было в январе 2012 года, а его рабочая группа закрылась в ноябре 2013 года.

Содержание

  • 1 Основы
  • 2 Языковые концепции
  • 3 Структура документа
  • 4 Возможности XSL-FO v1.0
    • 4.1 Несколько столбцов
    • 4.2 Списки
    • 4.3 Элементы управления разбивкой на страницы
    • 4.4 Сноски
    • 4.5 Таблицы
    • 4.6 Элементы управления ориентацией текста
    • 4.7 Разное
  • 5 Возможности XSL-FO v1.1
    • 5.1 Несколько потоков и отображение потоков
    • 5.2 Закладки
    • 5.3 Индексирование
    • 5.4 Цитирование последней страницы
    • 5.5 Маркеры таблицы
    • 5.6 Внутренние / внешние поплавки
    • 5.7 Уточненный размер графики
  • 6 Преимущества
  • 7 Недостатки
  • 8 Замена
  • 9 См. Также
  • 10 Ссылки
  • 11 Внешние ссылки

Основы

В отличие от комбинации HTML и CSS, XSL-FO является унифицированным языком представления. Он не имеет семантической разметки, поскольку этот термин используется в HTML. И, в отличие от CSS, который изменяет представление по умолчанию внешнего документа XML или HTML, он хранит все данные документа внутри себя.

Общая идея использования XSL-FO заключается в том, что пользователь пишет документ не на FO, а на языке XML. XHTML, DocBook и TEI - все возможные примеры. Затем пользователь получает преобразование XSLT, либо записывая его самостоятельно, либо находя преобразование для рассматриваемого типа документа. Это преобразование XSLT преобразует XML в XSL-FO.

После создания документа XSL-FO он передается в приложение, называемое процессором FO. Процессоры FO преобразуют документ XSL-FO во что-то, что можно прочитать, распечатать или и то, и другое. Чаще всего XSL-FO выводит файл в формате PDF или в формате PostScript, но некоторые процессоры FO могут выводить данные в другие форматы, такие как файлы RTF или даже просто окно в графическом интерфейсе пользователя, отображающее последовательность страниц и их содержимое.

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

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

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

Например, некоторые процессоры FO могут переносить слова, чтобы уменьшить пространство при разрыве строки, в то время как другие предпочитают этого не делать. Различные процессоры могут даже использовать разные алгоритмы расстановки переносов, от очень простых до более сложных алгоритмов расстановки переносов, которые учитывают, переносится ли предыдущая или следующая строка. В некоторых пограничных случаях они могут существенно изменить макет различных страниц. Есть и другие случаи, когда спецификация XSL-FO явно предоставляет процессорам FO некоторую степень выбора в отношении компоновки.

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

Языковые концепции

Язык XSL-FO был разработан для страничных медиа; как таковая концепция страниц является неотъемлемой частью структуры XSL-FO.

FO лучше всего подходит для того, что можно назвать "управляемым содержанием" дизайном. Это стандартный метод верстки книг, статей, юридических документов и т. Д. Он включает в себя единый непрерывный отрезок довольно непрерывного текста с различной повторяющейся информацией, встроенной в поля страницы. Это отличие от дизайна, основанного на макетах, который используется в газетах или журналах. Если содержимое этих документов не умещается в требуемом пространстве, часть его обрезается до тех пор, пока не умещается. XSL-FO нелегко справляется с жесткими ограничениями расположения магазинов; действительно, во многих случаях в нем отсутствует возможность выразить некоторые формы указанного макета.

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

Структура документа

Документы XSL-FO являются документами XML, но они не должны соответствовать какому-либо DTD или схеме. Вместо этого они соответствуют синтаксису, определенному в спецификации XSL-FO..

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

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

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

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

Базовая разметка содержимого XSL-FO получена из CSS и его правил каскадирования. Таким образом, многие атрибуты в XSL-FO распространяются на дочерние элементы, если явно не переопределены.

Возможности XSL-FO v1.0

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

Несколько столбцов

На странице можно определить несколько столбцов. В этом случае блоки по умолчанию перетекают из одного столбца в следующий. Можно настроить отдельные блоки для охвата всех столбцов, создавая текстовый разрыв на странице. Столбцы над этим разрывом будут переходить друг в друга, как и столбцы под разрывом. Но никакому тексту не разрешается перетекать из раздела выше в раздел ниже.

Из-за характера спецификации страницы XSL-FO несколько страниц могут фактически иметь разное количество и ширину столбцов. Таким образом, текст может довольно легко перетекать со страницы с 3 столбцами на страницу с 5 столбцами на страницу с 1 столбцом.

Все функции FO работают в рамках ограничений страницы с несколькими столбцами.

Мы можем охватить несколько столбцов, указав два атрибута, то есть. промежуток, отступ после.

Списки

Список XSL-FO, по сути, представляет собой два набора блоков, расположенных бок о бок. Запись состоит из блока «слева» или начального линейного направления и последовательности блоков «справа» или конечного линейного направления. Блок слева концептуально представляет собой номер или маркер в списке. Однако это может быть просто строка текста, как в глоссарии. Блок справа работает как положено. Оба этих блока могут быть блок-контейнерами или иметь несколько блоков в одной записи списка.

Нумерация списков XSL-FO, когда они нумеруются, должна выполняться XSLT или любым другим процессом, создавшим документ XSL-FO. Таким образом, списки номеров должны быть явно пронумерованы в XSL-FO.

Элементы управления разбиением на страницы

Пользователь может указать Widow и Orphan для блоков или для самого потока, а также разрешить каскадное преобразование атрибутов в дочерние блоки. Кроме того, можно указать блоки, которые будут храниться вместе на одной странице. Например, блок изображения и описание этого изображения можно настроить так, чтобы они никогда не разделялись. Процессор FO будет делать все возможное, чтобы придерживаться этих команд, даже если для этого потребуется создать много пустого места на странице.

Сноски

Пользователь может создавать сноски, которые отображаются внизу страницы. Сноска пишется в документе FO обычным потоком текста в том месте, где на нее имеется ссылка. Ссылка представлена ​​как встроенное определение, хотя это и не требуется. Тело - это один или несколько блоков, которые FO-процессор помещает внизу страницы. Процессор FO гарантирует, что где бы ни была ссылка, сноска, цитируемая по этой ссылке, будет начинаться на той же странице. Это будет так, даже если это означает создание лишнего пустого места на странице.

Таблицы

Таблица FO работает так же, как таблица HTML / CSS. Пользователь указывает строки данных для каждой отдельной ячейки. Пользователь также может указать некоторую информацию о стиле для каждого столбца, например цвет фона. Кроме того, пользователь может указать первую строку как строку заголовка таблицы с отдельной информацией о стилях.

Процессор FO может точно сказать, сколько места дать каждому столбцу, или ему можно сказать, чтобы он автоматически поместил текст в таблицу.

Элементы управления ориентацией текста

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

Разное

  • Цитирование номеров страниц. Страница, содержащая специальный тег, может быть процитирована в тексте, и процессор FO заполнит фактический номер страницы, на которой появляется этот тег.
  • Границы блока в нескольких стилях.
  • Цвета фона и изображения.
  • Элементы управления шрифтом и вес, как в CSS.
  • Боковые плавающие элементы.
  • Разные встроенные элементы.

Возможности XSL-FO v1.1

Версия 1.1 XSL-FO добавляет ряд новых функций к версии 1.0.

Множественные потоки и отображение потоков

XSL-FO 1.0 был довольно ограничен в отношении того, какой текст был разрешен для размещения в каких областях страницы. Версия 1.1 значительно ослабляет эти ограничения, позволяя отображать текущий текст в несколько явных областей на странице. Это позволяет набирать текст, как в газете.

Закладки

Многие форматы вывода для процессоров XSL-FO, особенно PDF, имеют функции закладок. Это позволяет формату определять строку текста в отдельном окне, которое может быть выбрано пользователем. Если этот параметр выбран, окно документа немедленно прокручивается до определенной области документа.

XSL-FO v1.1 теперь предоставляет возможность создавать именованные закладки в XSL-FO, что позволяет процессору передавать это в выходной формат, который его поддерживает.

Индексирование

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

Цитирование последней страницы

Последняя страница может быть сгенерирована без предоставления явной ссылки в документе на конкретную привязку в документе FO. Определение «последняя страница» может быть ограничено определенным набором страниц или охватывать весь документ. Это позволяет пользователю указать что-то вроде «Страница 2 из 15», где страница 15 - это номер страницы определения последней страницы.

Маркеры таблицы

Маркеры таблицы позволяют пользователю создавать динамическое содержимое в верхних и нижних колонтитулах таблицы, например промежуточные итоги внизу каждой страницы таблицы или индикаторы «продолжения таблицы».

Внутренние / внешние поплавки

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

Усовершенствованный размер графики

XSL-FO 1.1 уточняет функциональные возможности для изменения размера графики, чтобы подогнать его под размер, с возможностью уменьшения размера изображения (но не увеличения размера), а также возможности определить конкретные шаги масштабирования. Кроме того, на результирующий коэффициент масштабирования можно ссылаться для отображения (например, в подписи к рисунку «показанное изображение имеет фактический размер 50%»).

Преимущества

  • Язык XML - Поскольку это язык XML, для генерации кода XSL-FO из любого языка XML требуется только преобразование XSLT (и процессор XSLT). Можно легко написать документ в TEI или DocBook и преобразовать его в HTML для просмотра в Интернете или PDF (через процессор FO) для печати. Фактически, существует множество уже существующих XSLT TEI и DocBook для обеих этих целей.
  • Простота использования - Еще одним преимуществом XSL-FO является относительная простота использования. Большая часть функциональных возможностей языка основана на работе с CSS, поэтому пользователь CSS будет знаком с основами атрибутов разметки. Понять, как будет выглядеть конкретный раздел документа FO, обычно довольно просто.
  • Низкая стоимость - По сравнению с коммерческими продуктами для верстки и верстки страниц XSL-FO может предложить гораздо более дешевое решение, если в остальном соответствует требованиям типографские и макетные требования (см. ниже). Начальная стоимость владения низкая (нулевая, если бесплатные реализации, такие как Apache FOP и xmlroff, соответствуют вашим требованиям), особенно по сравнению со стоимостью коммерческих инструментов компоновки. Необходимые навыки (в первую очередь, XSLT-программирование) широко доступны. Существует ряд хороших книг по XSL-FO, а также онлайн-ресурсы и активное сообщество пользователей.
  • Многоязычный - XSL-FO был разработан для работы со всеми письменными человеческими языками, и его реализации в значительной степени достиг этой цели. Это делает XSL-FO особенно подходящим для составления документов, локализованных на большое количество национальных языков, где требуется единый набор инструментов, который может составлять все языковые версии документов. Это особенно ценно для технической документации таких вещей, как бытовая электроника, где азиатские и ближневосточные языки важны, потому что эти части мира представляют собой огромные рынки для таких вещей, как мобильные телефоны и компьютерная периферия.
  • Зрелый стандарт - с публикацией XSL-FO 1.1, XSL-FO оказался зрелым стандартом с рядом надежных коммерческих и некоммерческих реализаций. Другого сопоставимого стандарта для компоновки страниц не существует.

Недостатки

  • Ограниченные возможности - XSL-FO был специально разработан для удовлетворения требований «слегка оформленных» документов, типичных для технических руководств, деловых документов, счетов-фактур и скоро. Хотя он может использоваться и используется для более сложных дизайнов, он по своей сути ограничен в том, что он может делать с точки зрения макета и типографики. В частности, XSL-FO не предоставляет прямого способа получения эффектов форматирования, зависящих от знания соотношения позиций на странице двух объектов форматирования. Например, нет прямого способа сказать «если эта вещь находится на той же странице, что и эта вещь, то сделайте X, иначе сделайте Y». Это явное проектное решение, отражающее двухэтапную модель абстрактной обработки на основе преобразования, используемую XSL-FO. Это ограничение можно устранить, реализовав многопроходный процесс. К сожалению, в настоящее время не существует стандарта того, как результат первого прохода будет передан обратно на второй проход. Большинство, если не все, реализации предоставляют ту или иную форму обрабатываемого формата промежуточных результатов, который можно использовать для этого, но любой такой процесс, реализованный сегодня, по необходимости, будет зависеть от конкретной реализации.
  • Точно так же существуют важные функции layout, которых просто нет в XSL-FO, либо потому, что они не имели достаточно высокого приоритета, либо потому, что их разработка была слишком сложной для включения в версию 1.1, либо потому, что не было достаточных реализаций, чтобы разрешить их включение в окончательную спецификацию в соответствии с правилами W3C.
  • В дополнение к этим архитектурным ограничениям текущие реализации XSL-FO, как коммерческие, так и с открытым исходным кодом, не обеспечивают такой же уровень типографской сложности предоставляемые высококачественными инструментами верстки, такими как QuarkXPress или InDesign, или программируемыми системами набора текста, такими как LaTeX. Например, ни одна из текущих реализаций не обеспечивает функций, обеспечивающих вертикальное выравнивание текстовых строк на разворачивающихся страницах. В спецификации XSL-FO нет ничего, что препятствовало бы этому, но и ничего, что этого требует. Для большинства документов, для которых достаточно полностью автоматизированного решения для компоновки, такой уровень типографской сложности не требуется. Однако для высококачественных публикаций и книг для массового потребителя это обычно так; в некоторых случаях этого можно достичь, используя вместо этого XSLT для создания документа LaTeX.
  • Зависимость расширения - при рассмотрении применимости XSL-FO к конкретному документу или дизайну документа необходимо рассмотрите собственные расширения, предоставляемые различными реализациями XSL-FO. Эти расширения добавляют функции, не входящие в базовую спецификацию. Например, один продукт добавляет поддержку японских типографских соглашений, которые не учитываются в спецификации XSL-FO. Однако использование этих функций делает такую ​​систему XSL-FO немного более привязанной к конкретной реализации (но не полностью привязанной, как это было бы при использовании полностью проприетарной системы композиции).
  • Непрактичное ручное редактирование - Это обычно нецелесообразно редактировать экземпляры XSL-FO вручную (XSL-FO был разработан для ясности и полноты, а не для простоты редактирования). Инструменты визуального редактирования, такие как XFDesigner, могут облегчить задачу, хотя не все теги XSL-FO доступны (особенно маркеры и сноски). XF Designer больше не является поддерживаемым продуктом Ecrion Software.

При попытке решить, будет ли XSL-FO работать для данного документа, следующие требования к типографике и макету обычно указывают, что XSL-FO не будет работать (хотя некоторые из них могут быть удовлетворены проприетарными расширениями):

  • Необходимо перезапускать номера сносок или последовательность символов на каждой новой странице (однако некоторые реализации предоставляют расширения для поддержки автоматической нумерации сносок.)
  • Необходимо обвести текст вокруг обе стороны плавающего объекта (XSL-FO может размещать текст вокруг одной стороны, а также сверху и / или снизу, но не с обеих сторон; однако некоторые реализации обеспечивают поддержку таких сложных макетов через собственные расширения.)
  • Необходимо иметь переменное количество столбцов на одной странице (однако, по крайней мере, две коммерческие реализации предоставляют расширения для создания блоков с несколькими столбцами на странице).
  • Необходимы сноски для всего столбца (несколько реализаций предоставляют столбцы расширение сноски
  • Необходимо иметь поля, которые динамически размещаются относительно других полей (например, заметки на полях, которые равномерно расположены по вертикали на странице). XSL-FO предоставляет только возможности для размещения маргинальных знаков таким образом, чтобы они были выровнены по вертикали со своим якорем.
  • Необходимо создать контент, который распространяется на две страницы в виде плавающего объекта или объекта "вне линии" в однородной последовательности повторяющиеся мастера страниц (это можно сделать в XSL-FO 1.1 с использованием нескольких областей тела и потоковых карт, но для этого требуется возможность управлять мастерами страниц, используемыми для этих страниц.)
  • Требуется как содержимое с плавающей точкой снизу, так и сноски на той же странице.
  • Необходимо иметь возможность запускать текст по произвольной кривой (хотя некоторые реализации поддерживают SVG, который можно использовать, чтобы обойти это ограничение).
  • Необходимо иметь возможность ограничивать линии определенными базовыми сетками (например, для достижения точного совмещения линий на разворачивающихся страницах).
  • Все, что требует макета с учетом страниц, например обеспечение того, чтобы рисунок всегда появляется на странице, обращенной к его точке привязки.

Замена стандартов

XML и HTML на стандарт CSS. rd, поскольку CSS2 (модуль страничного носителя ) начинает предоставлять основные функции печатным носителям. С помощью CSS-модуля со страницами для мультимедийных данных уровня 3 W3C завершает разработку интегрированного стандарта для форматирования документов и создания PDF-файлов. Итак, с 2013 года CSS3-paged - это предложение W3C по замене XSL-FO.

Программные продукты, такие как Prince и Antenna House Formatter, продемонстрировали сопоставимое качество XSL-FO (но с использованием CSS) при создании PDF.

Примечания к дизайну для Объектов форматирования XSL версии 2.0 были впервые опубликованы в 2009 г. и последний раз обновлены в 2012 г.

См. Также

  • XHTML
  • Apache FOP - открытый исходный код и бесплатная реализация XSL-FO
  • - XSL Formatter
  • XEP - Коммерческий и проприетарный движок рендеринга
  • Antenna House Formatter - XSL-FO и программное обеспечение для форматирования CSS - Коммерческое и собственный движок рендеринга
  • XFDesigner - Visual XSL-FO Editor и конструктор шаблонов. XF Designer больше не является поддерживаемым продуктом Ecrion Software Inc.

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-22 06:45:32
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте