xslt

XSLT — обзорно

XSLT — расширяемый язык стилей + технология преобразования, основанная на XSL. Т.е. XSLT включает в себя два понятия:

  • eXtendable Stylesheet Languages — расширяемая таблица стилей.
  • XSL Transformation — технология преобразования. Т.е. XSLT — декларативное описание трансформации (преобразования) любого xml документа. Т.е. вы берете xml документ + таблицу стилей и посылаете xslt процессору на обработку (скорость преобразования очень высокая). На выходе можно получить все, что угодно.

Когда браузер загрузил данные xml документа, он построил объектную dom модель, т.е. он построил набор объектов. Есть сам xml документ, в нем есть корневой элемент, внутри расположены объекты. Далее браузер начинает проходить по всем объектам и примерять, попадает этот объект под действие какого-либо правила css (селектор и свойства). Если правило сработало, то какие-то конкретные свойства налагаются на при отображении на выбранный объект.

Т.е. в итоге каждый объект прогоняется через каскад правил. И в случае срабатывания правила, его свойства назначаются на объект. В XSL такие правила представлены в виде шаблонов.

В XSL, в отличие от CSS, при срабатывании правила, объект в документе заменяется на то, что прописано в правиле. Из одного дерева можно получить другое дерево объектов.

И если к одному и тому же документу применить разные таблицы преобразований, мы получим совершенно разные документы.

Шаблон и шаблонные правила

Основа XSLT преобразования — написать несколько шаблонов, заменяющих узлы вашего документа на то, что вы хотите. Каждый шаблон записывается с помощью конструкции xsl:template. У него есть обязательный атрибут match — совпадение, в котором на языке XPath указывается совпадение. И тогда шаблоное правило срабатывает. А то, что написано внутри тела шаблона, заменяет тот узел, который сейчас обрабатывается процессором:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org.1999/XSL/Transform">
   <xsl:template match="Xpath выражение">
      <!-- тело шаблона -->
   </xsl:template>
</xsl:stylesheet>

Во избежание неприятностей в XSLT рекомендую никогда не оставлять необработанные узлы. Пишите описания для обработки всех узлов. Можно, например написать такой шаблон и поместить его в конце:

<xsl:template match="*|@*"> <!-- любой тег либо любой атрибут -->
   Что-то
</xsl:template>

Либо можно начинать правило с такого шаблона (гарантированно обработает весь документ):

<xsl:template match="/"> <!-- корень документа -->
   Что-то
   <!-- вызов других правил -->
</xsl:template>



Добавить комментарий

Ваш e-mail не будет опубликован.