Файл sitemap.xml состоит из секций match. Если такой файл существует, то при запуске системы путь в адресной строке анализируется на соответствие атрибуту pattern каждого тега match в файле sitemap.xml. Если соответствие найдено, то поиск прекращается и начинается обработка содержания тега match. Если ни одного соответствия не найдено, то управление передается обратно системе.

Тег match

Тег match обозначает секцию. Атрибут "pattern" определяет регулярное выражение, по которому система определяет, какую секцию файла sitemap.xml использовать.

Тег generate

Тег generate определяет источник данных, который будет использован для секции. В атрибуте src указывается URI источника данных. В атрибуте match может быть указан только один раз. В противном случае система выдаст ошибку. После получения XML, данные кладутся в буфер, чтобы использовать их потом в качестве источника данных в тегах transform, validate, serialize. В качестве источника данных может быть:

  • Адрес локального XML-файла:

    <generate src="./data/somefile.xml" />
  • Адрес удаленного XML-файла:

    <generate src="http://www.somesite.ru/news/rss.xml" />
  • Адрес ресурса протокола UMI:

    <generate src="udata://content/sitemap/" />

Тег transform

Данная инструкция берет xml-документ, находящийся в буфере и совершает над ним xslt-преобразование, используя xslt-шаблон, указанный в атрибуте src. После преобразования получившийся документ кладется в буфер и может быть либо использован для повторного преобразования (еще один тег transform), либо для валидации (validate) или сериализации. Тег transform может быть указан 1 и более раз. Преобразования выполняются последовательно сверху вниз. Если тег transform не указан, то XML-документ в буфере не изменяется и передается дальше по конвейеру на валидацию или сериализацию.

Тег validate

Инструкция для валидации XML-документа, находящегося в буфере. Позволяет проверять при помощи XML Schema, либо DTD. Если документ успешно провалидирован, осуществляется переход к следующей инструкции, в противном случае генерируется ошибка.

Пример использования валидации через DTD:

<validate dtd="./dtd/myformat.dat" />

Пример использования валидации через XML Schema:

<generate xsd="./xsd/myformat.xsd" />

Тег serialize

Берет данные из буфера, передает их в сериализатор, указанный в атрибуте type и запускает процесс сериализации. В зависимости от сериализатора, могут происходить следующие события:

  • Преобразование данных

  • Отправка клиенту необходимых заголовков и вывод содержимого буфера в браузер

  • Сохранение данных в файл

Следующий пример возьмет карту сайта по адресу udata://content/sitemap/, преобразует ее используя xslt-шаблон [[./xsltTpls/plainSitemap.xsl]] и выведет в браузер как html-файл:

<match pattern="^my\.xml$">
 <generate src="udata://content/sitemap/" />
 <transform src="./xsltTpls/plainSitemap.xsl" />
 <serialize type="html" />
</match>

Вывод XML без трансформаций как xml-файл:

<match pattern="^my\.xml$">
 <generate src="udata://content/sitemap/" />
 <serialize type="xml" />
</match>