1

私は次のような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 は、すべての subNode 内に配置できます。node は subNode 内にのみ存在できます。

そして、それを次のようなテーブルに変換したいと思います。

+-----------+-----+-----+-----+
| 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 に答える