Импорт характеристик товаров из offers — различия между версиями
Mad grant (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 162: | Строка 162: | ||
</xsl:stylesheet> | </xsl:stylesheet> | ||
+ | </source> | ||
+ | |||
+ | Протестировать его Вы можете со следующим оffers.xml: | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2014-03-11T16:01:38"> | ||
+ | <ПакетПредложений СодержитТолькоИзменения="false"> | ||
+ | <Ид>af29f627-00d2-4356-9faf-70d50708a7e3#</Ид> | ||
+ | <Наименование>Пакет предложений (Каталог)</Наименование> | ||
+ | <ИдКаталога>af29f627-00d2-4356-9faf-70d50708a7e3</ИдКаталога> | ||
+ | <ИдКлассификатора>af29f627-00d2-4356-9faf-70d50708a7e3</ИдКлассификатора> | ||
+ | <Владелец/> | ||
+ | <ТипыЦен> | ||
+ | <ТипЦены> | ||
+ | <Ид>948abd4a-a835-11e3-a14f-406186c19995</Ид> | ||
+ | <Наименование>Сайт</Наименование> | ||
+ | <Валюта>RUR</Валюта> | ||
+ | <Налог> | ||
+ | <Наименование>НДС</Наименование> | ||
+ | <УчтеноВСумме>false</УчтеноВСумме> | ||
+ | </Налог> | ||
+ | </ТипЦены> | ||
+ | </ТипыЦен> | ||
+ | <Предложения> | ||
+ | <Предложение> | ||
+ | <Ид>bd894143-7517-11e2-9969-3085a937bf85#8940bd53-5007-11e1-80e1-002590000fa5</Ид> | ||
+ | <Наименование>Предложение1</Наименование> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Размер</Наименование> | ||
+ | <Значение>10</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Цвет</Наименование> | ||
+ | <Значение>Красный</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Формат</Наименование> | ||
+ | <Значение>Широкий</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <Цены> | ||
+ | <Цена> | ||
+ | <Представление>100 RUR за шт</Представление> | ||
+ | <ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены> | ||
+ | <ЦенаЗаЕдиницу>100.00</ЦенаЗаЕдиницу> | ||
+ | <Валюта>RUR</Валюта> | ||
+ | <Единица>шт</Единица> | ||
+ | <Коэффициент>1</Коэффициент> | ||
+ | </Цена> | ||
+ | </Цены> | ||
+ | </Предложение> | ||
+ | <Предложение> | ||
+ | <Ид>bd894143-7517-11e2-9969-3085a937bf85#8940bd54-5007-11e1-80e1-002590000fa5</Ид> | ||
+ | <Наименование>Предложение2</Наименование> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Размер</Наименование> | ||
+ | <Значение>12</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Разрешение</Наименование> | ||
+ | <Значение>Низкое</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <Цены> | ||
+ | <Цена> | ||
+ | <Представление>200 RUR за шт</Представление> | ||
+ | <ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены> | ||
+ | <ЦенаЗаЕдиницу>200.00</ЦенаЗаЕдиницу> | ||
+ | <Валюта>RUR</Валюта> | ||
+ | <Единица>шт</Единица> | ||
+ | <Коэффициент>1</Коэффициент> | ||
+ | </Цена> | ||
+ | </Цены> | ||
+ | </Предложение> | ||
+ | <Предложение> | ||
+ | <Ид>cd9289c1-3759-11e2-b000-0015175f17cd#4fdsf5fd-3759-11e2-b000-0015175f17cd</Ид> | ||
+ | <Наименование>Предложение3</Наименование> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Ширина</Наименование> | ||
+ | <Значение>150</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Высота</Наименование> | ||
+ | <Значение>300</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <ХарактеристикиТовара> | ||
+ | <ХарактеристикаТовара> | ||
+ | <Наименование>Формат</Наименование> | ||
+ | <Значение>Широкий</Значение> | ||
+ | </ХарактеристикаТовара> | ||
+ | </ХарактеристикиТовара> | ||
+ | <Цены> | ||
+ | <Цена> | ||
+ | <Представление>300 RUR за шт</Представление> | ||
+ | <ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены> | ||
+ | <ЦенаЗаЕдиницу>300.00</ЦенаЗаЕдиницу> | ||
+ | <Валюта>RUR</Валюта> | ||
+ | <Единица>шт</Единица> | ||
+ | <Коэффициент>1</Коэффициент> | ||
+ | </Цена> | ||
+ | </Цены> | ||
+ | </Предложение> | ||
+ | <Предложение> | ||
+ | <Ид>dsfsdf34-4567-bb34-gf34-00123fd123fd</Ид> | ||
+ | <Наименование>Предложение4</Наименование> | ||
+ | <Цены> | ||
+ | <Цена> | ||
+ | <Представление>400 RUR за шт</Представление> | ||
+ | <ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены> | ||
+ | <ЦенаЗаЕдиницу>400.00</ЦенаЗаЕдиницу> | ||
+ | <Валюта>RUR</Валюта> | ||
+ | <Единица>шт</Единица> | ||
+ | <Коэффициент>1</Коэффициент> | ||
+ | </Цена> | ||
+ | </Цены> | ||
+ | </Предложение> | ||
+ | </Предложения> | ||
+ | </ПакетПредложений> | ||
+ | </КоммерческаяИнформация> | ||
+ | </source> | ||
+ | |||
+ | Результатом работы кастомного шаблона при таком offers будет следующий umidump: | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="utf-8"?> | ||
+ | <umidump xmlns:xlink="http://www.w3.org/TR/xlink" version="2.0"> | ||
+ | <meta> | ||
+ | <source-name>commerceML2</source-name> | ||
+ | </meta> | ||
+ | <types> | ||
+ | <type id="root-guides-type" guid="root-guides-type" title="Справочники" parent-id="0" locked="locked"> | ||
+ | <base/> | ||
+ | <fieldgroups/> | ||
+ | </type> | ||
+ | <type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Размер" title="Справочник для поля Размер"> | ||
+ | <base/> | ||
+ | <fieldgroups/> | ||
+ | </type> | ||
+ | <type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Цвет" title="Справочник для поля Цвет"> | ||
+ | <base/> | ||
+ | <fieldgroups/> | ||
+ | </type> | ||
+ | <type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Формат" title="Справочник для поля Формат"> | ||
+ | <base/> | ||
+ | <fieldgroups/> | ||
+ | </type> | ||
+ | <type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Разрешение" title="Справочник для поля Разрешение"> | ||
+ | <base/> | ||
+ | <fieldgroups/> | ||
+ | </type> | ||
+ | <type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Ширина" title="Справочник для поля Ширина"> | ||
+ | <base/> | ||
+ | <fieldgroups/> | ||
+ | </type> | ||
+ | <type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Высота" title="Справочник для поля Высота"> | ||
+ | <base/> | ||
+ | <fieldgroups/> | ||
+ | </type> | ||
+ | </types> | ||
+ | <objects> | ||
+ | <object id="6d13e8163598d3d629f1375669697083" name="10" type-id="Справочник для поля Размер"/> | ||
+ | <object id="656370e0688650d7c24fa9627a9125ee" name="Красный" type-id="Справочник для поля Цвет"/> | ||
+ | <object id="896ff62a1fb8e5726b72111dd98c7ce6" name="Широкий" type-id="Справочник для поля Формат"/> | ||
+ | <object id="72d6451ca325017e675f20a8495ed6ac" name="12" type-id="Справочник для поля Размер"/> | ||
+ | <object id="57928cbc4b3a3a314c161d812580f35c" name="Низкое" type-id="Справочник для поля Разрешение"/> | ||
+ | <object id="b843bf0a193bf1dd4bc17e2fae57a086" name="150" type-id="Справочник для поля Ширина"/> | ||
+ | <object id="4c8ee9c8613e22e5203f64d5c1af6af7" name="300" type-id="Справочник для поля Высота"/> | ||
+ | <object id="f180ca9d002152f73beacd5185fb9fcf" name="Широкий" type-id="Справочник для поля Формат"/> | ||
+ | </objects> | ||
+ | <pages> | ||
+ | <page id="bd894143-7517-11e2-9969-3085a937bf85"> | ||
+ | <properties> | ||
+ | <group name="cenovye_svojstva" title="Ценовые свойства"> | ||
+ | <property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="price"/> | ||
+ | <title>Цена</title> | ||
+ | <value currency_code="RUR"><![CDATA[100.00]]></value> | ||
+ | </property> | ||
+ | </group> | ||
+ | <group name="catalog_stores_props" title="Склады"> | ||
+ | <property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="float"/> | ||
+ | <title>Общее количество на складах</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | </group> | ||
+ | <group name="catalog_option_props" title="Опционные свойства" visible="visible"> | ||
+ | <property name="Размер" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Размер</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | <property name="Цвет" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Цвет</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | <property name="Формат" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Формат</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | </group> | ||
+ | </properties> | ||
+ | </page> | ||
+ | <page id="bd894143-7517-11e2-9969-3085a937bf85"> | ||
+ | <properties> | ||
+ | <group name="cenovye_svojstva" title="Ценовые свойства"> | ||
+ | <property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="price"/> | ||
+ | <title>Цена</title> | ||
+ | <value currency_code="RUR"><![CDATA[200.00]]></value> | ||
+ | </property> | ||
+ | </group> | ||
+ | <group name="catalog_stores_props" title="Склады"> | ||
+ | <property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="float"/> | ||
+ | <title>Общее количество на складах</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | </group> | ||
+ | <group name="catalog_option_props" title="Опционные свойства" visible="visible"> | ||
+ | <property name="Размер" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Размер</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | <property name="Разрешение" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Разрешение</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | </group> | ||
+ | </properties> | ||
+ | </page> | ||
+ | <page id="cd9289c1-3759-11e2-b000-0015175f17cd"> | ||
+ | <properties> | ||
+ | <group name="cenovye_svojstva" title="Ценовые свойства"> | ||
+ | <property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="price"/> | ||
+ | <title>Цена</title> | ||
+ | <value currency_code="RUR"><![CDATA[300.00]]></value> | ||
+ | </property> | ||
+ | </group> | ||
+ | <group name="catalog_stores_props" title="Склады"> | ||
+ | <property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="float"/> | ||
+ | <title>Общее количество на складах</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | </group> | ||
+ | <group name="catalog_option_props" title="Опционные свойства" visible="visible"> | ||
+ | <property name="Ширина" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Ширина</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | <property name="Высота" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Высота</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | <property name="Формат" type="optioned" allow-runtime-add="1" visible="visible"> | ||
+ | <type name="Составное" data-type="optioned" multiple="multiple"/> | ||
+ | <title>Формат</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | </group> | ||
+ | </properties> | ||
+ | </page> | ||
+ | <page id="dsfsdf34-4567-bb34-gf34-00123fd123fd" update-only="1"> | ||
+ | <properties> | ||
+ | <group name="cenovye_svojstva" title="Ценовые свойства"> | ||
+ | <property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="price"/> | ||
+ | <title>Цена</title> | ||
+ | <value currency_code="RUR"><![CDATA[400.00]]></value> | ||
+ | </property> | ||
+ | </group> | ||
+ | <group name="catalog_stores_props" title="Склады"> | ||
+ | <property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1"> | ||
+ | <type data-type="float"/> | ||
+ | <title>Общее количество на складах</title> | ||
+ | <value/> | ||
+ | </property> | ||
+ | </group> | ||
+ | </properties> | ||
+ | </page> | ||
+ | </pages> | ||
+ | <options> | ||
+ | <entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Размер"> | ||
+ | <option int="1" float="0" object-id="6d13e8163598d3d629f1375669697083"/> | ||
+ | <option int="1" float="0" object-id="72d6451ca325017e675f20a8495ed6ac"/> | ||
+ | </entity> | ||
+ | <entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Цвет"> | ||
+ | <option int="1" float="0" object-id="656370e0688650d7c24fa9627a9125ee"/> | ||
+ | </entity> | ||
+ | <entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Формат"> | ||
+ | <option int="1" float="0" object-id="896ff62a1fb8e5726b72111dd98c7ce6"/> | ||
+ | <option int="1" float="0" object-id="f180ca9d002152f73beacd5185fb9fcf"/> | ||
+ | </entity> | ||
+ | <entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Размер"> | ||
+ | <option int="1" float="0" object-id="6d13e8163598d3d629f1375669697083"/> | ||
+ | <option int="1" float="0" object-id="72d6451ca325017e675f20a8495ed6ac"/> | ||
+ | </entity> | ||
+ | <entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Разрешение"> | ||
+ | <option int="1" float="0" object-id="57928cbc4b3a3a314c161d812580f35c"/> | ||
+ | </entity> | ||
+ | <entity page-id="cd9289c1-3759-11e2-b000-0015175f17cd" field-name="Ширина"> | ||
+ | <option int="1" float="0" object-id="b843bf0a193bf1dd4bc17e2fae57a086"/> | ||
+ | </entity> | ||
+ | <entity page-id="cd9289c1-3759-11e2-b000-0015175f17cd" field-name="Высота"> | ||
+ | <option int="1" float="0" object-id="4c8ee9c8613e22e5203f64d5c1af6af7"/> | ||
+ | </entity> | ||
+ | <entity page-id="cd9289c1-3759-11e2-b000-0015175f17cd" field-name="Формат"> | ||
+ | <option int="1" float="0" object-id="896ff62a1fb8e5726b72111dd98c7ce6"/> | ||
+ | <option int="1" float="0" object-id="f180ca9d002152f73beacd5185fb9fcf"/> | ||
+ | </entity> | ||
+ | </options> | ||
+ | </umidump> | ||
</source> | </source> | ||
[[category:Интеграция с 1С]][[Категория:Верстка в XSLT]] | [[category:Интеграция с 1С]][[Категория:Верстка в XSLT]] |
Версия 10:03, 14 марта 2014
Актуально для версии 2.9.5
Задача
Если у Вас часть характеристик товаров выгружается в файле offers, например:
<Предложение>
<Ид>cd9289c1-3759-11e2-b000-0015175f17cd#4fdsf5fd-3759-11e2-b000-0015175f17cd</Ид>
<Наименование>Предложение3</Наименование>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Ширина</Наименование>
<Значение>150</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<Цены>
<Цена>
<Представление>300 RUR за шт</Представление>
<ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены>
<ЦенаЗаЕдиницу>300.00</ЦенаЗаЕдиницу>
<Валюта>RUR</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
</Цены>
</Предложение>
И ид предложения строится по принципу 'ид_товара'#'ид_предложения', то такие предложения не будут нормально интерпретироваться UMI.CMS. Данные характеристики удобно будет импортировать в виде опционных свойств, для этого необходимо кастомизировать шаблон импорта данных в формате commerceML. Системный шаблон лежит по пути /xsl/import/commerceML2.xsl, редактировать его ни в коем случае нельзя, если Вы не хотите нарушить лицензионный договор. Все кастомизации нужно проводить в файле /xsl/import/custom/commerceML2.xsl, Вы можете прямо копировать целые template'ы и переносить их из системного шаблона в кастомный, в котором уже можно вносить правки.
Ниже приведен пример кастомного шаблона, для его применений скопируйте код шаблона в файл /xsl/import/custom/commerceML2.xsl.
Решение
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl"
xmlns:udt="http://umi-cms.ru/2007/UData/templates"
extension-element-prefixes="php"
exclude-result-prefixes="xsl php udt">
<xsl:template match="ПакетПредложений">
<meta>
<source-name>commerceML2</source-name>
</meta>
<types>
<type id="root-guides-type" guid="root-guides-type" title="Справочники" parent-id="0" locked="locked">
<base/>
<fieldgroups/>
</type>
<xsl:apply-templates select="Предложения/Предложение" mode="types"/>
</types>
<objects>
<xsl:apply-templates select="Предложения/Предложение" mode="objects"/>
</objects>
<pages>
<xsl:apply-templates select="Предложения/Предложение" mode="pages"/>
</pages>
<options>
<xsl:apply-templates select="Предложения/Предложение" mode="entities"/>
</options>
</xsl:template>
<xsl:key name="guid_name" match="ПакетПредложений/Предложения/Предложение/ХарактеристикиТовара/ХарактеристикаТовара" use="Наименование"/>
<xsl:template match="Предложения/Предложение" mode="types">
<xsl:for-each select="ХарактеристикиТовара">
<xsl:if test="generate-id(ХарактеристикаТовара) = generate-id(key('guid_name', ХарактеристикаТовара/Наименование))">
<type parent-id="root-guides-type" guide="guide" public="public">
<xsl:attribute name="id">
<xsl:value-of select="concat('Справочник для поля ', ХарактеристикаТовара/Наименование)"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="concat('Справочник для поля ', ХарактеристикаТовара/Наименование)"/>
</xsl:attribute>
<base/>
<fieldgroups/>
</type>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="Предложения/Предложение" mode="objects">
<xsl:for-each select="ХарактеристикиТовара">
<object id="{php:function('md5', concat(substring-after(../Ид, '#'), ХарактеристикаТовара/Значение))}" name="{ХарактеристикаТовара/Значение}">
<xsl:attribute name="type-id">
<xsl:value-of select="concat('Справочник для поля ', ХарактеристикаТовара/Наименование)"/>
</xsl:attribute>
</object>
</xsl:for-each>
</xsl:template>
<xsl:template match="Предложения/Предложение" mode="pages">
<xsl:choose>
<xsl:when test="contains(Ид, '#')">
<page id="{substring-before(Ид, '#')}">
<properties>
<xsl:apply-templates select="Цены" />
<group name="catalog_stores_props" title="Склады">
<property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1">
<type data-type="float" />
<title>Общее количество на складах</title>
<value><xsl:value-of select="Количество"/></value>
</property>
</group>
<group name="catalog_option_props" title="Опционные свойства" visible="visible">
<xsl:for-each select="ХарактеристикиТовара">
<property name="{ХарактеристикаТовара/Наименование}" type="optioned" allow-runtime-add="1" visible="visible" >
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>
<xsl:value-of select="ХарактеристикаТовара/Наименование"/>
</title>
<value/>
</property>
</xsl:for-each>
</group>
</properties>
</page>
</xsl:when>
<xsl:otherwise>
<page id="{Ид}" update-only="1">
<properties>
<xsl:apply-templates select="Цены" />
<group name="catalog_stores_props" title="Склады">
<property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1">
<type data-type="float" />
<title>Общее количество на складах</title>
<value><xsl:value-of select="Количество"/></value>
</property>
</group>
</properties>
</page>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="Предложения/Предложение" mode="entities">
<xsl:for-each select="ХарактеристикиТовара">
<entity page-id="{substring-before(../Ид, '#')}" field-name='{ХарактеристикаТовара/Наименование}'>
<xsl:apply-templates select="//Предложения/Предложение" mode="options">
<xsl:with-param name="char_name" select="ХарактеристикаТовара/Наименование"/>
</xsl:apply-templates>
</entity>
</xsl:for-each>
</xsl:template>
<xsl:template match="Предложение" mode="options">
<xsl:param name="char_name" />
<xsl:variable name="offer_id" select="substring-after(Ид, '#')"/>
<xsl:for-each select="ХарактеристикиТовара/ХарактеристикаТовара">
<xsl:if test="Наименование = $char_name">
<option int="1" float="0" object-id="{php:function('md5', concat($offer_id, Значение))}"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Протестировать его Вы можете со следующим оffers.xml:
<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2014-03-11T16:01:38">
<ПакетПредложений СодержитТолькоИзменения="false">
<Ид>af29f627-00d2-4356-9faf-70d50708a7e3#</Ид>
<Наименование>Пакет предложений (Каталог)</Наименование>
<ИдКаталога>af29f627-00d2-4356-9faf-70d50708a7e3</ИдКаталога>
<ИдКлассификатора>af29f627-00d2-4356-9faf-70d50708a7e3</ИдКлассификатора>
<Владелец/>
<ТипыЦен>
<ТипЦены>
<Ид>948abd4a-a835-11e3-a14f-406186c19995</Ид>
<Наименование>Сайт</Наименование>
<Валюта>RUR</Валюта>
<Налог>
<Наименование>НДС</Наименование>
<УчтеноВСумме>false</УчтеноВСумме>
</Налог>
</ТипЦены>
</ТипыЦен>
<Предложения>
<Предложение>
<Ид>bd894143-7517-11e2-9969-3085a937bf85#8940bd53-5007-11e1-80e1-002590000fa5</Ид>
<Наименование>Предложение1</Наименование>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Размер</Наименование>
<Значение>10</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Цвет</Наименование>
<Значение>Красный</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Формат</Наименование>
<Значение>Широкий</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<Цены>
<Цена>
<Представление>100 RUR за шт</Представление>
<ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены>
<ЦенаЗаЕдиницу>100.00</ЦенаЗаЕдиницу>
<Валюта>RUR</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
</Цены>
</Предложение>
<Предложение>
<Ид>bd894143-7517-11e2-9969-3085a937bf85#8940bd54-5007-11e1-80e1-002590000fa5</Ид>
<Наименование>Предложение2</Наименование>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Размер</Наименование>
<Значение>12</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Разрешение</Наименование>
<Значение>Низкое</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<Цены>
<Цена>
<Представление>200 RUR за шт</Представление>
<ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены>
<ЦенаЗаЕдиницу>200.00</ЦенаЗаЕдиницу>
<Валюта>RUR</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
</Цены>
</Предложение>
<Предложение>
<Ид>cd9289c1-3759-11e2-b000-0015175f17cd#4fdsf5fd-3759-11e2-b000-0015175f17cd</Ид>
<Наименование>Предложение3</Наименование>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Ширина</Наименование>
<Значение>150</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Высота</Наименование>
<Значение>300</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<ХарактеристикиТовара>
<ХарактеристикаТовара>
<Наименование>Формат</Наименование>
<Значение>Широкий</Значение>
</ХарактеристикаТовара>
</ХарактеристикиТовара>
<Цены>
<Цена>
<Представление>300 RUR за шт</Представление>
<ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены>
<ЦенаЗаЕдиницу>300.00</ЦенаЗаЕдиницу>
<Валюта>RUR</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
</Цены>
</Предложение>
<Предложение>
<Ид>dsfsdf34-4567-bb34-gf34-00123fd123fd</Ид>
<Наименование>Предложение4</Наименование>
<Цены>
<Цена>
<Представление>400 RUR за шт</Представление>
<ИдТипаЦены>948abd4a-a835-11e3-a14f-406186c19995</ИдТипаЦены>
<ЦенаЗаЕдиницу>400.00</ЦенаЗаЕдиницу>
<Валюта>RUR</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
</Цены>
</Предложение>
</Предложения>
</ПакетПредложений>
</КоммерческаяИнформация>
Результатом работы кастомного шаблона при таком offers будет следующий umidump:
<?xml version="1.0" encoding="utf-8"?>
<umidump xmlns:xlink="http://www.w3.org/TR/xlink" version="2.0">
<meta>
<source-name>commerceML2</source-name>
</meta>
<types>
<type id="root-guides-type" guid="root-guides-type" title="Справочники" parent-id="0" locked="locked">
<base/>
<fieldgroups/>
</type>
<type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Размер" title="Справочник для поля Размер">
<base/>
<fieldgroups/>
</type>
<type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Цвет" title="Справочник для поля Цвет">
<base/>
<fieldgroups/>
</type>
<type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Формат" title="Справочник для поля Формат">
<base/>
<fieldgroups/>
</type>
<type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Разрешение" title="Справочник для поля Разрешение">
<base/>
<fieldgroups/>
</type>
<type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Ширина" title="Справочник для поля Ширина">
<base/>
<fieldgroups/>
</type>
<type parent-id="root-guides-type" guide="guide" public="public" id="Справочник для поля Высота" title="Справочник для поля Высота">
<base/>
<fieldgroups/>
</type>
</types>
<objects>
<object id="6d13e8163598d3d629f1375669697083" name="10" type-id="Справочник для поля Размер"/>
<object id="656370e0688650d7c24fa9627a9125ee" name="Красный" type-id="Справочник для поля Цвет"/>
<object id="896ff62a1fb8e5726b72111dd98c7ce6" name="Широкий" type-id="Справочник для поля Формат"/>
<object id="72d6451ca325017e675f20a8495ed6ac" name="12" type-id="Справочник для поля Размер"/>
<object id="57928cbc4b3a3a314c161d812580f35c" name="Низкое" type-id="Справочник для поля Разрешение"/>
<object id="b843bf0a193bf1dd4bc17e2fae57a086" name="150" type-id="Справочник для поля Ширина"/>
<object id="4c8ee9c8613e22e5203f64d5c1af6af7" name="300" type-id="Справочник для поля Высота"/>
<object id="f180ca9d002152f73beacd5185fb9fcf" name="Широкий" type-id="Справочник для поля Формат"/>
</objects>
<pages>
<page id="bd894143-7517-11e2-9969-3085a937bf85">
<properties>
<group name="cenovye_svojstva" title="Ценовые свойства">
<property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1">
<type data-type="price"/>
<title>Цена</title>
<value currency_code="RUR"><![CDATA[100.00]]></value>
</property>
</group>
<group name="catalog_stores_props" title="Склады">
<property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1">
<type data-type="float"/>
<title>Общее количество на складах</title>
<value/>
</property>
</group>
<group name="catalog_option_props" title="Опционные свойства" visible="visible">
<property name="Размер" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Размер</title>
<value/>
</property>
<property name="Цвет" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Цвет</title>
<value/>
</property>
<property name="Формат" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Формат</title>
<value/>
</property>
</group>
</properties>
</page>
<page id="bd894143-7517-11e2-9969-3085a937bf85">
<properties>
<group name="cenovye_svojstva" title="Ценовые свойства">
<property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1">
<type data-type="price"/>
<title>Цена</title>
<value currency_code="RUR"><![CDATA[200.00]]></value>
</property>
</group>
<group name="catalog_stores_props" title="Склады">
<property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1">
<type data-type="float"/>
<title>Общее количество на складах</title>
<value/>
</property>
</group>
<group name="catalog_option_props" title="Опционные свойства" visible="visible">
<property name="Размер" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Размер</title>
<value/>
</property>
<property name="Разрешение" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Разрешение</title>
<value/>
</property>
</group>
</properties>
</page>
<page id="cd9289c1-3759-11e2-b000-0015175f17cd">
<properties>
<group name="cenovye_svojstva" title="Ценовые свойства">
<property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1">
<type data-type="price"/>
<title>Цена</title>
<value currency_code="RUR"><![CDATA[300.00]]></value>
</property>
</group>
<group name="catalog_stores_props" title="Склады">
<property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1">
<type data-type="float"/>
<title>Общее количество на складах</title>
<value/>
</property>
</group>
<group name="catalog_option_props" title="Опционные свойства" visible="visible">
<property name="Ширина" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Ширина</title>
<value/>
</property>
<property name="Высота" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Высота</title>
<value/>
</property>
<property name="Формат" type="optioned" allow-runtime-add="1" visible="visible">
<type name="Составное" data-type="optioned" multiple="multiple"/>
<title>Формат</title>
<value/>
</property>
</group>
</properties>
</page>
<page id="dsfsdf34-4567-bb34-gf34-00123fd123fd" update-only="1">
<properties>
<group name="cenovye_svojstva" title="Ценовые свойства">
<property name="price" title="Цена" type="price" is-public="1" allow-runtime-add="1">
<type data-type="price"/>
<title>Цена</title>
<value currency_code="RUR"><![CDATA[400.00]]></value>
</property>
</group>
<group name="catalog_stores_props" title="Склады">
<property name="common_quantity" title="Общее количество на складах" type="float" is-public="1" allow-runtime-add="1">
<type data-type="float"/>
<title>Общее количество на складах</title>
<value/>
</property>
</group>
</properties>
</page>
</pages>
<options>
<entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Размер">
<option int="1" float="0" object-id="6d13e8163598d3d629f1375669697083"/>
<option int="1" float="0" object-id="72d6451ca325017e675f20a8495ed6ac"/>
</entity>
<entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Цвет">
<option int="1" float="0" object-id="656370e0688650d7c24fa9627a9125ee"/>
</entity>
<entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Формат">
<option int="1" float="0" object-id="896ff62a1fb8e5726b72111dd98c7ce6"/>
<option int="1" float="0" object-id="f180ca9d002152f73beacd5185fb9fcf"/>
</entity>
<entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Размер">
<option int="1" float="0" object-id="6d13e8163598d3d629f1375669697083"/>
<option int="1" float="0" object-id="72d6451ca325017e675f20a8495ed6ac"/>
</entity>
<entity page-id="bd894143-7517-11e2-9969-3085a937bf85" field-name="Разрешение">
<option int="1" float="0" object-id="57928cbc4b3a3a314c161d812580f35c"/>
</entity>
<entity page-id="cd9289c1-3759-11e2-b000-0015175f17cd" field-name="Ширина">
<option int="1" float="0" object-id="b843bf0a193bf1dd4bc17e2fae57a086"/>
</entity>
<entity page-id="cd9289c1-3759-11e2-b000-0015175f17cd" field-name="Высота">
<option int="1" float="0" object-id="4c8ee9c8613e22e5203f64d5c1af6af7"/>
</entity>
<entity page-id="cd9289c1-3759-11e2-b000-0015175f17cd" field-name="Формат">
<option int="1" float="0" object-id="896ff62a1fb8e5726b72111dd98c7ce6"/>
<option int="1" float="0" object-id="f180ca9d002152f73beacd5185fb9fcf"/>
</entity>
</options>
</umidump>