2017-02-14 10 views
0

XMLテーブルをより大きなプロジェクトからHTMLテーブルに変換しようとしています。このXSLTゲームはかなり新しいです。私は共通の行属性を持つエントリの各セットをラップしているよ同じ属性値(行attrのあるテーブル)を持つXSLTラップ要素

<table name="my table (2 columns)"> 
    <!-- some column headers --> 
    <colhddef colnum="1">This is column 1</colhddef> 
    <colhddef colnum="2">This is column 2</colhddef> 
    <entry row="1" colnum="1">entry 1</entry> 
    <entry row="1" colnum="2">entry 2</entry> 
    <entry row="2" colnum="1">entry 3</entry> 
    <entry row="2" colnum="2">entry 4</entry> 
    <entry row="3" colnum="1">entry 5</entry> 
    <entry row="3" colnum="2">entry 6</entry> 
    <entry row="4" colnum="1">entry 7</entry> 
    <entry row="4" colnum="2">entry 8</entry> 
</table> 

を:私は、私が尋ねるだろうと思って材料の多くは、私を見つけたが、私は非常にこの問題のようだ何かを見ていません<tr></tr>であり、カラムが適切にテーブルに配置されているかどうかを確認しても問題ありません。これはおそらく私が作っているよりもずっと簡単です...しかし、どんな助けも大歓迎です!

ボーナスポイント:XSLTの良質な学習リソースはどこにありますか?おすすめの本?等?

もう一度お返事ありがとうございます。

+0

は、http://stackoverflow.com/tags/xslt/infoの終わりにリソースセクションを参照してください。 –

+0

同様のものを見つけていないとして、今日http://stackoverflow.com/questions/42228190/how-do-i-sort-a-list-of-xml-items-into-rows-for-an-html-テーブルは少し異なるフォーマットで同じ要件であるようですので、あなたがあなたの試みを投稿している場合は、それに適応しようとします。 –

答えて

0

これはあなたが始めるかもしれません:

<xsl:template match="table"> 
<table> 
    <xsl:apply-templates select="entry[@colnum='1']"/> 
</table> 
</xsl:template> 

<xsl:template match="entry[@colnum='1']"> 
<xsl:param name='row'><xsl:value-of select='@row'/></xsl:param> 
<tr> 
    <td><xsl:value-of select="."/></td> 
    <xsl:apply-templates select="../entry[@row=$row][@colnum!=1]"/> 
</tr> 
</xsl:template> 

<xsl:template match="entry[@colnum!='1']"> 
<td><xsl:value-of select="."/></td> 
</xsl:template> 

最初のテンプレートが<table></table>を作成し、それがtableノードからのみ<entry colnum='1'/>ノードを選択移入します。

第2のテンプレートは、$row<entry colnum='1'/>ノードの値rowの属性を設定します。その後、<tr></tr>コンテナを作成し、このエントリのテキストを含むノード<td></td>を追加します。最後に、row$rowパラメータに一致する属性親テーブルからentryノードを選択し、colnum属性が1ないcolnum属性にして、最後のテンプレートは、これらの選択さ<entry>ノードをオン1.

ありません<td></td>ノード。

出力:学習用として

<table> 
    <tr> 
    <td>entry 1</td> 
    <td>entry 2</td> 
    </tr> 
    <tr> 
    <td>entry 3</td> 
    <td>entry 4</td> 
    </tr> 
    <tr> 
    <td>entry 5</td> 
    <td>entry 6</td> 
    </tr> 
    <tr> 
    <td>entry 7</td> 
    <td>entry 8</td> 
    </tr> 
</table> 
+0

ありがとう!私は、このプロジェクトの関数型プログラミングスタイルを使って、より良くなる必要があることを知っています。解析する必要のあるXMLファイルはかなり大きく、XSLTが制御不能になり、混乱してしまうのは簡単です。これは、私のそれぞれの試みよりもはるかにクリーンです。 – pattersonpatterson

関連する問題