Перейти к основному содержимому

ПреобразовательXml

Стд::Xml::Преобразование::ПреобразовательXml Доступность: Сервер

Объект для преобразования документа XML по таблице стилей XSLT.

Сравнение ссылочное

Иерархия типа

Базовые типы: Объект


Примеры

Документ XML

<?xml version="1.0" encoding="UTF-8"?>
<root>
<row status="ok" value="1"/>
<row status="ok" value="2"/>
<row status="error" value="3"/>
<row status="ok" value="4"/>
</root>

Таблица стилей XSLT с xsl:message

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml"/>
<xsl:param name="param"/>
<xsl:template match="/root">
<rootTransformed>
<xsl:for-each select="row">
<xsl:choose>
<xsl:when test="@status = 'error'">
<!-- исполнение трансформации будет прервано -->
<xsl:message terminate="yes" select="concat('Критическая ошибка: ', $param, @value)"/>
</xsl:when>
<xsl:otherwise>
<xsl:message select="concat('Успешно: ', $param, @value)"/>
</xsl:otherwise>
</xsl:choose>
<row>
<value>
<xsl:value-of select="@value"/>
</value>
</row>
</xsl:for-each>
</rootTransformed>
</xsl:template>
</xsl:stylesheet>

Вызов преобразования XML в XBSL

метод ПреобразоватьДокументXml(ДокументXmlДо: Файл, ДокументXmlПосле: Файл, ТаблицаСтилей: Файл)
// в таблице стилей используется параметр
Параметры = {"param": "value"}

// обработчик сообщения из таблицы стилей, может быть использован для отладки, записи в ЖС или другого действия
ОбработчикСообщенияXslt = метод(Сообщение: СообщениеXslt) ->
если Сообщение.СПрерыванием
// запись в ЖС с видом события Ошибка и важностью Максимальная
// Значение сообщения можно получить через Сообщение.Содержимое.ВСтроку()
иначе
// запись в ЖС с видом события Информация и важностью Обычная
;
возврат
;

знч ПреобразовательXml = новый ПреобразовательXml(ТаблицаСтилей, Параметры, ОбработчикСообщенияXslt)

исп ПотокЧтения = ДокументXmlДо.ОткрытьПотокЧтения()
исп ПотокЗаписи = ДокументXmlПосле.ОткрытьПотокЗаписи()

ПреобразовательXml.Преобразовать(ПотокЧтения, ПотокЗаписи)

// В результате исполнения преобразования в ЖС будет 3 записи (2 - Информация, 1 - Ошибка),
// завершится выбросом ИсключениеПреобразованияXml, так как использовалось сообщение с прерыванием.
;

метод ПреобразоватьДокументXml(ДокументXmlДо: Файл, ДокументXmlПосле: Файл, ТаблицаСтилей1: Файл, ТаблицаСтилей2: Файл)
знч ПреобразовательXml1 = новый ПреобразовательXml(ТаблицаСтилей1)

исп ПотокЧтения = ДокументXmlДо.ОткрытьПотокЧтения()

знч УзлыПослеПреобразователяXml1 = ПреобразовательXml1.Преобразовать(ПотокЧтения)

// здесь можно выполнить дополнительные действия с узлами из ТаблицаСтилей1,
// например, прочитать промежуточные значения узлов

знч ПреобразовательXml2 = новый ПреобразовательXml(ТаблицаСтилей2)

исп ПотокЗаписи = ДокументXmlПосле.ОткрытьПотокЗаписи()

ПреобразовательXml2.Преобразовать(УзлыПослеПреобразователяXml1, ПотокЗаписи)
;

Конструкторы

ПреобразовательXml

Доступность: Сервер

ПреобразовательXml(
ТаблицаСтилей: Файл|ПотокЧтения,
Параметры: ЧитаемоеСоответствие<Строка, Строка>? = Неопределено,
ОбработчикСообщенияXslt: ((СообщениеXslt)->ничто)? = Неопределено)
Конструктор преобразователя XML.

  • ТаблицаСтилей - файл или поток чтения таблицы стилей XSLT
  • Параметры - параметры для таблицы стилей XSLT. По умолчанию - Undefined
  • ОбработчикСообщенияXslt - обработчик сообщения, полученного при исполнении таблицы стилей XSLT через инструкцию xsl:message, может быть использован для отладки и логирования. По умолчанию - Undefined

Разрешение зависимостей таблицы стилей по пути в xsl:include или xsl:import таблицы стилей зависит от переданного типа параметра ТаблицаСтилей:

  • Файл - относительный или абсолютный путь
  • ПотокЧтения - только абсолютный путь

Абсолютный путь к файлу должен иметь префикс file:/// .

Также в качестве ссылки можно использовать URN ресурса проекта в формате urn:1c-element:resource:{полное имя проекта, разделитель "-"}:{путь ресурса в проекте}.

Пример: urn:1c-element:resource:Dev-App-Основной:папка1/папка2/таблицаСтилей.xslt, где Dev - имя разработчика, App - имя проекта, Основной - имя подсистемы, папка1/папка2/таблицаСтилей.xslt - путь к файлу таблицы стилей в ресурсах проекта.


Свойства

Параметры

Доступность: Сервер ТолькоЧтение

Параметры для таблицы стилей XSLT. По умолчанию - Undefined.


Методы

Преобразовать

Доступность: Сервер

Перегрузка:
Преобразовать(Источник: ПотокЧтения|УзелXmlDom|ЧитаемыйМассив<УзелXmlDom>, Результат: ПотокЗаписи)

Выполнить преобразование документа XML, возвращает массив узлов XML.

  • Источник - поток чтения документа XML, узел или массив узлов XML

Если результат трансформации содержит валидный XML, то метод вернет массив из узла вида Элемент. Если результат - это текст, то метод вернет массив узлов вида Текст, их количество зависит от разметки текста инструкциями xsl:text, xsl:value-of.

Инструкция вывода xsl:output на вид узлов результата не влияет.

Исключения

ИсключениеПреобразованияXml - если при преобразовании возникла ошибка или явной генерации сообщения с прерыванием из таблицы стилей (xsl:message terminate="yes")


Преобразовать

Доступность: Сервер

Преобразовать(
Источник: ПотокЧтения|УзелXmlDom|ЧитаемыйМассив<УзелXmlDom>,
Результат: ПотокЗаписи)
Перегрузка:
Преобразовать(Источник: ПотокЧтения|УзелXmlDom|ЧитаемыйМассив<УзелXmlDom>): ЧитаемыйМассив<УзелXmlDom>

Выполнить преобразование документа XML.

  • Источник - поток чтения документа XML, узел или массив узлов XML
  • Результат - поток записи результата преобразования в виде сериализованного документа XML

Исключения

ИсключениеПреобразованияXml - если при преобразовании возникла ошибка или явной генерации сообщения с прерыванием из таблицы стилей (xsl:message terminate="yes")


Список унаследованных методов

Объект

ВСтроку, ПолучитьТип, Представление