Pull to refresh

ShortXSLT: упрощенный синтаксис для XSLT с операторами вставки, if, else и т. д.

Reading time2 min
Views2.6K
Библиотека Dklab_ShortXSLT — это система для поддержки упрощенного синтаксиса XSLT для встроенных в PHP классов XSLTProcessor и DOMDocument. Фактически, это компилятор с диалекта XSLT в стандартный XSLT, запускаемый «на лету» и «прозрачно» для вызывающего кода (естественно, имеется возможность кэширования, чтобы компиляция запускалась только в до следующего изменения шаблона). Там, где вы используете XSLT в PHP-скриптах, вы можете подключить ShortXSLT, написав несколько дополнительных строчек кода.

Стандартный синтаксис XSLT весьма громоздок, что оказывается неудобным при его использовании в Web-программировании. Библиотека позволяет облегчить эту проблему.

Поддерживаются сокращенные версии для следующих конструкций: вставка значения вне тэгов, вставка языковой константы, вставка sprintf-like константы, if-then-elseif, foreach.

Пример на ShortXSLT:
...
<xsl:template match="/">
  {if /some/node = 1}
    {#hello}, world! {#my_name_is(/my/name)}.
  {elseif /other/node = /some/node}
    <p>You have {/money} dollars.</p>
  {else}
    {foreach /nodes/*}
      Node {.}<br/>
    {/foreach}
  {/if}
</xsl:template>
...


А вот то же самое, но на чистом XSLT:
...
<xsl:template match="/">
  <xsl:choose>
    <xsl:when test="/some/node = 1">
      <xsl:value-of select="h:const('hello')" />, world! 
      <xsl:value-of select="h:const('my_name_is', /my/name)" />.
    </xsl:when>
    <xsl:when test="/other/node = /some/node">
      <p>You have <xsl:value-of select="/money" /> dollars.</p>
    </xsl:when>
    <xsl:otherwise>
      <xsl:for-each select="/nodes/*">
        Node <xsl:value-of select="." /><br/>
      </xsl:for-each>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
...

ShortXSLT лишь расширяет набор инструкций XSLT. При этом все стандартные конструкции XSLT остаются доступными. Например, вы можете использовать <xsl:value-of select=«node» disable-output-escaping=«yes» /> для вставки «сырого» HTML в результирующий документ (конструкция {node} всегда вставляет «заквоченные» данные).

Библиотека распространяется по лицензии LGPL и доступна для скачивания на dklab.ru/lib/Dklab_ShortXSLT
Tags:
Hubs:
+6
Comments56

Articles

Change theme settings