• ベストアンサー

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

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

  • XML
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • 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 こんな感じで入れています。

関連するQ&A

  • tableタグ内で、空白セルでも罫線を表示させられるためのタグは

    次のように、1行×5列のテーブルがあります。 <html><body> <table border="1"> <tr> <td>1</td> <td></td> <td> </td> <td> </td> <td>&nbsp;</td> </tr> </table> </body></html> 1列目:文字列 1 2列目:未記入 3列目:半角スペース 4列目:全角スペース 5列目:文字実体参照の&nbsp; 2列目と3列目だけ、罫線が表示されないですが(セルがつぶれてみえる) わざわざ&nbsp;とかで<td>と</td>の間を埋めなくても、 罫線を明示的に表示させられるタグがあったと思いましたが、何だったでしょうか。

    • ベストアンサー
    • HTML
  • XSL内でJavaScriptを記述し、JavaScript内でXMLデータを取得するには・・・

    大変困っていますのでよろしくお願いします。 XSLのファイル内でJavaScriptを記述し、JavaScriptでxmlの要素を取得操作したいのですが、とり方がわかりません。 ご教授のほどをよろしくお願いします。 ================================================================== sample.xsl ------------------------------------------------------------------ <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>XML: 基本サンプル</title> </head> <body> <p align="center">サンプル</p> <xsl:apply-templates select="information/value/applicationinfo" /> </body> </html> </xsl:template> <xsl:template match="value/applicationinfo"> <Script Language = "JavaScript"> <xsl:comment> <![CDATA[ document.write("<xsl:value-of select=\"componentname\" />"); ]]> </xsl:comment> </Script> <table border="1"> <tr> <td><xsl:value-of select="componentname" /></td> </tr> </table> </xsl:template> </xsl:stylesheet> ================================================================== 下のテーブルでは要素を表示することはできます。 このやり方では駄目なのでしょうか?

    • ベストアンサー
    • XML
  • XMLデータを動的に使用する

    XML初心者です。 お恥ずかしながらかなり幼稚な質問かもしれませんが宜しくお願いします。 XMLファイルがひとつあります。 ----ファイルの中身---- <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="相対パス/fff.xsl"?> <rss version="2.0"> <channel> <item> <title>お中元の季節になりました。</title> <link>https://XXXX/XXXXX</link> <pubDate>2007/07/05</pubDate> <description>お中元の季節になりました。デパートが賑わいをみせています。</description> <category>浅目新聞</category> </item> <item> <title>今年は平年並みの暑さ</title> <link>https://XXXX/XXXXX</link> <pubDate>2007/07/05</pubDate> <description>気象庁が今年は平年並みの暑さになると発表しました。</description> <category>毎回新聞</category> </item> </channel> </rss> XSLファイルがあります。 ----ファイルの中身---- <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>新聞情報表示テスト</title> </head> <body> <p align="center">表示テスト</p> <xsl:apply-templates /> </body> </html> </xsl:template> <xsl:template match="item"> <table border="0" width="500" align="center"> <xsl:if test="title='お中元の季節になりました。'"> <tr> <td colspan="2">URL: <xsl:value-of select="link" /></td> </tr> </xsl:if> </table> </xsl:template> </xsl:stylesheet> このXSLファイルについて、"お中元"の部分を動的に変えたいのですが、可能でしょうか? できればjavascriptは使いたくありません。(javascriptを無効にしているユーザーがいるため) インプットボックスが用意してあり、そこにユーザーが"今年は平年並みの暑さ"と入力すれば、そちらのlinkを引っ張ってきたいのです。 かなり抽象的な質問になってしまい、みなさんに意図を汲み取って頂かなければなりませんが、困っていますので宜しくお願いします。

    • ベストアンサー
    • XML
  • XMLでの表示について

    XML初心者です。 XMLに下記のような並びでタグが構成されているときに XSLで上から順に読み込み前回と重複する内容の時は その値を表示しないようにしたいのです。XSLにどう書いて制御すれば よいか途方にくれています。ご存知の方ご教授頂きたく思います。 よろしくお願いします。 XMLでのタグ構成         IE上で表示させたい結果 <a1>001</a1>        001   <a1>002</a1>        002 <a1>002</a1> <a1>002</a1> <a1>001</a1>

    • 締切済み
    • XML
  • XMLでの改行について

    XMLでの改行について ASPにてXMLを作成し、XSL(FO)にて帳票形式を作成し、TomcatにてPDFを作成しています。 ASP側にて、  Set objXmlNode = objXmlDoc.CreateElement("CV0")  Set objXmlText = objXmlDoc.createTextNode("文字" & vbCrLf & "文字" & vbCrLf& "文字")   objXmlNode.appendChild(objXmlText)  objTrNode.appendChild objXmlNode のようにXMLを作成し、XSL(FO)には、 <xsl:template match="CV0"> <fo:table-cell border-width="0.5mm" border-style="solid" padding="1mm" height="30mm"> <fo:block font-size="12pt" font-family="MSMincho" text-align="center"> <xsl:value-of select='.'/> </fo:block> </fo:table-cell> </xsl:template> のように表記しておりますが、帳票を見ると、 「文字 文字 文字」 になるはずが、 「文字 文字文字」 となってしまいます。 原因として何が考えられるのでしょうか? 回答のほど、よろしくお願いします。

    • 締切済み
    • XML
  • xmlから吐き出したhtmlデータのソースインデントがきかない

    xmlとxsltを使って、htmlを吐き出しているのですが、 <xsl:output indent="yes"/> indent="yes"を入れてもindentされません。 xsltは下記になります。 <?xml version="1.0" encoding="shift_jis"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="id" /> <xsl:output method="xml" standalone="yes" encoding="Shift_JIS" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" indent="yes" /> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>KDS</title> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <link rel="stylesheet" href="/css/style.css" type="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <script type="text/javascript" src="/js/snavi_case.js"><xsl:comment>//</xsl:comment></script> </head> <body> <xsl:apply-templates select="info/group/page[@fileId='pteach' and @fileId = $id]" mode="main"/> </body> </html> </xsl:template> <xsl:template match="info/group/page" mode="main"> <xsl:value-of select="title"/> <table width="539" border="1"> <xsl:apply-templates select="teacher[position() mod 3 = 1]"/> </table> </xsl:template> <xsl:template match="teacher"> <tr> <td><xsl:value-of select="name"/>:<xsl:value-of select="subject"/></td> <td><xsl:value-of select="following-sibling::teacher[1]/name"/>:<xsl:value-of select="following-sibling::teacher[1]/subject"/></td> <td><xsl:value-of select="following-sibling::teacher[2]/name"/>:<xsl:value-of select="following-sibling::teacher[2]/subject"/></td> </tr> </xsl:template> </xsl:stylesheet> ただ、<html>~<body>と</body>~</html>はしっかりとソースがインデントされるのですが、<xsl:apply-templates select="info/group/page[@fileId='pteach' and @fileId = $id]" mode="main"/>で読み込んだところ以降のindentが全くきいていないようです。 こんな感じになります。 <html> <title></title> <body>#ここまではindentは正常 <table><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr></table> #indentが効いていない! </body> </html> どなたか同じような状況になられた方、 いらっしゃいませんでしょうか。

    • ベストアンサー
    • XML
  • XMLファイル中に記述したBRタグが機能しません

    現在以下のようにXMLファイルはなっています。 <data> <text> あいうえお<br /> かきくけこ<br /> さしすせそ<br /> </text> </data> xslファイルの方で、xsl:value-ofでtextタグの内容を取り出しているのですが、あいうえおかきくけこさしすせそと改行されずに表示されてしまいます。 何かを設定すればいいのかなと思うのですが、うまく検索で見つけれず困っています。

    • ベストアンサー
    • XML
  • JSPでXMLのデータ表示がしたいです

    XMLについてわからないことが多くて、困っています。 質問したいのですが、 JSPの画面でXMLのデータを表示させたいと思っています。 全部のデータを表示という場合、getDocumentElement()メソッドが あると思うのですが、例えばテキストノードのみを表示させたい場合、 <タグ>などのノードから、全テキストノードを一気に拾い出す方法は あるのでしょうか?メソッドとか。 ただ表示させるだけではなくて、データの削除とか変更などのデータ加工 もしていきたいので、最適なデータの表示がしたいんです。なので、操作 をしやすい取り出し方というか。。。 漠然とした質問で申し訳ありませんが、詳しい方がいましたら教えてもらえ ないでしょうか?お願いします。

    • ベストアンサー
    • XML
  • xmlのデータを条件を絞って表示する

    PHPでxmlのデータを条件を絞って表示したいと思っています。 xmlデータをPHPで作成し、結果表示するというのはサンプルを参考に作成できたのですが、条件の絞り方がわからず困っています。 <?php $xmlstr = <<<XML <?xml version="1.0" encoding="UTF-8" standalone='yes'?> <item> <name>牛肉</name> <value>ヒレ</value> <price>500</price> </item> <item> <name>豚肉</name> <value>ヒレ</value> <price>400</price> </item> <item> <name>豚肉</name> <value>もも</value> <price>300</price> </item> <item> <name>鶏肉</name> <value>もも</value> <price>200</price> </item> ・・・・・・ ・・・ XML; ?> というデータを 例えば<value>が(もも)に当てはまるものだけや、 <price>が400以下のものなど、条件を絞って表示したいと思っています。できれば、プルダウンのセレクトメニューを使用して条件をしぼりたいと思っています。 どうすればいいかまったくわかりません。 サンプルを見ながら手を加えるぐらいしかできないレベルです。 よろしければ教えてください。 また、作成したプログラムは携帯でも表示できますでしょうか? セレクトメニューが携帯では表示できないことはしっていますので、チェックボタンなどを使って表示出来ればいいなと思っています。

    • 締切済み
    • PHP
  • javascriptにおけるXMLのデータ抽出

    HTML+javascriptについて。 XMLを使用してデータを表示する際、 100件のデータがあるとして、その中にA、B、Cタイプが あるとします。 この場合においてAタイプのものを抽出する、ということを する場合において、どのようにプログラムを組むのか、また、 XMLデータ構造としてはどのようにすればいいのか教えてください! (personタグでなくてAタグ、Bタグ・・・にはしない方法です) データ構造としては1と2ではどちらがいいのか? データ構造1 <group>  <person type="A" id="A01" value="医者"/>  <person type="B" id="B01" value="先生"/>  ・・・ </group> データ構造2 <group>  <person type="A">   <id>A01</id>   <value>医者</value>  </person>  <person type="B">   <id>B01</id>   <value>先生</value>  </person>  ・・・ </group>

    • ベストアンサー
    • XML