Расширение имени файла | .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 года.
В отличие от комбинации 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 поддерживает большую функциональность текстового макета. В дополнение к информации, указанной выше, язык 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 имеет обширные элементы управления для ориентации блоков текста. В середине страницы можно обозначить блок текста, который нужно ориентировать в другой ориентации. Эти ориентированные блоки можно использовать для языков с ориентацией, отличной от остальной части документа, или просто, если нужно ориентировать текст для целей макета. Эти блоки могут содержать практически любой вид контента, от таблиц до списков или даже других блоков переориентированного текста.
Версия 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%»).
При попытке решить, будет ли XSL-FO работать для данного документа, следующие требования к типографике и макету обычно указывают, что XSL-FO не будет работать (хотя некоторые из них могут быть удовлетворены проприетарными расширениями):
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 г.