鉴于此源 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>
我需要聚合所有共享一个 common 的项目,为该组源元素InvID
输出一个Data
元素,然后将它们的所有row
元素值输出到该元素的子Data
元素 ( Value
)。
这可以在 XPath 1.0 中完成吗?