Що таке файл XSL-FO?
XSL-FO (XSL Formatting Objects) — потужна мова таблиць стилів для форматування документів XML. Семантика обмеженої форми паперу та друку виражається XSL-FO, коли розміри фіксовані. На відміну від HTML, який представляє семантику необмеженої форми вікна браузера зі змінними розмірами. Документи XML, відформатовані за допомогою XSL-FO, здебільшого використовуються для створення файлів PDF. XSL (Extensible Stylesheet Language) — це набір повнофункціональних технологій W3C, призначених для проектування форматування та обміну XML-документами та частиною цієї мови XSL-FO. XSLT і XPath також є іншими частинами XSL.
Пропонується, щоб документи XML спочатку перетворювалися на XSL-FO, PDF є прикладом цього критерію. У PDF результати відображаються спочатку за допомогою XSLT, а потім за допомогою засобу форматування XSL-FO. Таким чином XML-документи можна форматувати випадковим чином. Хоча XSL-FO використовує переваги використання властивостей каскадної таблиці стилів (CSS) і розширює їх там, де це необхідно для реального формату, він містить надання шаблонів сторінок, які називаються шаблонами сторінок у термінології XSL-FO. XSL-FO також забезпечує форматування для досить складних документів і підтримує створення індексів.
Історія та основні поняття
У січні 2012 року робочий проект XSL-FO був оновлений востаннє, а в листопаді 2013 року його робоча група була закрита. Таблиця стилів XSL визначає представлення класу XML-документів, описуючи, як екземпляр класу перетворюється на XML-документ, який використовує словник форматування. XSL-FO є інтегрованою мовою презентацій і не має семантичної розмітки, яка використовується в HTML. Крім того, ця мова зберігає всі дані документа в собі, на відміну від CSS, який змінює налаштування за замовчуванням зовнішнього документа HTML або XML.
Загальним критерієм використання XSL-FO є те, що користувач пише документ мовою XML, а не мовою FO. Після цього відбувається перетворення XSLT. Це перетворення XSLT відповідає за перетворення XML у XSL-FO. Як тільки документ XSL-FO буде згенерований, він потім передається до програми, що називається процесором FO. Процесори FO відповідають за перетворення цього документа в документ, який можна читати, а також друкувати. Файли PDF або PS є прикладами найпоширенішого виведення XSL-FO. Але це не означає, що процесор FO може виводити лише ці два типи формату. Деякі процесори FO можуть виводити у файли RTF або навіть у графічному інтерфейсі користувача може з’являтися вікно, у якому відображається послідовність сторінок та їхній вміст.
Документ XSL-FO відрізняється від PDF або PS у тому сенсі, що він остаточно не визначає макет тексту на різних сторінках. Можливо, він стилізує сторінки та визначає місця для відображення вмісту. Крім того, процесор FO організовує текст у межах, визначених документом FO. Ця специфікація навіть дозволяє різним процесорам FO поводитися відповідно до сторінок, створених у результаті. Прикладом такої поведінки є розстановка переносів, деякі процесори FO можуть розставляти слова через переноси, щоб заощадити місце, коли рядок розривається, тоді як деякі процесори не вибирають цей параметр. Вибір різних алгоритмів розстановки переносів, які відповідають їхнім вимогам, залежить від процесорів. Ці алгоритми розстановки переносів можуть бути дуже простими або, можливо, більш складними. У деяких ситуаціях специфікація XSL-FO явно санкціонує процесори FO, певний ступінь вибору в контексті макета.
Ця варіація серед процесорів FO генерує різні результати, які процесори часто залишаються байдужими. Тому що загальний фокус XSL-FO полягає у створенні сторінкових/друкованих документів. Самі документи XSL-FO зазвичай діють як посередники, їх основною функцією є створення PDF-файлів або документа, який можна роздрукувати як результат для розповсюдження. У HTML/CSS або XSL-FO розповсюдження PDF-файлу як кінцевого результату замість введення мови форматування вказує на те, що одержувачі не впливають на результуючу універсальність, яка виникає через відмінності між інтерпретаторами мови форматування. З іншого боку, очевидно, що немає простого шляху, щоб документ міг задовольнити різні потреби одержувачів, наприклад, змінний розмір сторінки чи бажаний розмір шрифту, або адаптація для сторінки чи друку.
Формат файлу XSLFO
Документи SL-FO в основному є документами XML, але вони не відповідають жодній схемі. Натомість документи SL-FO дотримуються синтаксису, визначеного в специфікації їх власної мови. У кожному документі XSL-FO обов’язкові два розділи:
- Розділ, який визначає список розмічених макетів сторінок.
- Розділ із усіма деталями даних документа з розміткою, яка визначає відображення вмісту на різних сторінках за допомогою різних макетів сторінок.
Властивості сторінки згадуються в макетах сторінок, які можуть визначати організацію тексту відповідно до конвенцій для певної мови. Крім того, розмір сторінки, їхні поля та послідовність сторінок (які санкціонують різні властивості для непарних і парних сторінок) також визначаються макетами сторінок.
Частина даних документа розділена на серію потоків, де кожен потік пов’язаний із макетом сторінки. Потоки включають в себе список блоків. Цей список блоків може містити вбудовані функції розмітки або список текстових даних, або, можливо, обидва одночасно. На полях документа також можуть відображатися номери сторінок або заголовки розділів. Функціональні можливості як блоків, так і вбудованих елементів залишаються такими ж, як і в CSS, але деякі правила заповнення та полів відрізняються між FO та CSS.
Напрямок орієнтації сторінки повністю визначений для розширення блоків і вбудованих рядків, завдяки чому документи FO працюють на мовах, відмінних від англійської. У мові специфікації FO для опису напрямків використовуються слова початок і кінець, а не ліворуч і праворуч. Основна розмітка вмісту XSL-FO та каскадні правила взяті з CSS. Мова XSL-FO відповідає наступним специфікаціям.
Кілька стовпців
Сторінка може мати кілька стовпців і блоків і за замовчуванням може розширюватися від одного стовпця до іншого. Кілька сторінок можуть мати різну ширину та кількість колонок. Усі характеристики FO відповідають обмеженням сторінки з кількома стовпцями.
Списки
Список XSL-FO складається з двох наборів блоків, розташованих один до одного. Концептуально, у списку блок ліворуч позначає число, маркер або рядок тексту, тоді як правий блок може працювати, як очікувалося. Нумерація списків XSL-FO зазвичай виконується XSLT.
Таблиці
Таблиця FO схожа на таблицю HTML/CSS. Користувач може вибрати рядки даних, інформацію про стиль, колір фону для кожної окремої комірки. Використовуючи чітку інформацію про стиль, користувач має привілей вибрати перший рядок як рядок заголовка таблиці. Процесор FO може бути проінформований явно про специфікацію простору кожного стовпця або автоматично підганяти текст у таблиці.
Індексація
XSL-FO 1.1 має функції, які допомагають генерувати індекс за допомогою посилань на правильно розмічені елементи.
Переваги
- Підходить для публікації на основі вмісту
- Простота використання
- Низька вартість