1

我有 xml 数据,例如:

<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 +
+-----------+-----+-----+-----+

所以我必须在每个“子节点”中搜索每个可能的“节点”并为每个节点创建一行。然后,如果存在 top-SubNode 条目,则显示该值。

<xsl:for-each select="subNode//node()">
    <tr>
        <td><xsl:value-of select="@name"/></td>
    </tr>
</xsl:for-each>

我至少得到了数据中所有元素的列表。但该列表并不明确。

我发现了这一点,但无法将其应用于我的需求。

有什么建议么?

4

1 回答 1

0

XSLT 将一种形式的 XML 转换为另一种形式的 XML。它不会像您自己显示的那样将 XML 转换为格式化的显示。为此,您需要使用 FOP 之类的东西。

于 2012-07-19T13:12:47.037 回答