• 締切済み

うまく表示されない

XMLを最近覚えたのですが、表示がうまく出来ないので間違ってる箇所を教えて頂けないでしょうか? よろしければどうしたら表示されるのかも教えて頂けると助かります。 元のソース <?xml version="1.0" encoding="SHIFT_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>***</title> <link rel="stylesheet" type="text/css" href="**.css" /> <link rel="shortcut icon" href="favicon.ico" /> </head> <body> <br /> <h2>***</h2> <h4>***</h4> <table><tr><td width="600"> <div><br /><font size="4" color="blue">***</font> <br />*** </div></td></tr></table> <br /> <a href="../***.html"><img src="back.png" border="0" alt="" /></a> <br /> <br /> </body> </html> ↓変更後 XML <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="taimu1.xsl"?> <taimu> <tai>***</tai> <sab>***</sab> <bunn> <br /><font size="4" color="blue">***</font> <br />*** <br /> </bunn> <gazou> <a href="***.html"><img src="***.png" border="0" alt="" /></a> </gazou> </taimu> ↓変更後 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 xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>***</title> <link rel="stylesheet" type="text/css" href="***.css" /> <link rel="shortcut icon" href="favicon.ico" /> </head> <body> <xsl:apply-templates select="tai" /> <xsl:apply-templates select="sabu" /> <xsl:apply-templates select="bun" /> <xsl:apply-templates select="gazou" /> </body> </html> </xsl:template> <xsl:template match="tai"> <h2>***</h2> </xsl:template> <xsl:template match="sabu"> <h4>***</h4> </xsl:template> <xsl:template match="bun"> <table><tr><td width="600"><div> </div></td></tr></table> </xsl:template> <xsl:template match="gazou"> <a href="***.html"><img src="***.png" border="0" alt="" /></a> </xsl:template> </xsl:stylesheet> 大体このように書きました

  • XML
  • 回答数1
  • ありがとう数5

みんなの回答

  • nadera
  • ベストアンサー率83% (5/6)
回答No.1

最初は単純な構造のものを表示させるところから始めたらどうでしょうか。 たとえば,   <tai>ここはtaiです</tai> の「ここはtaiです」を表示するには,   <xsl:template match="tai">    <h2><xsl:value-of select="."/></h2>   </xsl:template> としますが,まずは,この一つを表示できるようにし,それができたら,次に進むようにすると,エラーの原因も分かりやすくなります。 基本的に,XMLには,表示するデータを置き,表示形式はXSLで設定しますから,XMLにHTMLのタグは書きません。 たとえば,XMLは,このようにデータだけとし   <bun>これは文です</bun>   <bun>これもぶんです</bun> などとし,XSLでは,   <xsl:template match="bun">    <table><tr><td width="600">     <font size="4" color="blue">      <xsl:value-of select="."/><br/>     </font>    </td></tr></table>   </xsl:template> というようにするなどします(ただ,これではtableを使う意味がありませんが)。これなども,この部分だけの表示を試してみると,どんな風にXSLを書くと良いか分かると思います。 要領が分かるまで大変でしょうが,いろいろ試す内に分かってくると思います。

yokubou666
質問者

補足

わかりました 簡単なことからはじめて見ます。 ありがとうございました。

関連するQ&A

  • 複数リンクをしたいのですが表示されない

    複数リンクしたいページがあったので色々試みました こちらのサイトを参考にして http://www6.airnet.ne.jp/manyo/xml/index.html Xlinkの単純リンク・拡張リンクを試したのですがリンクが全くされないで、普通に文字が並んでるように表示されました また http://questionbox.jp.msn.com/qa1821124.html こちらのやり方で試みてもリンクされていない状態でした。 XMLの書き方がまずかったのか、別の理由でリンク表示されないのかわかりませんがどうしたら複数リンクができるでしょうか? 大体こんな感じに書きました ↓XML <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="anime1.xsl"?> <iti> <sait> <name>世界の発展</name> <gai> <link url="http://***">イギリス</link> <link url="http://***">フランス</link> <link url="http://***">イタリア</link> </gai> </sait> ↓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> <div align="center"> <xsl:apply-templates select="iti" /> </div> </body> </html> </xsl:template> <xsl:template match="iti"> <br /> <br /> <h1>テスト</h1> <xsl:apply-templates select="sait" /> <br /> <br /> </xsl:template> <xsl:template match="sait"> <table border="1" bgcolor="#006fdd" width="700"> <tr> <th><xsl:value-of select="name" /></th> </tr><tr> <td><xsl:value-of select="gai" /></tr> </table> <br /> </xsl:template> <xsl:template match="link" > <a> <xsl:attribute name="href"> <xsl:value-of select="@url" /> </xsl:attribute> <xsl:value-of select="text()" /> </a> </xsl:template> </xsl:stylesheet> どこら辺が間違ってますでしょうか?

    • ベストアンサー
    • XML
  • XSLTがブラウザで表示されません。

    勉強のために、下記のサンプルXMLファイル、XSLファイルを作成し、ブラウザで表示させようと思ったのですが、表示されません。 表示させる為になにか必要なソフト等をインストールしないといけないのでしょうか? ちなみにブラウザはIE5.5を使用しています。 もし、何か分かる方がいらっしゃいましたら、ご教授御願い致します。 ※sample.xml <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="sample.xsl"?> <PAGE> <EMPLOYEES> <EMPLOYEE> <EMPNO>1</EMPNO> <ENAME>一郎</ENAME> <JOB>President</JOB> <HIREDATE>1990-04-01</HIREDATE> <SAL>10000</SAL> <DEPTNO>10</DEPTNO> </EMPLOYEE> <EMPLOYEE> <EMPNO>50</EMPNO> <ENAME>次郎</ENAME> <JOB>Director</JOB> <MGR>1</MGR> <HIREDATE>1991-04-01</HIREDATE> <SAL>6000</SAL> <DEPTNO>30</DEPTNO> </EMPLOYEE> </EMPLOYEES> </PAGE> ※sample.xsl <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/ 1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="Shift_JIS"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="PAGE"> <HTML> <BODY> <xsl:apply-templates/> </BODY> </HTML> </xsl:template> <xsl:template match="EMPLOYEES"> <xsl:apply-templates/> </xsl:template> <xsl:template match="EMPLOYEE"> <xsl:value-of select="ENAME"/><BR/> </xsl:template> </xsl:stylesheet>

    • ベストアンサー
    • XML
  • XSL変換したが画像が表示できません

    下記のXMLの画像データを表示するためXSL変換したが画像が表示できません ちなみに同drに設置しています。  PHOT.XML <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <photos>  <photo url="http://www.kahokanko.com/demo/10.jpg"/>  <photo url="http://www.kahokanko.com/demo/19.jpg"/>  <photo url="http://www.kahokanko.com/demo/31.jpg"/> </photos> STYLE.XSL <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  <xsl:template match="/">  <html>   <head>    <title>サンプル</title>    <link rel="styleSheet" type="text/css" href="./xx.css" />   </head>   <body>    <h1>画像を表示</h1>    <div>     <xsl:apply-templates />    </div>   </body>   </html>  </xsl:template>  <xsl:template match="photo">   <p class="album">    <img>     <xsl:attribute name="src">      <xsl:value-of select="@url" />     </xsl:attribute>    </img>   </p>  </xsl:template> </xsl:stylesheet>

  • 親のパラメータの取得

    いつもお世話になっています。 XML, XSL等の勉強を始めました。 子供から親のパラメータを取得する方法がよく分かりません。 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="parent"> hello?:<xsl:value-of select="@hello" /><br /> <xsl:apply-templates select="child" /> </xsl:template> <xsl:template match="child"> hello2?:<xsl:value-of select="@hello" /><br /> </xsl:template> </xsl:stylesheet> sample.xml ------------------------------ <?xml version="1.0" encoding="Shift_JIS" ?> <?xml-stylesheet type="text/xsl" href="xmlsample.xsl" ?> <parent hello="hello2"> <child /> </parent> こんな感じでやっています。 parentの中で、childのtemplateがapplyしてあります。 こうすると、<parent>の中で<child>が呼び出されるのですが、このchildの中でparentに指定してあるパラメータhelloの値が取得したいです。 できれば変数に代入するとかせずに(まだトライしていません)、直接childからparentのhelloパラメータの内容を取得したいと思っています。 このようなことはxml, xslで可能なのでしょうか。 またどうすれば出来るのかご存じの方が居たら、よろしくお願いします。

    • ベストアンサー
    • XML
  • XMLの実体参照とXSLT

    次のようなXMLファイルをXSLTで処理したいのですが、&baseの部分がうまく表示できません。 どのようにしたら表示できるでしょうか? ■a.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="a.xsl"?> <!DOCTYPE test [ <!ELEMENT name (#PCDATA)> <!ENTITY base SYSTEM "base.xml"> ]> <test> <name>abc</name> &base; </test> ■base.xml <?xml version="1.0" encoding="UTF-8"?> <base>base</base> ■a.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8" /> <xsl:template match="/"> <xsl:apply-templates select="test" /> <xsl:apply-templates select="base" /> </xsl:template> <xsl:template match="test"> name:<xsl:value-of select="name" /> </xsl:template> <xsl:template match="base"> base:<xsl:value-of select="base" /> </xsl:template> </xsl:stylesheet> □結果 name:abc ※base.xmlの内容を表示できない

    • ベストアンサー
    • XML
  • xsl 内の実体参照を宣言する方法??

    xsl 内で xhtml を使用する際に、&nbsp; などの実体参照のエンティティ宣言をしたいのですが、方法がわかりません。パーサは libxslt(AxKit) です。 例えばこんな感じかな、と思うのですが・・。 <?xml version="1.0" encoding="EUC-JP" ?> <!DOCTYPE html [ <!ENTITY nbsp " "> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="EUC-JP"/> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="root"> <html> <head> ......

    • ベストアンサー
    • 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
  • XSLのifがいまいち理解ができなく。

    if文をどうやればいいのかで悩んでしまいに詰まっている状態です。 URLがない場合は何も表示しないにしたいのですが、参考ページを見ても全くわからない状態。 test.xsl <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet> <xsl:template match="/"> <xsl:apply-templates select="page/message"/> </xsl:template> <xsl:template match="page/message"> <table> <tr> <td>名前</td> <td><xsl:value-of select="name"/></td> </tr> <tr> <td>URL</td> <td><a><xsl:attribute name="href"><xsl:value-of select="@url" /></xsl:attribute><xsl:attribute name="target">_blank</xsl:attribute><xsl:value-of select="@url" /></a></td> </tr> </table> </xsl:template> </xsl:stylesheet> xml <?xml version="1.0" encoding="utf-8"?> <page> <message url="http://yahoo.co.jp"><name>山田太郎</name></message> <message url=""><name>山田花子</name></message> </page>

    • ベストアンサー
    • XML
  • 10番目以降の処理を変える

    こんにちは <a>  <b>bb</b>  <c>cc</c>  <d>dd</d> </a> <a>  <c>cc</c>  <d>dd</d>  <c>cc</c>  <d>dd</d> </a> といった不規則な構造のxmlで、例えば10番目以降の<a>内の<d>は表示しないといった処理をしたいと思っています。 xslを <xsl:template match="a">  <xsl:number />  <xsl:apply-templates /> </xsl:template> <xsl:template match="b">  <xsl:apply-templates /> </xsl;template> <xsl:template match="c">  <xsl:apply-templates /> </xsl;template> <xsl:template match="d">  <xsl:if test="ナンバーの値 < 10">  <xsl:apply-templates />  </xsl:if> </xsl;template> と書き、aのテンプレート内で指定した<xsl:number />の値をdのテンプレート内の<xsl:if >に持ってくる方法はあるでしょうか?

    • ベストアンサー
    • XML
  • 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

専門家に質問してみよう