• ベストアンサー

XML文書の書き方

すいません。まったくXMLに関して無知です。 一応基本的な書き方についてWebで調べたのですが、どうしてもわからなかったので教えて頂ければと思います。 ある場所でのイベントの時間をXMLでまとめてプログラムで出力したいのですが、 <place>  <name>渋谷</name>  <monday>  <time>0</time>  <time>1</time>  <time>2</time>  </monday>  <tuesday>  <time>0</time>  <time>6</time>  <time>12</time>  </tuesday> ・・・  <sunday>   <time>12</time>   <time>13</time>   <time>14</time> </sunday> </place> <place>  <name>新宿</name>  <monday>  <time>0</time>  <time>1</time>  <time>2</time>  </monday>  <tuesday>  <time>0</time>  <time>6</time>  <time>12</time>  </tuesday> ・・・  <sunday>   <time>12</time>   <time>13</time>   <time>14</time> </sunday> </place> のような感じで、場所と曜日と時間の紐付けをしたいのですが、このような書き方でいいのでしょうか。 プログラムのほうできちんと読み込めないので質問してみました。 もちろんプログラムが間違っている可能性もあるのですが、<time>が先頭しか読まれないようなので、こういう”いくつかわからないけどデータがある”ような場合、XMLではどのように記述すれば良いかご教授願えますでしょうか。 よろしくお願いいたします。

  • umioyo
  • お礼率78% (172/220)
  • XML
  • 回答数2
  • ありがとう数20

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

  • ベストアンサー
  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.2

プログラムはSAXですか?DOMですか? あるいはXSLTとか? どんなプログラムなのか書かれていないのでわかりませんが 処理するのはプログラムなのでXMLに罪はありません。 XMLは単なるテキストですからそれ自身がどうこうということはありません。 そんなわけで >こういう”いくつかわからないけどデータがある”ような場合、XMLではどのように記述すれば良いかご教授願えますでしょうか。 別に質問内容通りのXMLの書き方で特に問題は無いです。 (まぁ私なら  <place name="渋谷">   <time>0</time>   ・   ・  とか  <place>   <name>渋谷</name>   <event>    <time>0</time>   ・   ・  とかにしますけど。まぁこんなのは好みの問題です。) ひとつしか取らないのなら、プログラムのロジックがひとつしか取らないようになっているんだと思います。 例えばDOMを使っているのならgetElementsByTagName("time")とかで リスト形式で取れるはずです。 もちろん書き方は開発言語とかにもよって違ってきますけど。 おそらく渋谷は渋谷でtimeを取得したいでしょうし、 sundayはsundayで取得したいとかあると思います。 そんなわけでXQueryとか取れるメソッドを使って取ってくることも多いです。

umioyo
質問者

お礼

ご回答ありがとうございます。 やはりXML的には問題ないということで^^ わからない単語がたくさん出てきたのでまた調べてみます。 なんかXMLってやさしく解説されているところでもいろいろな書き方があってやさしい解説を読みながらも?なところがたくさんあって敷居が高いです。 少しずつ学習していきたいと思います。 今回は、わけがわからないのでXMLではなく別な形式に変えてプログラムすることにします。 ありがとうございました。

その他の回答 (1)

回答No.1

書き方というか、XMLの概念としては間違っていませんが、 XMLは読み込むソフトによってフォーマットが変わってくるので、 これで合ってるかどうかというのは言えません。 現状ではあなた以外にはおそらく誰にもわかりません。 例えばInDesign用のXMLでしたら、 --------------------------- <?xml version="1.0" encoding="UTF-8" standalone="yes"?><rss><group> <list xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/" aid:table="table" aid:trows="4" aid:tcols="2"> <line aid:table="cell" aid:crows="1" aid:ccols="1">0001</line><line aid:table="cell" aid:crows="1" aid:ccols="1">192.168.1.10</line> <line aid:table="cell" aid:crows="1" aid:ccols="1">0002</line><line aid:table="cell" aid:crows="1" aid:ccols="1">192.168.1.11</line> <line aid:table="cell" aid:crows="1" aid:ccols="1">0003</line><line aid:table="cell" aid:crows="1" aid:ccols="1">192.168.1.12</line> <line aid:table="cell" aid:crows="1" aid:ccols="1">0004</line><line aid:table="cell" aid:crows="1" aid:ccols="1">192.168.1.13</line> </list> </group></rss> --------------------------- といったかんじになります。

