XSLT. Примеры решений

xslt

Условные выражения

<!-- Простое -->
<xsl:if test="<выражение>">
  <!-- если <выражение> = true -->
</xsl:if>

<!-- Равно -->
<xsl:if test="var &gt; 10">
    <!-- если var = 10 -->
</xsl:if>

<!-- Инверсия -->
<xsl:if test="not(<выражение>)">
    <!-- если <выражение> = false -->
</xsl:if>

<!-- Эффект оператора ELSE -->
<xsl:choose>
    <xsl:when test="var &gt; 10">
        <!-- если var = 10 -->
    </xsl:when>
    <xsl:otherwise>
        <!-- если var != 10 -->
    </xsl:otherwise>
</xsl:choose>

<!-- Эффект оператора ELSE IF -->
<xsl:choose>
    <xsl:when test="var &gt; 10">
        <!-- если var = 10 -->
    </xsl:when>
    <xsl:when test="var &gt; 9">
        <!-- если var = 9 -->
    </xsl:when>
    <xsl:otherwise>
        <!-- если var != 10 || var != 9 -->
    </xsl:otherwise>
</xsl:choose>

<!-- Эффект оператора AND -->
<xsl:if test="var &gt; 10">
    <xsl:if test="var &lt; 20">
        <!-- если var = 10 и var = 20 -->
    </xsl:if>
</xsl:if>

<!-- Функции на содержание -->
<xsl:if test="contains($string,$subString)">
    <!-- проверяет, есть ли $subString в $string -->
</xsl:if>

<xsl:if test="start-with(string,$subString)">
    <!-- проверяет, начинается ли строка $string с подстроки $subString -->
</xsl:if>

Циклы перебора элементов

<xsl:for-each select="book/page">
    <!-- здесь можно выбрать поля для элементов -->
</xsl:for-each>

<xsl:for-each select="book/page[author='Tolstoy']">
    <!-- а так задаётся фильтр -->
</xsl:for-each>

<xsl:for-each select="book/classic">
    <xsl:sort select="year"/>
    <!-- так задаётся сортировка -->
</xsl:for-each>

Получить значение

<xsl:value-of select="book/title"/>
Комментарии