XSL-FO

XSL-FO (англ. eXtensible Stylesheet Language Formatting Objects — объекты форматирования языка таблиц стилей для XML) — рекомендованный Консорциумом Всемирной паутины язык разметки типографских макетов и иных предпечатных материалов. XSL-FO является частью XSL, наряду с XSLT и XPath.

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

Документ XSL-FO — это XML файл, в котором хранятся данные для печати или вывода на экран (например, просто текст). Эти данные находятся внутри тегов fo:block, fo:table, fo:simple-page-master и др., где указаны отступы, переводы строк и т.д.

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

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

Текущая и будущие версии

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