XSL (eXtensible Stylesheet Language) — семейство рекомендаций консорциума W3C, описывающее языки преобразования и визуализации XML-документов. Состоит из трех частей:
- XSL Transformations (XSLT) — язык преобразования XML-документов.
- XSL Formatting Objects (XSL-FO) — язык разметки типографских макетов и иных предпечатных материалов.
- XPath — язык путей и выражений, используемый в том числе и в XSLT для доступа к отдельным частям XML-документа.
Основные отличия от CSS
- CSS и XSL — принципиально разные технологии. Их области применения пересекаются лишь частично.
- CSS-форматирование HTML-документа применяется браузером на клиентской стороне, а XSL-преобразование может выполняться как в браузере, так и на сервере.
- Языком, лежащим в основе XSL, является XML, а это означает, что XSL более гибок, универсален, и у разработчиков появляется возможность использования средств контроля за корректностью составления таких стилевых списков (используя DTD или схемы данных).
Семейство XSL
XSL-трансформация
С помощью XSL можно трансформировать XML-документ в любой вид, будь то HTML, WML, RTF, PDF, SQL или даже SWF (flash-запускаемый модуль), а также XSL. XSL несёт в себе информацию о том, как будет оформлен документ, где и как должны располагаться данные.
Для того, чтобы обработать XML-документ c помощью XSL, необходимо в XML-документе написать следующую инструкцию:
XSLT
Язык XSLT состоит из 35 инструкций, все они имеют общий вид:
<префикс:имя-инструкции [атрибут="значение" [атрибут="значение"]]>префикс:имя-инструкции>, где префикс — обычно «xsl», но могут использоваться и другие.
XSLT-документ всегда является состоятельным (или валидным) XML-документом и имеет следующую структуру:
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> match="/"> xsl:stylesheet — корневой элемент для любого XSL-документа. В него могут быть вложены теги верхнего уровня (xsl:transform — устаревший синоним для xsl:stylesheet).
Самым доступным XSLT-процессором на данный момент для Microsoft Windows является MSXML (поставляется с браузером Internet Explorer, начиная с версии 4.5), для систем на основе GNU — xsltproc.
XSL-FO
Пример XSL-FO документа (взят из XSL Formatting Objects Tutorial):
xmlns:fo="http://www.w3.org/1999/XSL/Format"> master-name="my-page"> margin="1in"/> master-reference="my-page"> flow-name="xsl-region-body"> Hello, world! Примеры
Рекурсивный цикл
XML:
for.xsl:
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> match="root"> name="for"> name="i" select="1"/> name="n" select="5"/> name="for"> name="i"/> name="n"/> select="$i"/> test="$i < $n"> , name="for"> name="i" select="$i+1"/> name="n" select="$n"/> Результат:
1, 2, 3, 4, 5
Группировка и сортировка значений
XML:
years.xsl:
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> name="years" match="/root/object" use="@year" /> match="root" priority="-1"> select="object[generate-id()=generate-id(key('years',@year))]"> select="@year" order="descending"/> select="@year" /> test="position()!=last()"> , Результат:
2006, 2005, 2003, 2001
См. также
Ссылки
- Официальная страница XSL (англ.)
- Tutorials for XSL-FO and XSLT (нем.)