• ベストアンサー

XMLの空データをテーブルに表示

XMLのデータでタグの中が空のとき、 <data></data> このデータをスタイルシートの<xsl:value-of>を用いて <table border="1">で出力すると、 データが存在するところと違った表示になり、罫線がうまく表示されません。 データが空のときは半角または全角のスペースを置くのが一般的な方法なのでしょうか。 あるいは別の手法があるのでしょうか。 スペースを置く方法もよくわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

xsl:ifで、中身がある時と無い時の記述を変えることができます。 <xsl:if test="data[.='']"> <span>中身が無い時の記述</span> <td>&nbsp;</td> </xsl:if> <xsl:if test="data[not(.='')]"> <span>中身がある時の記述</span> <td><xsl:value-of select="data" /></td> </xsl:if>

MAE-BREIT
質問者

お礼

ありがとうございました。 今体調を崩していて会社に行けないので、 出社でき次第試してみます。

MAE-BREIT
質問者

補足

無事、うまくいきました。 ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ネットスケープには、 empty-cellsというプロパティがあって <td style="empty-cells:show"></td> の様にすると、何もないセルに枠線を付けられます。 将来的には、他のブラウザにも普及するのかもしれませんが、IEでは対応していません。 私が、同様の処理をやった時には、 「データ無し」と入れました。 これは、空のままにしたいならスペースでも&nbsp;でもいいと思います。 データが無かった時のテーブルの作り方なんですが、 そもそも、そちらがどういうやり方をしているかわからないので、自分がやった時の方法を書きます。 テーブル自体は、こんな感じで中身(TBODY)が無い表を用意しておいて <TABLE style="border:solid 1px yellow"> <col style="color:crimson;text-align:center"><col><col> <THEAD STYLE="background-color:lightSkyBlue;text-align:center"> <TR><TD>?</TD><TD>日付</TD><TD>内容</TD></TR> </THEAD> <TBODY ID="list" STYLE="background-color:lightcyan;"> </TBODY> </TABLE> VBScript抜粋 pattern="//data[date/month='" & CStr(M) & "']/name" set node=xmlid.selectNodes(pattern) if node.length = 0 then set newTR = list.insertRow set newTD = newTR.insertCell newTD.colspan=3 newTD.innerTEXT="当月データなし" else for i=0 to node.length -1 call insert(node(i).text) next end if こんな感じで入れています。