Преобразователь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)->ничто)? = Неопределено)
- ТаблицаСтилей - файл или поток чтения таблицы стилей 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>): ЧитаемыйМассив<УзелXmlDom>
Преобразовать(Источник: ПотокЧтения|Узел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")