Синтаксис XSL

В заголовке документа помещается объявление XML, в котором указывается язык разметки документа, номер его версии и дополнительная информация, а в самом начале документа указывается стилистика XML и импорт пространства имен XML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>

    <xsl:template match="/">
        ...
    </xsl:template>
    ... </xsl:stylesheet>

Элемент xsl:stylesheet может содержать следующие типы элементов:

В общем случае содержание XSL-документа должно удовлетворять определенным требованиям:

Использование сущностей

Если XML-документ содержит ссылку на сущность, сущность должна быть объявлена, в противном случае документ недействителен. XML имеет только 5 предопределенных сущностей:

Неразрывный пробел

Вместо &nbsp; можно использовать &#xA0; или &#160;, также можно использовать сам символ неразрывного пробела, для его набора нажмите Alt+0160.

Иным вариантом является объявление собственной сущности и затем использование &nbsp;

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet [
	<!ENTITY nbsp "&#xA0;">
]>
<xsl:stylesheet version="1.0" …

Использование значений XML в атрибутах тегов

Для использования значения XML-тега, путь должен быть заключен в фигурные скобки, например:

<!-- Шаблон для товара -->
<xsl:template match="shop_item">
    <xsl:if test="image_small != ''">
        <img src="{dir}{image_small}" alt="{name}" title="{name}" />
    </xsl:if>

    <div>
        <a href="{url}" title="{name}">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
        </a>
    </div>
</xsl:template>

Для изображения в src подставляется значения тега dir и image_small, в атрибуты alt и title передается значение тега name.

Использование Javascript

Для вывода Javascript кода используйте следующую конструкцию:

<script type="text/javascript">
<xsl:comment>
<xsl:text disable-output-escaping="yes">
<![CDATA[
ЗДЕСЬ_КОД
]]>
</xsl:text>
</xsl:comment>
</script>

Если Вам нужно подставить какие-либо данные в Javascript-код из XML, то Javascript-код оборачиваете в некую функцию, которая принимает параметр myfunct(x, y, z) и т.д. Сами параметры вызываете в отдельном блоке, например:

<script type="text/javascript">
myfunct('<xsl:value-of ... />', '<xsl:value-of ... />', '<xsl:value-of ... />');
</script>

Экранирование

При необходимости использовать фигурную скобку в атрибутах, экранирование осуществляется удвоением скобки:

<a href="#" onclick="jQuery.function( {{ field: 'value', image: '{../dir}{file_small}' }} )">...</a>

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.