Логотип

Документация по макросам и шаблонам UMI.CMS

Пример файла в формате UMIData

Структура файла в формате UMI Data

Вывод значений формата UMIData

Каждый раз, когда вы запрашиваете страницу своего сайта в окне браузера, система UMI.CMS формирует XML-файл в формате UMI Data. Чтобы увидеть этот файл, наберите в адресной строке браузера адрес созданной страницы, добавив к нему расширение .xml, например http://ваш_сайт/mypage.xml.

Пример файла в формате UMIData

<?xml version="1.0" encoding="utf-8" ?>
<result
    module="content"
    method="content"
    domain="www.somedomain.com"
    lang="ru"
    header="Нет страницы для отображения"
    title="Заголовок моей страницы (TITLE)"
    request-uri="/mypage/?xmlMode=force"
    pageId="23052">
    <meta>
        <keywords>Ключевые слова моей страницы</keywords>
        <description>Описание моей страницы</description>
    </meta>
    <user id="14" status="auth" login="username" />
    <parents />
    <page
        id="23052"
        parentId="0"
        link="/mypage/"
        is-visible="1"
        object-id="27089"
        type-id="10">
        <name>Моя страница</name>
        <properties>
            <group id="22" name="common">
                <title>Основные</title>
                <property id="22" name="title" type="string">
                    <title>Поле TITLE</title>
                    <value>Заголовок моей страницы (TITLE)</value>
                </property>
                <property id="23" name="h1" type="string">
                    <title>Поле H1</title>
                    <value>Заголовок моей страницы</value>
                </property>
                <property id="24" name="meta_keywords" type="string">
                    <title>Поле meta KEYWORDS</title>
                    <value>Ключевые слова моей страницы</value>
                </property>
                <property id="25" name="meta_descriptions" type="string">
                    <title>Поле meta DESCRIPTIONS</title>
                    <value>Описание моей страницы</value>
                </property>
                <property id="26" name="content" type="wysiwyg">
                    <title>Контент</title>
                    <value>Текст моей страницы</value>
                </property>
                <property id="8837" name="tags" type="tags">
                    <title>Тэги</title>
                    <value>tag1</value>
                </property>
            </group>
            <group id="24" name="more_params">
                <title>Дополнительные параметры</title>
                <property id="31" name="show_submenu" type="boolean">
                    <title>Показывать подменю</title>
                    <value>1</value>
                </property>
            </group>
        </properties>
    </page>
</result>

Как видим, файл в формате UMI Data имеет следующую структуру:

Структура файла в формате UMI Data

Рисунок 2.6. Структура файла в формате UMI Data

Структура файла в формате UMI Data

Поясним, что означают элементы этого формата:

  • Корневой элемент result.

    Дочерние элементы: meta, user, parents, page.

    Атрибуты:

    @module

    название модуля. Указывает, к какому модулю относится страница.

    @method

    название метода. Указывает, чем является страница в рамках данного модуля.

    @domain

    название домена (например, www.somedomain.com).

    @lang

    префикс языка (ru, en и т. п.).

    @header

    заголовок страницы. Как правило, совпадает со значением свойства Заголовок страницы (H1), заданным при редактировании страницы.

    @title

    значение свойства <TITLE>, заданное при редактировании страницы, c префиксом, указываемым в настройках модуля «Структура» на закладке «SEO (Умолчания)» (Обратите внимание, что с версии 2.8.5.1 это значение задаётся в настройках модуля «SEO»).

    @request-uri

    uri текущей страницы.

    @pageId

    идентификатор страницы.

  • Элемент meta.

    Содержит мета-информацию страницы.

    Дочерние элементы: keywords, description.

    • Элемент keywords.

      Содержит ключевые слова страницы, заданные в значении свойства «Ключевые слова» (meta name="KEYWORDS") при редактировании страницы, либо ключевые слова по умолчанию, заданные в настройках модуля «Структура» на закладке «SEO (Умолчания)».

    • Элемент description.

      Содержит описание страницы, заданное в значении свойства «Описания» (meta name="DESCRIPTIONS") при редактировании страницы, либо описание по умолчанию, заданное в настройках модуля «Структура» на закладке «SEO (Умолчания)».

  • Элемент user.

    Описывает посетителя сайта.

    Атрибуты:

    @id

    идентификатор пользователя.

    @status = "auth"

    означает, что пользователь авторизован на сайте.

    @login

    логин пользователя.

  • Элемент parents.

    Описывает родительскую страницу (если она есть у данной страницы).

    Дочерние элементы: page.

  • Элемент page

    Описывает страницу.

    Дочерние элементы: name, properties.

    Атрибуты:

    @id

    идентификатор страницы.

    @parentId

    идентификатор родительской страницы.

    @link

    URL страницы.

    @is-visible = "1"

    означает, что страница является активной, то есть доступной пользователю.

    @object-id

    идентификатор объекта базы данных, отображаемого на странице.

    @type-id

    идентификатор типа объекта, отображаемого на странице.

    • Элемент name.

      Содержит название страницы, заданное при редактировании страницы в поле «Название».

    • Элемент properties.

      Описывает свойства страницы.

      Дочерние элементы: group.

      • Элемент group.

        Описывает группу свойств.

        Дочерние элементы: title, property.

      • Элемент title.

        Содержит название свойства или группы свойств (в зависимости от родительского элемента).

      • Элемент property.

        Описывает одно из свойств страницы.

        Дочерние элементы: title, value.

        Атрибуты:

        @id

        идентификатор свойства.

        @name

        имя свойства.

        @type

        тип значений свойства.

      • Элемент value.

        Содержит значение свойства.

 

Вывод значений формата UMIData

Итак, вы ознакомились с описанием формата UMI Data. Теперь вы можете создать XSLT-шаблон, который преобразует исходный XML-файл в формате UMI Data в итоговую HTML-страницу, содержащую нужные элементы исходного файла.

Например, чтобы вывести значения полей заголовка и контента страницы, добавим в тестовый XSLT-шаблон следующий код (выделен жирным шрифтом):

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

 <xsl:output method="html" encoding="utf-8" indent="yes"/>

 <xsl:template match="/">
    <html>
      <head>
        <title><xsl:value-of select="/result/@title" /></title>
      </head>
      <body>

        <div id="content">
          <h1><xsl:value-of select=".//property[@name ='h1']/value" /></h1>
          <xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
        </div>

      </body>
    </html>
 </xsl:template>

</xsl:stylesheet>

Первая инструкция <xsl:value-of> выводит значение атрибута title корневого тега result, две другие выводят значение элемента value для поля h1 и значение элемента value для поля content.

Замечание

Атрибут disable-output-escaping="yes" отключает экранирование символов. Его следует указывать для вывода полей, содержимым которых является HTML-код.

Можно видеть, что мы можем получить доступ к отдельным элементам XML-файла, запрашивая их при помощи "путей", похожих на пути к папкам в файловой системе.

Для доступа к атрибутам в этой записи необходимо использовать символ "@", а символы "[" и "]" используются для задания условий. Запись ".//" говорит о том, что надо искать этот элемент среди всех доступных. Так запись <xsl:value-of select=".//property[@name = 'h1']/value"/> дословно означает следующее:

Вывести значение элемента value расположенного внутри элемента property с атрибутом name равным h1, при этом элемент property может располагаться в любом месте обрабатываемого XML.

Замечание

Рассмотренное выше выражение является выражением на языке XPath. Интересующиеся могут изучить его самостоятельно, так как в большинстве случаев достаточно будет аналогии с адресацией в файловой системе.