Разработка сайтов на UMI.CMS
Знать UMI.CMS в совершенстве невозможно.
Даже сами разработчики знают о ней не все...

UMi

Ursa Minor

Сортировка

Имеем xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <item type="simple">
        <pos>380</pos>
        <name><![CDATA[Energy Standard Group S.A.]]></name>
        <logo><![CDATA[esg.gif]]></logo>
        <link><![CDATA[]]></link>
    </item>
    <item type="simple">
        <pos>330</pos>
        <name><![CDATA[Гранд Отель Европа]]></name>
        <logo><![CDATA[gh_europe.gif]]></logo>
        <link><![CDATA[]]></link>
    </item>
</root>

Требуется вывести позиции, упорядоченные по номеру

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="UTF-8"/>

<xsl:template match="/root">

    <h4>Партнеры и спонсоры:</h4>
    <ul>
        <xsl:apply-templates select="item[@type='simple']" mode="item">
            <xsl:sort order="ascending" select="number(pos)" data-type="number"/> //указываем направление сортировки
        </xsl:apply-templates>
    </ul>
</xsl:template>


<xsl:template match="item" mode="item">

<xsl:for-each select=".">
<li>
<xsl:choose>
<xsl:when test="link!=''"> //если присутствует ссылка
<a>
<xsl:attribute name="href">
<xsl:text>http://</xsl:text>
<xsl:value-of select="link"/>
</xsl:attribute>

<xsl:if test="logo!=''"> //а есть ли картинка
  <image>//создаем тег
<xsl:attribute name="src">
<xsl:text>/user_xml/sponsors/gif/</xsl:text>
<xsl:value-of select="logo"/>
</xsl:attribute>
</image>
</xsl:if>


</a>
</xsl:when>
<xsl:otherwise>

 <xsl:if test="logo!=''"> //а есть ли картинка
<image>
<xsl:attribute name="src">
<xsl:text>/user_xml/sponsors/gif/</xsl:text>
<xsl:value-of select="logo"/>
</xsl:attribute>
</image>
</xsl:if>

</xsl:otherwise>
</xsl:choose>


</li>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

Внутри макроса UMI.CMS подключаются стили по методу XML и XSLT в PHP

Все это было хорошо до тех пор, пока не потребовалось вывести список, упорядоченный без учета регистра. Вопрос решился через известное место:

<xsl:apply-templates select="li" mode="item">
<xsl:sort order="ascending" select="fn:translate('.', 'абвгдежзийклмнопрстуфхцчшщэюя', 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЭЮЯ')" />
</xsl:apply-templates>

В идеале, если бы у меня был xslt 2, могло бы помочь fn:lower-case('.'), но что имеем(
Вообще же по теме преобразования регистра http://src-code.net/preobrazovanie-registra/

Новости

30.10.2016

Обновлено описание макроса для вывода всех элементов справочника UMI.CMS с учетом версии 14.

 

21.07.2015

Памятка по обновлению до debian 8.1. Приятно вкусить все плюшки PHP 5.6

11.11.2014

Как выполнить SQL-запрос из bash-скрипта. Памятка

11.11.2014

Как отследить нагрузку сайта на сервер.

06.11.2014

Заготовка для галереи изображений с прокруткой. Не знаю, когда дойдут руки довести ее до вида плагина, поэтому открываю как есть. Можно доработать.

05.11.2014

Выкладываю как заготовку свой слайдер изображений на mootools

Все обновления