【发布时间】:2014-02-15 00:27:55
【问题描述】:
我正在尝试从一个文件创建一组 xml,该文件包含多个标题行,后跟每个标题的多个详细信息行。
这是原始 XML 的示例:
编辑:标题表后面的详细信息表的数量会有所不同。因此,Sheet[4]/FIELD1 并不总是具有 Header 的值。此外,该文件将始终具有一个或多个标题表。工作表是行。
编辑:XSLT-1.0
<Root>
<Sheet>
<FIELD1>Header</FIELD1>
<FIELD2>Value1</FIELD2>
<FIELD3>Value2</FIELD3>
</Sheet>
<Sheet>
<FIELD1>Detail</FIELD1>
<FIELD2>Value3</FIELD2>
<FIELD3>Value4</FIELD3>
</Sheet>
<Sheet>
<FIELD1>Detail</FIELD1>
<FIELD2>Value5</FIELD2>
<FIELD3>Value6</FIELD3>
</Sheet>
<Sheet>
<FIELD1>Header</FIELD1>
<FIELD2>Value7</FIELD2>
<FIELD3>Value8</FIELD3>
</Sheet>
<Sheet>
<FIELD1>Detail</FIELD1>
<FIELD2>Value9</FIELD2>
<FIELD3>Value10</FIELD3>
</Sheet>
<Sheet>
<FIELD1>Detail</FIELD1>
<FIELD2>Value11</FIELD2>
<FIELD3>Value12</FIELD3>
</Sheet>
<Sheet>
<FIELD1>Detail</FIELD1>
<FIELD2>Value13</FIELD2>
<FIELD3>Value14</FIELD3>
</Sheet>
</Root>
以下是输出的样子:
编辑:发票的数量将由抬头表(行)的数量决定。 LineItem 行将与标题后面的详细信息表数量相同。
<Root>
<Invoice AttribOne="Value1" AttribTwo="Value2" >
<LineItem LIAttribOne="Value3" LIAttribTwo="Value4"/>
<LineItem LIAttribOne="Value5" LIAttribTwo="Value6"/>
</Invoice>
<Invoice AttribOne="Value7" AttribTwo="Value8" >
<LineItem LIAttribOne="Value9" LIAttribTwo="Value10"/>
<LineItem LIAttribOne="Value11" LIAttribTwo="Value12"/>
<LineItem LIAttribOne="Value13" LIAttribTwo="Value14"/>
</Invoice>
</Root>
编辑:回答如下:
【问题讨论】:
-
好的。 Header 字段是如何识别的?还是详细信息字段? “标题”和“细节”这两个词重要吗?
-
Sheet/FIELD1 将始终具有 Header 或 Detail 的值。工作表之间没有其他区别。