XSLT
Материал из BiTel WiKi
(переименовал «XSLT» в «BGBilling XSLT») |
|||
Строка 1: | Строка 1: | ||
- | + | XSLT - язык, основанный на формате XML. Его назначение - трансформация XML дерева с данными в какой-либо результирующий формат. Например: TXT, XHTML (HTML документ, соответсвующий правилам формата XML). Трансформация производится XSLT процессором. | |
+ | |||
+ | {| | ||
+ | |- valign=top | ||
+ | | [[Изображение:XSLT_1.png]] | ||
+ | |} | ||
+ | |||
+ | |||
+ | В XSLT шаблоне различаются просто теги, которые без изменений перейдут в результирующий документ и управляющие теги для процессора с префиксом xslt. Пример фрагмента XSLT документа: | ||
+ | <pre> | ||
+ | <tbody> | ||
+ | <xsl:for-each select="bills/bill"> | ||
+ | <xsl:variable name="uid" select="@uid"/> | ||
+ | <tr> | ||
+ | <td nowrap="nowrap"><xsl:value-of select="@number"/></td> | ||
+ | <td><xsl:value-of select="@create_dt"/></td> | ||
+ | <td><xsl:value-of select="@pay_dt"/></td> | ||
+ | <td nowrap="nowrap"><xsl:value-of select="@summ"/></td> | ||
+ | <td nowrap="nowrap"> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="@status=0">не оплачен</xsl:when> | ||
+ | <xsl:otherwise>оплачен</xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | </td> | ||
+ | <td> | ||
+ | <xsl:choose> | ||
+ | <xsl:when test="$uid=-1">создан Вами</xsl:when> | ||
+ | <xsl:otherwise>создан администратором</xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | < /td> | ||
+ | </pre> | ||
+ | |||
+ | Здесь форматируется XHTML документ, при этом используются стандартые HTML теги (tr, td) и управляющие теги поцессора (xsl:choose, xsl:value-of). | ||
+ | |||
+ | Рассмотрим несколько XSLT директив, встречающихся в приведенном фрагменте: | ||
+ | '''<xsl:for-each select="bills/bill">''' - для каждого узла '''bills/bill''' исходного дерева XML данных выполнить то что указано до '''</xsl:for-each>''' | ||
+ | |||
+ | '''<xsl:variable name="uid" select="@uid"/>''' - создать переменную '''uid''' и присвоить ей значение из атрибута '''uid''' текущего узла '''bill''' | ||
+ | |||
+ | '''<xsl:value-of select="@number"/>''' - вставить значение атрибута '''number''' текущего элемента '''bill''' | ||
+ | |||
+ | '''<xsl:choose>''' - условный оператор, аналог case либо '''if-else''', внутри могу быть несколько '''<xsl:when>''' условий и действие по умолчанию '''<xsl:otherwise>''' | ||
+ | |||
+ | С помощью XSLT формируются все выводимые биллингом XHTML, TXT, PDF формы, в т.ч. страницы статистики пользователя. Модифицируя шаблон, поставляемый в составе системы, вы можете менять оформление выводимых данных любым образом. Для этого нужно только получить XML документ с данными и имя XSLT шаблона, который биллинг использует для той или иной трансформации. | ||
+ | |||
+ | Ниже приведены ссылки на руководства по XSLT. Язык разметки XSLT тесно завязан с языком XPath - языком выборки данных в XML деревьях. XSLT процессор используемый биллингом поддерживает спецификации XSLT и XPath версий 1.0 и 2.0. | ||
+ | |||
+ | == Расширения XSLT == | ||
+ | Расширения - это некоторые дополнительные возможности работы с датами, математическми функциями и т.п. Они не входят в стандарт xslt и зависят от реализации xslt- процессора. Если используется в качетсве процессора xalan, то описание его расширений можно посмотреть тут: | ||
+ | http://xml.apache.org/xalan-j/extensionslib.html | ||
+ | |||
+ | Пример использования : | ||
+ | |||
+ | <pre> | ||
+ | <xsl:stylesheet .... | ||
+ | xmlns:datetime="http://exslt.org/dates-and-times" | ||
+ | .... | ||
+ | > | ||
+ | .......... | ||
+ | <!-- Выводит текущую дату в формате dd.MM.yyyy --> | ||
+ | <xsl:value-of select="datetime:formatDate(datetime:dateTime(), 'dd.MM.yyyy')"/> | ||
+ | </pre> | ||
+ | |||
+ | == Дополнительные ссылки == | ||
+ | '''На русском:''' | ||
+ | #http://www.raleigh.ru/XML/XSLTutorial/contents.htm либо http://www.zvon.org/xxl/XSLTutorial/Output_rus/contents.htm | ||
+ | #http://www.webclub.ru/archive/xml/article-724.html либо http://citforum.ru/internet/xmlxslt/xmlxslt.shtml | ||
+ | #http://www.opennet.ru/base/dev/xml_example.txt.html | ||
+ | #http://citforum.ru/internet/xslt/index.shtml | ||
+ | |||
+ | '''На английском:''' | ||
+ | #ftp://bgbilling.ru/pub/bgbilling/doc | ||
+ | #http://www.w3schools.com/xsl/default.asp | ||
+ | #http://www.w3schools.com/xpath/default.asp | ||
+ | #http://www.tizag.com/xmlTutorial/xslttutorial.php | ||
+ | #http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html | ||
+ | #http://www.topxml.com/xsl/tutorials/intro/default.asp | ||
+ | #Запрос в Google: http://www.google.ru/search?hl=en&q=xslt+tutorial |
Текущая версия на 08:24, 28 июня 2013
XSLT - язык, основанный на формате XML. Его назначение - трансформация XML дерева с данными в какой-либо результирующий формат. Например: TXT, XHTML (HTML документ, соответсвующий правилам формата XML). Трансформация производится XSLT процессором.
В XSLT шаблоне различаются просто теги, которые без изменений перейдут в результирующий документ и управляющие теги для процессора с префиксом xslt. Пример фрагмента XSLT документа:
<tbody> <xsl:for-each select="bills/bill"> <xsl:variable name="uid" select="@uid"/> <tr> <td nowrap="nowrap"><xsl:value-of select="@number"/></td> <td><xsl:value-of select="@create_dt"/></td> <td><xsl:value-of select="@pay_dt"/></td> <td nowrap="nowrap"><xsl:value-of select="@summ"/></td> <td nowrap="nowrap"> <xsl:choose> <xsl:when test="@status=0">не оплачен</xsl:when> <xsl:otherwise>оплачен</xsl:otherwise> </xsl:choose> </td> <td> <xsl:choose> <xsl:when test="$uid=-1">создан Вами</xsl:when> <xsl:otherwise>создан администратором</xsl:otherwise> </xsl:choose> < /td>
Здесь форматируется XHTML документ, при этом используются стандартые HTML теги (tr, td) и управляющие теги поцессора (xsl:choose, xsl:value-of).
Рассмотрим несколько XSLT директив, встречающихся в приведенном фрагменте: <xsl:for-each select="bills/bill"> - для каждого узла bills/bill исходного дерева XML данных выполнить то что указано до </xsl:for-each>
<xsl:variable name="uid" select="@uid"/> - создать переменную uid и присвоить ей значение из атрибута uid текущего узла bill
<xsl:value-of select="@number"/> - вставить значение атрибута number текущего элемента bill
<xsl:choose> - условный оператор, аналог case либо if-else, внутри могу быть несколько <xsl:when> условий и действие по умолчанию <xsl:otherwise>
С помощью XSLT формируются все выводимые биллингом XHTML, TXT, PDF формы, в т.ч. страницы статистики пользователя. Модифицируя шаблон, поставляемый в составе системы, вы можете менять оформление выводимых данных любым образом. Для этого нужно только получить XML документ с данными и имя XSLT шаблона, который биллинг использует для той или иной трансформации.
Ниже приведены ссылки на руководства по XSLT. Язык разметки XSLT тесно завязан с языком XPath - языком выборки данных в XML деревьях. XSLT процессор используемый биллингом поддерживает спецификации XSLT и XPath версий 1.0 и 2.0.
Расширения XSLT
Расширения - это некоторые дополнительные возможности работы с датами, математическми функциями и т.п. Они не входят в стандарт xslt и зависят от реализации xslt- процессора. Если используется в качетсве процессора xalan, то описание его расширений можно посмотреть тут: http://xml.apache.org/xalan-j/extensionslib.html
Пример использования :
<xsl:stylesheet .... xmlns:datetime="http://exslt.org/dates-and-times" .... > .......... <!-- Выводит текущую дату в формате dd.MM.yyyy --> <xsl:value-of select="datetime:formatDate(datetime:dateTime(), 'dd.MM.yyyy')"/>
Дополнительные ссылки
На русском:
- http://www.raleigh.ru/XML/XSLTutorial/contents.htm либо http://www.zvon.org/xxl/XSLTutorial/Output_rus/contents.htm
- http://www.webclub.ru/archive/xml/article-724.html либо http://citforum.ru/internet/xmlxslt/xmlxslt.shtml
- http://www.opennet.ru/base/dev/xml_example.txt.html
- http://citforum.ru/internet/xslt/index.shtml
На английском:
- ftp://bgbilling.ru/pub/bgbilling/doc
- http://www.w3schools.com/xsl/default.asp
- http://www.w3schools.com/xpath/default.asp
- http://www.tizag.com/xmlTutorial/xslttutorial.php
- http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html
- http://www.topxml.com/xsl/tutorials/intro/default.asp
- Запрос в Google: http://www.google.ru/search?hl=en&q=xslt+tutorial