XMLファイルをXSLスタイルシートを適用して表示させる方法

このQ&Aのポイント
  • XMLファイルにXSLスタイルシートを適用して表示させる方法について教えてください。
  • 要素・属性の指定が上手くいかない場合にはどのように修正すればいいのか教えてください。
  • XMLファイルの表示後の理想のフォーマットについて詳しく教えてください。
回答を見る
  • ベストアンサー

スタイルシートについて

あるXMLファイルをXSLスタイルシートを適用させて表示させることを考えています。 要素・属性の指定がいまいち上手くいかないため、 ご教授ください。 元データ(test.xml)と表示後の理想は下記になります。 test.xml ーーーーーーーーーーーーーーーーー <?xml version="1.0" encoding="Shift_JIS"?> <report lang="ja"> <head> <title>あああ</title> <dateTime>1111111111111111</dateTime> <type>いいい</type> <editorialOffice>ううう</editorialOffice> <publishingOffice>えええ</publishingOffice> <additionalInfo> <v k="おおお">222222222222222222</v> </additionalInfo> </head> <body> <warningHead> <area code="3333" name="かかか"> <kind code="44" level="ききき" name="くくく" /> <kind code="55" level="けけけ" name="こここ" /> </area> <area code="6666" name="さささ"> <kind code="77" level="ししし" name="すすす" /> </area> <area code="8888" name="せせせせ"> <kind code="99" level="そそそ" name="たたた" /> </area> <area code="aaaa" name="ちちち"> <kind code="bb" level="つつつ" name="ててて" /> </area> <headline>とととととととととととととととと</headline> </warningHead> </body> </report> ーーーーーーーーーーーーーーーーー 出力後 =================== ううう 222222222222222222 いいい かかか くくく ききき こここ けけけ さささ すすす ししし せせせせ たたた そそそ ちちち ててて つつつ ===================

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

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

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

(書き方は色々あるけど)とりあえずこんな感じ? 細部微調整されたい ---------------------------------------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/report"> <html> <head> <title>タイトル</title> </head> <body> <p align="center">適当なコメント</p> <p> <xsl:value-of select="head/editorialOffice" /> </p> <p> <xsl:value-of select="head/additionalInfo/v" /> <xsl:value-of select="head/type" /> </p> <div> <xsl:for-each select="body/warningHead/area"> <p> <xsl:value-of select="@name" /> </p> <p> <xsl:for-each select="kind"> <xsl:value-of select="@name" /> <xsl:value-of select="@level" /><br /> </xsl:for-each> </p> </xsl:for-each> </div> </body> </html> </xsl:template> </xsl:stylesheet>

wf3255
質問者

お礼

本当に助かりました。 詳細調整し、作り上げたいと思います。 ありがとうございます。

その他の回答 (1)

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

それで、なにがわからないんでしょうか?

wf3255
質問者

補足

質問で記載しました中の、要素に該当する文字列“いいい”や“ううう”は下記のように記載すれば理想どおりに表示できます(※配置は調整が必要ですが)。わからないのは属性の文字列(例で記載している“222222222222222222”や“かかか”など)をどうやって『表示後』のように表示させるかです。 ============= <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="head"> <html> <head> <title>タイトル</title> </head> <body> <p align="center">適当なコメント</p> <p> <xsl:value-of select="editorialOffice" /> </p> <p> <xsl:value-of select="publishingOffice" /> </p> <p> <xsl:value-of select="warningHead" /> </p> <p> <xsl:value-of select="additionalInfo" /> </p> </xsl:template> </body> </html> </xsl:stylesheet> =============

