Выдано 137693 лицензии

Синтаксис 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:import
  • xsl:include
  • xsl:strip-space
  • xsl:preserve-space
  • xsl:output
  • xsl:key
  • xsl:decimal-format
  • xsl:namespace-alias
  • xsl:attribute-set
  • xsl:variable
  • xsl:param
  • xsl:template

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

  • каждый открывающий тэг, определяющий некоторую область данных в документе обязательно должен иметь закрывающий тэг;

    Правильно:

    <p>Абзац</p>
    <img src="/hostcms/image1.gif" alt="" border= "0" />
    Неправильно:
    <p> — непарный тег, нет закрывающего тега, либо отсутствует слэш в конце тега
    <img src="/hostcms/image1.gif" alt="" border= "0"> — Непарный тэг, отсутствует слэш в конце тега
  • в XML учитывается регистр символов;
  • все значения атрибутов, используемых в определении тэгов, должны быть заключены в кавычки:

    Правильно:

    <img src="/hostcms/image1.gif" alt="" border= "0" />
    Неправильно:
    <img src=/hostcms/image1.gif alt="" border= "0" /> — Значение параметра src не взято в кавычки
  • вложенность тэгов в XML строго контролируется, поэтому необходимо следить за порядком следования открывающих и закрывающих тэгов:

    Правильно:

    <strong>Жирный текст <i>Текст курсивом</i></strong>
    Неправильно:
    <strong>Жирный текст <i>Текст курсивом</strong></i>
  • вся информация, располагающаяся между начальным и конечным тэгами, рассматривается в XML как данные, и поэтому учитываются все символы форматирования;
  • Символ неразрывного пробела &nbsp; необходимо записывать как &#xA0; или &#160;

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

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

  • &amp; для &
  • &lt; для <
  • &gt; для >
  • &quot; для "
  • &apos; для '

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

Вместо &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>

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