【发布时间】:2012-06-02 15:15:45
【问题描述】:
这是输入文件。
所有这些块都包裹在<allocfile> 标签中,但没有出现,不知道为什么?所有这些块都包裹在顶级元素<xml>中。
<XML>
<AllocFile>
<alc>1</alc>
<No>11/10</No>
<DT>20090401</DT>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<AMOUNT>8000000</AMOUNT>
<Code>033195</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>2</alc>
<No>14/10</No>
<DT>20090401</DT>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<AMOUNT>8400000</AMOUNT>
<Code>033195</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>3</alc>
<No>74/10</No>
<DT>20090401</DT>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<AMOUNT>8740000</AMOUNT>
<Code>033195</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>2</alc>
<No>74/10</No>
<DT>20090401</DT>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<AMOUNT>74512</AMOUNT>
<Code>033118</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>3</alc>
<No>14/10</No>
<DT>20090401</DT>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<AMOUNT>986541</AMOUNT>
<Code>033147</Code>
<hd1>1234</hd1>
</AllocFile>
</XML>
输出是
<Header1>
<Hd1>1234</Hd1>
<CodeHeader>
<Code>033195</Code>
<Header2>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<allocheader>
<alc>1</alc>
<No>11/10</No>
<DT>20090401</DT>
<AMOUNT>8000000</AMOUNT>
</allocheader>
<allocheader>
<alc>2</alc>
<No>14/10</No>
<DT>20090401</DT>
<AMOUNT>8400000</AMOUNT>
</allocheader>
<allocheader>
<alc>3</alc>
<No>74/10</No>
<DT>20090401</DT>
<AMOUNT>8740000</AMOUNT>
</allocheader>
</Header2>
</CodeHeader>
<CodeHeader>
<Code>033118</Code>
<Header2>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<allocheader>
<alc>2</alc>
<No>74/10</No>
<DT>20090401</DT>
<AMOUNT>74512</AMOUNT>
</allocheader>
</Header2>
</codeHeader>
<CodeHeader>
<Code>033147</Code>
<Header2>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<allocheader>
<alc>3</alc>
<No>14/10</No>
<DT>20090401</DT>
<AMOUNT>986541</AMOUNT>
</allocheader>
</Header2>
</CodeHeader>
</Header1>
输入文件需要在多个key的基础上进行排序和分组。我继续使用concat 函数和 Muenchian 方法,但从网络上并没有太多帮助。我正在使用 XSLT 1.0。
分组规则
-
文件中的所有节点都有
<hd1>,值为1234..,这将成为第一个键组,并在输出中显示为<Header1>- 分组的第二个键是节点代码。具有相同值的节点被组合在一起。显示为。代码头
第二个key是节点组
G_H、FUN、oH、y。如果所有这些都具有相同的节点值,则它们将组合在一起。它在输出中显示为<Header2>在节点
<alc>、<No>、<DT>、<AMOUNT>上不会发生分组。它们在每个组中都有不同的值。
【问题讨论】:
-
提供的所需输出不是格式良好的 XML 文档 -- 请正确。
-
在 o/p xml 末尾添加了 标签,使其成为格式良好的 xml 文档
-
@Manks:您需要在任何代码示例前面加上四个空格才能显示出来。我已经为你做了这个,所以它现在应该都能正确显示了!
-
您说“文件中的所有节点都将具有值为 1234 的
<hd1>”?会一直这样吗?如果<hd1>包含另一个值会怎样?如果它们都相同,则您并没有真正按它们进行分组,而只需要一个键。 -
我已经更新了我当前的答案以应对扩展的要求
标签: xml xslt xslt-1.0 xslt-grouping muenchian-grouping