関連するQ&A

  • XMLファイルを表示するPHP

    下記の内容のXMLファイルから、PHPスクリプトにて下段の内容の表示をさせてく思っております。 test.xml ーーーーーーーーーーーーーーーーー <?xml version="1.0" encoding="Shift_JIS"?> <report lang="ja"> <head> <title>あああ</title> <dateTime>1111111111111111</dateTime> <type>いいい</type> <editorialOffice>ううう</editorialOffice> <publishingOffice>えええ</publishingOffice> <additionalInfo> <v k="おおお">222222222222222222</v> </additionalInfo> </head> <body> <warningHead> <area code="3333" name="かかか"> <kind code="44" level="ききき" name="くくく" /> <kind code="55" level="けけけ" name="こここ" /> </area> <area code="6666" name="さささ"> <kind code="77" level="ししし" name="すすす" /> </area> <area code="8888" name="せせせせ"> <kind code="99" level="そそそ" name="たたた" /> </area> <area code="aaaa" name="ちちち"> <kind code="bb" level="つつつ" name="ててて" /> </area> <headline>とととととととととととととととと</headline> </warningHead> </body> </report> ーーーーーーーーーーーーーーーーー 出力後 =================== ううう 222222222222222222 いいい かかか くくく ききき こここ けけけ さささ すすす ししし せせせせ たたた そそそ ちちち ててて つつつ =================== 要素・属性の指定がいまいち上手くいかないため、 ご教授ください。

    • ベストアンサー
    • PHP
  • xml

    今契約してるサーバーがSQLをつけるとものすごい金額になってしまうので。XMLに挑戦中です。 作ってみたのですが、ソースが間違ってる?のか表示できません、教えてください. name.xml <?xml version="1.0" encoding="shift-jis"?> <test no="1"> <name>test</name> <no>10</no> <tel>123-456-789</tel> </test> test.php <html> <head> <title>sample1</title> </head> <body> <?php $doc->load("name.xml"); $name = $doc->selectSingleNode("test"); $list = $name->selectNodes("*"); $no = $list->item(1); $text = " 番号 " . $no . "<br>"; print $text; ?> </body> </html>

    • ベストアンサー
    • PHP
  • imode で スタイルシートを利用したい。

    テストした機種:N901ic Imode公式サイトはFlashやスタイルシートを使用してカラフルなページを作成しているようなので、スタイルシートを用いたページを作成しようと考えています。 Docomoのサイトのマニュアルを参考サンプルページを下記のように作成したのですが、携帯(N901ic)からアクセスしても、まったくスタイルシートが反映されていません。 どうすれば、スタイルシートが反映するようになるのでしょうか? <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html> <head> <title>test</title> </head> <body> <div style="background-color:#FF6699">test</div> </body> </html> ファイル名はindex.htmlがだめだったので、 index.xhtmlとしてもテストしました。

  • ドコモだけPHPを介すとスタイルシートが効かない

    こんにちは。 今、携帯サイトを作成しております。 その中で不思議な現象があるため、もしご存じの方がいらっしゃいましたら、ご助言頂けますと幸いです。 まずソースをご覧ください。 <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="application/xhtml+xml;charset=Shift_JIS" /> <meta http-equiv="content-style-type" content="text/css" /> <title>TEST</title> </head> <body style="color:#ff0000;"> red?<br /> <span style="color:#0000ff;">blue?</span> </body> </html> 上記のソースを、例えば「test.xhtml」という名前で保存して、PCと携帯3キャリアで確認すると、ちゃんと文字色の指定が効きます。 しかし、同じソースを下記のソースではさみ、phpを介して表示させようとすると、ドコモだけスタイルシートが効かなくなり、文字色が黒になってしまいます。 <?php echo ' (ここに上記ソースをコピー) '; ?> ※拡張子は.phpでも.xhtmlでも同じ現象でした。 PHPを介してもスタイルシートが効くようにするには、どのようにしたらよいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • XMLReaderから取り出したデータのソート

    いつもお世話になっております。 表題の件で良いサンプルプログラムが見つからず、質問に至りました。 下記のようなXMLデータがあるとして、このnewsに付加されているidの順にソートをするにはどうすればよいでしょうか? sample.xml <topics>   <news id="1">     <head><![CDATA[<a href="#">test1</a>]]><head>     <body><![CDATA[test1]]></body>   </news>   <news id="3">     <head><![CDATA[<a href="#">test3</a>]]><head>     <body><![CDATA[test3]]></body>   </news>   <news id="2">     <head><![CDATA[<a href="#">test2</a>]]><head>     <body><![CDATA[test2]]></body>   </news> </topics> 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • VB2005でXMLから複数ある要素の項目を取得する方法

    VB2005、XMLの初心者です。 下記XMLの「ヤマダタロウ」を抽出するのがうまくいきません。 <Module> <Body> <Item Code= A TableId=001> <Name>ヤマダタロウ</Name> </Item> <Item Code= B TableId=001> <Name>山田太郎</Name> </Item> </Body> </Module> 上記XMLがmsxmlDocとして引数で下記プロシージャに渡されるのですが、selectNodesではなぜか取得できません。 どこか間違っているでしょうか。 Private Sub prvParseXML(Byval msxmlDoc As MSXML2.DOMDocument) Dim NodeList As MSXML2.IXMLDOMNodeList NodeList = msxmlDoc.selectNodes("/Module/Body/Item[@Code='A'][@tableId='001']/Name") End Sub 何かヒントになるようなことでも良いので、皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • フレーム内から親ウィンドウにロケーション?

    こんにちは。 どなたかよい解決策をご存知でしたら教えてください。 フレームで切られたウィンドウの一部のフレームから、PHP(ver.3)でページをロケーションで呼ぶと、そのフレームの中に呼んだページが表示されてしまいます。 JavaScriptは使わずに、親ウィンドウにページを表示させることは出来ないでしょうか、、、 よろしくお願いいたします。 以下はイメージサンプルです。 ■frame.html <html> <head><title>フレームセット</title></head> <frameset cols="100,*" frameborder="NO" border="0" framespacing="0"> <frameset name="left" rows="60,*" frameborder="NO" border="0" framespacing="0"> <frame name="a" noresize scrolling="NO" src="./test1.html"> <frame name="b" noresize src="./test2.html"> </frameset> <frameset name="right" rows="44,*" frameborder="NO" border="0" framespacing="0"> <frame name="c" noresize scrolling="NO" src="./test3.html"> <frame name="d" noresize src="./locat.php3"> </frameset> <noframes> このページはフレーム対応のブラウザでご覧ください。 </noframes> </frameset> </html> ■locat.php3 <? header("Location: ./test4.html"); exit(); ?> ■test1.html <html> <head><title>テスト1</title></head> <body> 左上 </body> </html> ■test2.html <html> <head><title>テスト2</title></head> <body> 左下 </body> </html> ■test3.html <html> <head><title>テスト3</title></head> <body> 右上 </body> </html> ■test4.html <html> <head><title>テスト4</title></head> <body> このページをウィンドウ全画面に表示 </body> </html>

    • 締切済み
    • PHP
  • 文字列置換方法

    いつもお世話になっております。 早速質問なんですが、 ページの読み込み先によってページの文字を変更したいのですがよい方法は ないでしょうか? 例) <test10.html> <HTML> <head> </head> <body> <form name="main"> <a href="test11.html">移動1</a> </form> <a href="test12.html">ログインします</a> </body> </HTML> <test11.html> <HTML> <head> </head> <body> <form name="before"> 登録前です。 </form> </body> </HTML> <test12.html> <HTML> <head> </head> <body> <form name="after"> 登録後です。 </form> <a href="test10.html">トップに戻ります。</a> </body> </HTML> test12.htmlのページからtest.html10に戻った場合、 <a href="test11.html">移動1</a>を<a href="test13.html">移動2</a> <a href="test12.html">ログインします</a>を<a href="test14.html">ログアウトします。 と別の文字列に置換したいのですが可能でしょうか? 何かよい方法があればご教授願います。 javascriptでよい方法があれば幸いです。 よろしくお願いいたします。

  • クイズ作成に関して xml形式の問題をランダムに読み込む方法

    現在、クイズを作っています。 外部のXMLファイルから問題を読み込み、それをランダムに5問出題させ、さらに重複させないようにしたいのですが、経験不足のため思うように出来ません。 flashファイル  //////////////////////////////////// var a_xml:XML = new XML(); a_xml.onLoad = function() { var top:XMLNode = a_xml.firstChild; for(i = 0; i<top.childNodes.length;i++){ var item:XMLNode = top.childNodes[i]; trace(item.attributes.name); } } a_xml.ignoreWhite = true; a_xml.load("xml/test.xml"); //////////////////////////////////// XMLファイル test.xml //////////////////////////////////// <?xml version="1.0" encoding="UTF-8"?> <items> <item name="test1" value="0" /> <item name="test2" value="1" /> <item name="test3" value="2" /> <item name="test4" value="3" /> <item name="test5" value="4" /> <item name="test6" value="5" /> </items> //////////////////////////////////// XMLファイルの読み込みは何とかできたのですが、ここからどうやってランダムに読み込むかが分かりません。 XML要素のnameをランダムで出題したい場合どうしたらいいのですか? ここから先は、多分Math.randomを使うのだろうというレベルでしか分からないため、なんとかご教授お願いできませんか? 環境はwin,FlashMX2004です。

    • ベストアンサー
    • Flash
  • [Perl]Shift-JISのXMLを解析する場

    行き詰まってしまったので教えて下さい。 <やりたいこと> とあるAPIからXMLファイルを取得し、解析して出力する、ということをやっているのですが、元のXMLがShift-JISでエンコーディングされており、これをUTF-8に変換して出力しようとしています。 <問題> XMLを取得して解析、取り出したいパラメータが出力できるようにはなったのですが、文字のエンコーディングが上手く行っていないためか、文字化けしてしまいます。 <元のXML> <?xml version="1.0" encoding="Shift_JIS"?>  <test>   <prod count=3>    <record>     <code>アイウエ</code>    </record>    <record>     <code>カキクケ-</code>    </record>    <record>     <code>ABC</code>    </record>   </prod>  </test> <XML解析用のコード> #!usr/bin/perl use utf8; use Encode qw/ from_to encode decode /; use Encode::Guess qw/ euc-jp shiftjis 7bit-jis /; use LWP::UserAgent; use XML::Simple; use Data::Dumper; #--XML取得部分省略 #--XMLはgetで$xmlに格納 $from = guess_encoding($xml)->name; &from_to($xml,$from,"utf8"); $XML::Simple::PREFFERRED_PARSER = 'XML::SAX::PurePerl'; $xs = new XML::Simple(); $ref = $xs->XMLin($xml); $xml =~ s/<\?.*\?>//; for($i=0;$i<=$#{$ref->{'test'}->{'prod'}->{'record'}};$i++){  $name = $ref->{'test'}->{'prod'}->{'record'}[$i]->{'code'}; $name = encode('utf-8',$name); print "$i : $name\n"; } <結果> 黒ダイヤに?文字で文字化けして出力される。 どなたか原因がお分かりになりますでしょうか。 よろしくお願いいたします。

専門家に質問してみよう