Какво е 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 се възползва от предимството да използва свойствата на Cascading Style Sheet (CSS) и да ги разширява, когато е необходимо за реалния формат, той съдържа предоставянето на шаблони на страници, наречени страници masters в терминологията на XSL-FO. XSL-FO също така осигурява форматиране за доста сложни документи и поддържа генериране на индекс.
История и основни понятия
През януари 2012 г. работният проект на XSL-FO беше актуализиран за последен път, а през ноември 2013 г. неговата работна група беше затворена. XSL stylesheet определя представянето на клас от 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 файловете или дори може да се появи прозорец в GUI на потребителя, този прозорец показва последователността на страницата и тяхното съдържание.
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 има функции, които помагат за генериране на индекс чрез препратка към правилно маркирани елементи.
Ползи
- Подходящо за публикуване, базирано на съдържание
- Лекота на използване
- Ниска цена