XSL




XSL (eXtensible Stylesheet Language) — семейство рекомендаций консорциума W3C, описывающее языки преобразования и визуализации XML-документов. Состоит из трех частей:



  • XSL Transformations (XSLT) — язык преобразований XML-документов.

  • XSL Formatting Objects (XSL-FO) — язык разметки типографских макетов и иных предпечатных материалов.


  • XPath — язык путей и выражений, используемый в XSLT для доступа к отдельным частям XML-документа.




Содержание






  • 1 Основные отличия от CSS


  • 2 Семейство XSL


    • 2.1 XSL-трансформация


    • 2.2 XSLT


    • 2.3 XSL-FO




  • 3 Секреты мастерства


    • 3.1 Рекурсивный цикл


    • 3.2 Группировка и сортировка значений




  • 4 См. также


  • 5 Ссылки





Основные отличия от 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 состоит из 35 инструкций, все они имеют общий вид:


<префикс:имя-инструкции [атрибут="значение" [атрибут="значение"]]>
</префикс:имя-инструкции>,

где префикс — обычно «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:


 1 <?xml version="1.0"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3 <xsl:template match="root">
4 <HTML>
5 <BODY>
6 <xsl:call-template name="for">
7 <xsl:with-param name="i" select="1"/>
8 <xsl:with-param name="n" select="5"/>
9 </xsl:call-template>
10 </BODY>
11 </HTML>
12 </xsl:template>
13 <xsl:template name="for">
14 <xsl:param name="i"/>
15 <xsl:param name="n"/>
16 <xsl:value-of select="$i"/>
17 <xsl:if test="$i &lt; $n">
18 <xsl:text>, </xsl:text>
19 <xsl:call-template name="for">
20 <xsl:with-param name="i" select="$i+1"/>
21 <xsl:with-param name="n" select="$n"/>
22 </xsl:call-template>
23 </xsl:if>
24 </xsl:template>
25 </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



См. также |



  • W3C

  • XML

  • HTML

  • CSS

  • XSLT

  • XPath

  • XSL-FO

  • EXSLT



Ссылки |




  • Официальная страница XSL  (англ.)


  • Tutorials for XSL-FO and XSLT  (нем.)











Popular posts from this blog

Михайлов, Христо

Центральная группа войск

Троллейбус