Мой входной XML -
<DataArea>
<ReceiveDelivery>
<ReceiveDeliveryHeader>
.....
</ReceiveDeliveryHeader>
<ReceiveDeliveryItem>
....
</ReceiveDeliveryItem>
<ReceiveDeliveryItem>
....
</ReceiveDeliveryItem>
<ReceiveDeliveryHeader>
.....
</ReceiveDeliveryHeader>
<ReceiveDeliveryItem>
....
</ReceiveDeliveryItem>
</ReceiveDelivery>
</DataArea>
И желаемый вывод -
<DataArea>
<ReceiveDelivery>
<ReceiveDeliveryHeader>
.....
</ReceiveDeliveryHeader>
<ReceiveDeliveryItem>
....
</ReceiveDeliveryItem>
<ReceiveDeliveryItem>
....
</ReceiveDeliveryItem>
</ReceiveDelivery>
<ReceiveDelivery>
<ReceiveDeliveryHeader>
.....
</ReceiveDeliveryHeader>
<ReceiveDeliveryItem>
....
</ReceiveDeliveryItem>
</ReceiveDelivery>
</DataArea>
Может быть 1 или более элементов, следующих за заголовком.Я хочу, чтобы родительский узел ReceiveDelivery дублировался для каждого заголовка и элементов, которые следуют только за этим заголовком.Пожалуйста, помогите.
Спасибо Мартину за ваш вклад.
Я использую XSLT 2.0.Вот мой код
<xsl:stylesheet version="2.0" xmlns="http://schema.infor.com/InforOAGIS/2" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xsl:output method="xml" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ReceiveDelivery">
<xsl:for-each-group select="*" group-starting-with="ReceiveDeliveryHeader">
<ReceiveDelivery>
<xsl:copy-of select="current-group()"/>
</ReceiveDelivery>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
Это так и должно быть?Но вывод такой же, как ввод.Не могли бы вы помочь?