dannis
Новичок
Зарегистрирован: 02.03.2009
Сообщения: 1
|
[13601]
Пн Мар 02, 2009 02:12
объединение значений одинаковых элементов
Всем привет,
помогите pls решить следующую задачу.
есть исходный XML вида:
Код:
<Order>
<Purchaser>1</Purchaser>
<PurchNumber>0001</PurchNumber>
<Article>
<Number>10001</Number>
<Description>Диван угловой</Description>
<Description>желтый полистирол</Description>
<Description>высота 1100</Description>
<Price>100.00</Price>
<Qty>2</Qty>
</Article>
<Article>
<Number>10001</Number>
<Description>Кресло массажное</Description>
<Description>цвет черный кожа</Description>
<Description>высота 1200</Description>
<Price>50.00</Price>
<Qty>10</Qty>
</Article>
<Article>
...
...
</Article>
...
<TotalWeight>1200</TotalWeight>
<TotalAmount>500000</TotalAmount>
</Order>
на выходе необходимо объединить значения элементов <Description> в один элемент для каждого артикула. Все остальные элементы исходного документа должны остаться без изменений.
Т.е. выходной документ должен выглядеть так:
Код:
<Order>
<Purchaser>1</Purchaser>
<PurchNumber>0001</PurchNumber>
<Article>
<Number>10001</Number>
<Description>Диван угловой желтый полистирол высота 1100</Description>
<Price>100.00</Price>
<Qty>2</Qty>
</Article>
<Article>
<Number>10001</Number>
<Description>Кресло массажное цвет черный кожа высота 1200</Description>
<Price>50.00</Price>
<Qty>10</Qty>
</Article>
<Article>
...
...
</Article>
...
<TotalWeight>1200</TotalWeight>
<TotalAmount>500000</TotalAmount>
</Order>
Заранее спасибо!
|
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
|
[13604]
Пн Мар 02, 2009 23:46
Код: <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Description">
<xsl:if test="not(preceding-sibling::Description)">
<Description>
<xsl:apply-templates select="../Description" mode="concat"/>
</Description>
</xsl:if>
</xsl:template>
<xsl:template match="Description" mode="concat">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
_________________ С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
|