Помогите немного пожалуйста, что-то запутался немного.
Вот есть объект покупателя, у которого есть данные об адресах доставки
<group id="209" name="delivery">
<title>Доставка</title>
<property id="286" name="delivery_addresses" type="relation" multiple="multiple">
<title>Адреса доставки</title>
<value>
<item id="6209" name="Address for customer #6177" type-id="37" type-guid="emarket-deliveryaddress" xlink:href="uobject://6209"/>
<item id="6213" name="Address for customer #6177" type-id="37" type-guid="emarket-deliveryaddress" xlink:href="uobject://6213"/>
</value>
</property>
</group>
Внутри объекта адреса уже есть конструкции вида
<property id="70" name="city" type="string">
<title>Город</title>
<value>Москва</value>
</property>
Вот мне надо вытащить данные типа "Москва, ул. Такаято, дом такой-то". Но не придумал как =(.
где именно вы его вытягиваете?
Возможно вам хватит такого кода:
Вначале, надо получить id адреса из данных у покупателя. Предположим, у нас уже есть переменная с данными о пользователе и нам нужен первый из его адресов.
<xsl:variable name="adress_id" select="$user_info//property[@name='delivery_addresses']/value/item[1]/@id" />
Затем, берем объект адреса
<xsl:variable name="adress_info" select="document(concat('uobject://',$adress_id))/udata" />
Затем, перебираем property этого адреса и выводим их в нужном виде.
Например так:
<xsl:apply-templates select="$adress_info//property" mode="adres_info"/>
и шаблон для их вывода:
<xsl:template match="property" mode="adres_info">
<xsl:value-of select="title"/>:
<xsl:value-of select="value"/><br/>
</xsl:template>
P.S. некоторые поля в объекте адреса вам не нужны, так что прописывайте в вызове property ограничения. Так же помните что некоторые поля, например страна, это выпадающий список и там значение будет выводиться не
<xsl:value-of select="value"/>
а
<xsl:value-of select="value/item/@name"/>