umioyo
質問者

お礼

なるほど、そうですか・・・ InDesignのをみると属性なんかも同じものが複数回設定されてますね。 そうするとプログラム側で同じタグの中身をどうやって取り出すか、ですね。 ありがとうございました。

関連するQ&A

  • XML表示を2段階で…

    今年から勉強を始めた者です。質問させてください。 ■list.xml <list> <東京> <name>太郎</name> <place>渋谷区</place> <img>tarou.jpg</img> <info>優しい</info> </東京> <東京> <name>次郎</name> <place>墨田区</place> <img>zirou.jpg</img> <info>江戸っ子</info> </東京> <大阪> <name>三郎</name> <place>岸和田市</place> <img>saburou.jpg</img> <info>怒りっぽい</info> </大阪> </list> ■htmlの表示 div A [全国][東京][大阪] div B 太郎 渋谷区 [詳細] 次郎 墨田区 [詳細] 三郎 岸和田市 [詳細] div C [写真] 性格:優しい divAにてxslを切り替え、divBに<name>と<place>を反映。 さらに反映されたdivBの[詳細]をクリックすると、対応した<img>と<info>がdivCに反映するというのを作りたいのですが…。 (上の状態は、divAにて[全国]をクリック、反映されたdivBにて「太郎」の[詳細]をクリックしたときの表示例) どうしても、div Cに反映させる方法が分かりません。 どなたか力をお貸しください。

    • 締切済み
    • XML
  • 橘いずみのオールナイトニッポンのオープニング曲?

    10年ほど前に放送していた「橘いずみのオールナイトニッポン」で、オープニングに流れていた曲のタイトルとアーティスト名をご存知の方がいましたら、是非教えていただけないでしょうか? 洋楽で、詳しくは聞き取れないのですが、Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturdayといった曜日の歌詞が繰り返し歌われていました。タイトルとアーティスト名でなくても、何か小さい情報でもであれば教えていただきたいです。よろしくお願いします。

  • アメリカの曲

    突然すいません! アメリカの、ある曲を探しています。 私がその曲を聞いたのは2009年の春です。 流行りの曲ばかりかかるラジオか何かから流れていたと思うんですが… 男の人が歌うバラード曲で、 Sunday, Monday, Tuesday...... I love you と繰り返されます。 (...... の部分は他の曜日が続いていたかもしれません) 歌詞も覚えが曖昧で、確かな情報は、「男」と、「バラード曲」ということです。 情報が少なくて申し訳ありませんが、どなたか心当たりある方は教えてください! よろしくお願いします!

  • 曜日の歌の元の歌がわかりません!

    はじめまして、近頃どうしても分からなくて夜なべして調べても分からない曲があります。 それは私が中学1年の頃にNew Crownの教科書で英語を教わっていたときのこと。先生がある日テープかCDを持ってきてかけた曲、それが曜日の歌でした。調べた結果「Sunday, Monday, Tuesday」という題だと思います。しかし、どこかでこの曲を別の歌詞で聴いたことがある気がしてなりません。 おそらく海外にでも行ったときに聞いたのか、それとも映画か海外ドラマで聞いたのか・・・とにかく気になって仕方ありません。 確か私が中学の先生から聞かされた歌詞は "sunday monday tuesday wednesday thursday thursday friday saturday sunday comes again"でした。 元の曲をご存知の方、いらっしゃいますでしょうか?確かこの曲はNHK英語であそぼの教材CDにも使われているそうですが。これらしきメロディでも結構です。 ご存知の方、よろしくお願いいたします。 ちなみに今すぐにでもその曲が必要なので、この曲が入ったCDでも結構です。 TUTAYAやレンタルショップで貸し出ししてそうなのだと良いのですが・・・。

  • xmlとjavaで自動的にWEBが更新されるソースを作ろうと思っています

    はじめまして。お忙しいところ申し訳ございませんがお力をお貸しいただきますようお願いいたします。 今度xmlで時間やwebサイトのURLなどを定義しておき、 時間がきたら自動的にページを開いていくプログラムを作ろうとしています。 具体的には <diary>20050613</diary> 日時が2005年6月13日 <time>231530</time> 時間が23時15分30秒に <web>http://www.goo.ne.jp</web> gooを開く というように記述していこうと考えています。 このようなxmlファイルをサーバで配布し、クライアント側で実行できるようなプログラムを作ってみたいと考えているのですが実際にどのような技術を使っていけば良いのか分かりません。自分でも調べてはいっているのですが、なかなかXMLの基礎知識も乏しいため前に進みません。 他のプログラミングはjavaが多少できるのでjavaとxmlを使って作れればと思っています。 何かヒントでも結構ですのでアドバイスお願いいたします。

    • ベストアンサー
    • XML
  • 曜日を指定してログオン時にタスク実行

    1週間分のバックアップをFTPに保存しておくために、現在NextFTPにて曜日ごとにプロファイルを設定したうえで、タスクマネージャーにて曜日ごとにタスクを設定し任意の時間に各プロファイルバックアップするようにしています。 要は以下のとおりです。 daily ├ monday │ └ backup ├ tuesday │ └ backup ├ wednesday │ └ backup ├ thursday │ └ backup ├ friday │ └ backup ├ saturday │ └ backup └ sunday   └ backup 上記のようにするために各曜日ごとにタスクを設定していますが、タスクの設定では週ごとかログオン時か選べても、週ごとでかつログオン時というのが設定できません。 要は出勤時間管理のため朝何時にコンピューターを起動させたかログをとりたいだけなんですけど、可能でしょうか? またひとつのタスクで曜日ごとで任意の違うフォルダにバックアップできればそれでもかまいません。 よろしくお願いします。

  • PEAR XML_Query2XMLを利用したPHPからFlash(AS3)へのXMLデータの渡し方について。

    毎度お世話になっております。 前回させていただいた質問で、PHPからFlashへのデータ受け渡しをしたいと考えていたところ、XML形式がいいと教えていただき、試していました。 FlashのただのXMLファイルの読み込みはでき、PHPのPEAR XML_Query2XMLを利用してデータベースのデータをXMLに整形することも出来ました。 しかし、その後の連結的な操作が分からず戸惑っております。 お時間があるときでよろしいので、何を使ったらよいかなどアドバイス等を頂ければと思います。 よろしくお願いします。 環境 Flash CS3(AS3) PHP5.2.6 MySQL5.1.29 Apache2.2.10 ・PHPの今のところのプログラム <?php // include required files include 'XML/Query2XML.php'; include 'MDB2.php'; try { // initialize Query2XML object $q2x = XML_Query2XML::factory(MDB2::factory('mysql://ユーザ名:パスワード@localhost/データベース名')); // generate SQL query // get results as XML $sql = "SELECT * FROM table名"; $xml = $q2x->getFlatXML($sql); // send output to browser header('Content-Type: text/xml'); $xml->formatOutput = true; echo $xml->saveXML(); } catch (Exception $e) { echo $e->getMessage(); } ?> ・AS3の今のところのプログラム System.useCodePage = true; // 外部XMLはURLLoaderで読み込む var myLoader:URLLoader = new URLLoader(); myLoader.addEventListener(Event.COMPLETE, completeData); myLoader.load(new URLRequest("test.xml")); // 読み込み完了後の処理 function completeData(event:Event):void { // 読み込んだ文字列をmyXMLに入れる var myXML:XML = new XML(myLoader.data); // データのnameとpriceの値をリストアップ表示 trace(myXML.drink[1].name); for (var i = 0; i < myXML.drink.length(); i++) {; //ダイナミックテキストでi番目を表示 db.text = myXML.drink[i].name trace(myXML.drink[i].name); trace(myXML.drink[i].@price); } } よろしくお願いします^^

    • ベストアンサー
    • PHP
  • phpからxmlへの文字化け

    PHPについての質問です。PHPのバージョンは5です。 FLASH8で作ったスクリプトからPHPに変数を送り、その変数をPHPからXMLに送っています。 しかしPHPからXMLに送ると日本語がちゃんと表示されません。何かPHPの方でしないとまずいのですか? <FLASH> System.useCodepage = true; SendData = new LoadVars(); //送りたいデータを箱に詰める this.btn_mc.onRelease = function() { _root.SendData.pro1 = nam; _root.SendData.pro2 = sbj; _root.SendData.pro3 = mail; _root.SendData.pro4 = product; //データ(中身)を詰めた箱をgetFlash.phpに送信 _root.SendData.sendAndLoad("http://localhost/php/xml_php/xml12.php", _root.SendData); }; <PHP> <?php /*変数を入れる*/ $name = $_POST["pro1"]; $sbj = $_POST["pro2"]; $add = $_POST["pro3"]; $msg = $_POST["pro4"]; /*時間を取得する*/ $stamp = time(); $date = date('Y,m/d(D)', $stamp); /*xmlに追加*/ $xml_path = "test1.xml"; $xml = file_get_contents( $xml_path ); $replace_key = "<article>"; $add_xml = $replace_key."\n<entry name='$name' dat='$date' tit='$sbj' contents='$msg'/>\n"; $result = str_replace($replace_key,$add_xml,$xml); file_put_contents( $xml_path , $result ); ?> <xml> <?xml version="1.0" encoding="utf-8"?> <article> <entry name="ha" dat="2008,03/10(Mon)" tit="test" contents="hogehoge"/> </article> となっています。

    • 締切済み
    • PHP
  • セルに自動で色をつける

    仕事で使うタイムシートを作っています。 A6 =DAY(DATE(A1,A2,1)) 日付を表示(1~31の数字がでるように書式を変更) A7~A36 =IF(A6="","",IF(MONTH(DATE($H$3,$I$3,A6+1))=$I$3,A6+1,"")) 28日、31日に対応できるよう関数をオートフィルでコピーしてあります。 B6 =IF(A6="","",DATE($H$3,$I$3,A6)) 曜日を英語で表示Monday~Sunday (B6~B36までオートフィルで関数をコピーしてあります。)   A    B    C     D     E     F     G     H     I     J     K ------------------------------------------------ 6 1 Sunday 7 2 Monday 8 3 Tuesday 9 4 Wednesday . . . 36 31 Saturday ------------------------------------------------ 【セルに自動で色をつける】 B6~B36のセルにMonday~Fridayの文字が入っている場合、C6~K6のセルに色をつけたい 同様にC7~K7、C8~K8、C9~K9..........最後のC36~K36まで条件に当てはまる時に、 セルに色をつけたいです。SaturdayとSundayの時は色はつけなくて良い 条件付き書式では無理があったので、マクロで実現するしかないのかと試行錯誤しましたが、 何ぶんマクロ初心者のため、記述方法が分かりません。 どなたかヒントを頂けると嬉しいです。 宜しくお願いします。

  • このような問い合わせフォームの場合の書き方

    下記の通り、問い合わせフォームを作成する場合なのですが 「その他」を選択した場合、右側にテキストを打たせたいと思っております。 その際、タグはどのように記述すれば良いでしょうか?(下記のような記述で合っていますか?) <table> <tr> <td>東京で良く行く場所はどこですか?※選択必須です</td> <td> <input type="radio" name="良く行く場所" value="新宿" />新宿<br /> <input type="radio" name="良く行く場所" value="渋谷" />渋谷<br /> <input type="radio" name="良く行く場所" value="その他" />その他 <input size="20" type="text" name="良く行く場所" value="その他"/></td> </tr> </table>

    • 締切済み
    • PHP

専門家に質問してみよう