Учитывая этот исходный XML:
<output>
<report>
<C01>
<InvID>001</InvID>
<Daily>
<row id="0000">1</row>
<row id="0001">2</row>
<row id="0002">5</row>
<row id="0003">4</row>
</Daily>
</C01>
<C02>
<InvID>002</InvID>
<Daily>
<row id="0000">4</row>
<row id="0001">3</row>
<row id="0002">2</row>
<row id="0003">5</row>
</Daily>
</C02>
<C03>
<InvID>001</InvID>
<Daily>
<row id="0000">3</row>
<row id="0001">7</row>
<row id="0002">2</row>
<row id="0003">4</row>
</Daily>
</C03>
<report>
<output>
Как я могу произвести этот вывод:
<Data invID=001>
<Value>1</Value>
<Value>2</Value>
<Value>5</Value>
<Value>4</Value>
<Value>3</Value>
<Value>7</Value>
<Value>2</Value>
<Value>4</Value>
</Data>
<Data invID=002>
<Value>4</Value>
<Value>3</Value>
<Value>2</Value>
<Value>5</Value>
</Data>
Я пытался использовать что-то вроде этого в качестве основы, но это кажется неправильным:
<xsl:template match="output/report">
<xsl:for-each select="*[starts-with(name(), 'C') and InvID != '']">
<xsl:sort select="InvID" />
<xsl:element name="Data">
<xsl:attribute name="invID">
<xsl:value-of select="InvID" />
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:template>
Мне нужно объединить все элементы, которые имеют общий InvID
, вывести один элемент Data
для этой группы исходных элементов, а затем вывести все их значения элемента row
в дочерние элементы этого элемента Data
(Value
).
Можно ли это сделать в XPath 1.0?
C01
,C02
,C03
и т. д. Не знаю, как это указать... - person DonBoitnott   schedule 10.02.2015