- ベストアンサー
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ではどのように記述すれば良いかご教授願えますでしょうか。 よろしくお願いいたします。
- みんなの回答 (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とか取れるメソッドを使って取ってくることも多いです。
その他の回答 (1)
- 森野 クマ(@Wingard)
- ベストアンサー率18% (19/102)
書き方というか、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> --------------------------- といったかんじになります。
お礼
なるほど、そうですか・・・ InDesignのをみると属性なんかも同じものが複数回設定されてますね。 そうするとプログラム側で同じタグの中身をどうやって取り出すか、ですね。 ありがとうございました。
お礼
ご回答ありがとうございます。 やはりXML的には問題ないということで^^ わからない単語がたくさん出てきたのでまた調べてみます。 なんかXMLってやさしく解説されているところでもいろいろな書き方があってやさしい解説を読みながらも?なところがたくさんあって敷居が高いです。 少しずつ学習していきたいと思います。 今回は、わけがわからないのでXMLではなく別な形式に変えてプログラムすることにします。 ありがとうございました。