我有xml-Data,如:
<rootNode>
<subNode name="sn1">
<node name="field2" value="23"/>
<node name="field4" value="24"/>
</subNode>
<subNode name="sn2">
<node name="field2" value="39"/>
</subNode>
<subNode name="sn3">
<subNode name="f1">
<node name="field2" value="23"/>
<node name="field4" value="24"/>
</subNode>
<node name="field2" value="23"/>
<node name="field8" value="24"/>
</subNode>
</rootNode>
节点的深度是无限的。 sunNode可以在每个子节点内。节点可以只在子节点内。
我想将其转换为如下表:
+-----------+-----+-----+-----+
| Field | sn1 | sn2 | sn3 |
|-----------+-----+-----+-----+
|field2 | 23 | 39 | 23 |
|-----------+-----+-----+-----+
|field4 | 24 | n/a | n/a |
|-----------+-----+-----+-----+
|field8 | n/a | n/a | 24 |
|-----------+-----+-----+-----+
|f1->field2 | n/a | n/a | 23 |
|-----------+-----+-----+-----+
|f1->field4 | n/a | n/a | 24 +
+-----------+-----+-----+-----+
所以我必须在每个“subNode”中搜索每个可能的“节点”,并为每个“subNode”创建一行。然后,如果有top-SubNode的条目,则显示该值。
使用
<xsl:for-each select="subNode//node()">
<tr>
<td><xsl:value-of select="@name"/></td>
</tr>
</xsl:for-each>
我至少得到了数据中所有元素的列表。但是这个清单并不明显。
我找到了this,但无法将其应用于我的需求。
有什么建议吗?
答案 0 :(得分:0)
XSLT将XML的一种形式的XML转换为另一种形式的XML。它不会将XML转换为您自己显示的格式化显示。为此,你需要使用类似FOP的东西。