- XSL
-
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 документе написать следующую инструкцию:
<?xml-stylesheet type="text/xsl" href="my-style.xsl"?>
XSLT
Язык XSLT состоит из трёх с половиной десятков инструкций, все они имеют общий вид:
<префикс:имя-инструкции [атрибут="значение" [атрибут="значение"]]> </префикс:имя-инструкции>,
где
префикс
— обычно «xsl», но могут использоваться и другие.XSLT-документ всегда является состоятельным (или валидным) XML-документом и имеет следующую структуру:
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <!-- набор инструкций --> </xsl:template> <!-- ... --> </xsl:stylesheet>
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):
<?xml version="1.0" encoding="iso-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="my-page"> <fo:region-body margin="1in"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="my-page"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello, world!</fo:block> </fo:flow> </fo:page-sequence> </fo:root>
Секреты мастерства
Рекурсивный цикл
XML:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="for.xsl"?> <root/>
for.xsl:
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="root"> <HTML> <BODY> <xsl:call-template name="for"> <xsl:with-param name="i" select="1"/> <xsl:with-param name="n" select="5"/> </xsl:call-template> </BODY> </HTML> </xsl:template> <xsl:template name="for"> <xsl:param name="i"/> <xsl:param name="n"/> <xsl:value-of select="$i"/> <xsl:if test="$i < $n"> <xsl:text>, </xsl:text> <xsl:call-template name="for"> <xsl:with-param name="i" select="$i+1"/> <xsl:with-param name="n" select="$n"/> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet>
Результат:
1, 2, 3, 4, 5
Группировка и сортировка годов
XML:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="years.xsl"?> <root> <object year="2003"/> <object year="2001"/> <object year="2005"/> <object year="2005"/> <object year="2003"/> <object year="2006"/> <object year="2006"/> <object year="2006"/> <object year="2005"/> <object year="2001"/> </root>
years.xsl:
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="years" match="/root/object" use="@year" /> <xsl:template match="root" priority="-1"> <HTML> <BODY> <xsl:for-each select="object[generate-id()=generate-id(key('years',@year))]"> <xsl:sort select="@year" order="descending"/> <xsl:value-of select="@year" /> <xsl:if test="position()!=last()"> <xsl:text>, </xsl:text> </xsl:if> </xsl:for-each> </BODY> </HTML> </xsl:template> </xsl:stylesheet>
Результат:
2006, 2005, 2003, 2001
См. также
Ссылки
- Официальная страница XSL (англ.)
- Tutorials for XSL-FO and XSLT (нем.)
XSL XSLT (элементы) • XSL-FO • XPath 1.0, 2.0 Языки таблиц стилей (сравнение, список) Режимы Настольная издательская система · Веб-разработка · Пользовательский интерфейс Стандартные CSS · DSSSL · XSL Нестандартные JSSS · FOSI · Qt Style Sheets · Sass · LESS · SMIL Timesheets Стандарты Консорциума Всемирной паутины Рекомендации Canonical XML • CDF • CSS • DOM • Geolocation API • HTML • ITS • MathML • OWL • P3P • PLS • RDF (Schema) • SISR • SKOS • SMIL • SOAP • SRGS • SSML • SVG • SPARQL • Timed Text • VoiceXML • WSDL • XForms • XHTML • XHTML+RDFa • XInclude • XLink • XML (Base • Encryption • Events • Information Set • namespace • Schema • Signature) • XPath / 1.0 / 2.0 • XPointer • XProc • XQuery • XSL • XSL-FO • XSLT (элементы) • XUP
Примечания XAdES • XHTML+SMIL
Рабочие проекты CCXML • CURIE • HTML5 • InkML • RIF • SCXML • SMIL Timesheets • sXBL • WICD • XFDL • XFrames • XBL • XHTML+MathML+SVG • XMLHttpRequest
Guidelines Web Content Accessibility Guidelines
Initiative Multimodal Interaction Activity • Markup Validation Service • Web Accessibility Initiative
Deprecated Организации World Wide Web Foundation • SVG Working Group • WebOnt • Device Description Working Group • WHATWG
ПО Agora • Argo • Arena • Amaya • CERN httpd • Libwww • Line Mode Browser
Конференции IW3C2 • World Wide Web Conference • WWWC1
Категории:- Языки разметки
- Языки стилей
- Стандарты W3C
- Стандарты на основе XML
Wikimedia Foundation. 2010.