【发布时间】:2009-06-04 10:45:30
【问题描述】:
我有一些像这样的分层 XML:
<node text="a" value="1">
<node text="gga" value="5">
<node text="dh" value="9">
<node text="tyfg" value="4">
</node>
</node>
</node>
<node text="dfhgf" value="7">
<node text="fdsg" value="2">
</node>
</node>
</node>
元素的名称一直是相同的(“节点”),并且事先不知道层次结构的深度 - 在上面的示例中,最深的叶子是四个向下,但它可以是任何深度。
我需要做的是获取此 XML 并将其展平为 HTML 表格。表中的列数应该等于最深元素的深度,加上每个元素的 value 属性列。 “值”应该出现在表格的最右边一列,因此输出行不能有参差不齐的边缘。每个节点都应该有一行,无论它处于什么级别。上面的例子应该转化为:
<table>
<tr>
<td>a</td>
<td></td>
<td></td>
<td></td>
<td>1</td>
</tr>
<tr>
<td>a</td>
<td>gga</td>
<td></td>
<td></td>
<td>5</td>
</tr>
<tr>
<td>a</td>
<td>gga</td>
<td>dh</td>
<td></td>
<td>9</td>
</tr>
<tr>
<td>a</td>
<td>gga</td>
<td>dh</td>
<td>tyfg</td>
<td>4</td>
</tr>
<tr>
<td>a</td>
<td>dfhgf</td>
<td></td>
<td></td>
<td>7</td>
</tr>
<tr>
<td>a</td>
<td>dfhgf</td>
<td>fdsg</td>
<td></td>
<td>2</td>
</tr>
</table>
有人有一些聪明的 XSLT 可以实现这一点吗?
【问题讨论】:
-
看起来您正在尝试可视化结构,在每一行上重复父元素链。你真的需要它成为一张桌子吗?结果在我看来不像是实际的表格数据。
-
是的,目标是可视化结构。一张桌子对我来说似乎是最好的选择,但我对其他建议持开放态度。正如你所说,我真正需要的是每一行的元素链。