位置情報の要素・属性に関するXMLの書き方を決めたい

このQ&Aのポイント
  • 位置情報を表す要素と属性の書き方について悩んでいます。一般的な記法を採用したいのですが基準はありますか?
  • 要素で書く方法と属性を使用する方法の比較も考えています。今後の拡張も考慮しながら決めたいです。
  • 独自の要素名や属性名を使用するべきかも迷っています。自分ならどうしていますか?
回答を見る
  • ベストアンサー

位置情報に関する仕様を決めたい(要素・属性)

自作プログラムから利用するXMLの書き方を考えているのですが、 位置情報を表す要素と属性の書き方をどのように割り振るべきか悩んでいます。 なるべく一般的な記法を採用したいのですがなにか基準などあるのでしょうか? 一つの要素に含まれる内容は次のようなものです ・アイテムのx, y座標 ・アイテムの角度 ・アイテムの回転軸(中心点の x, y座標) <item id="123"> <position> <x>100</x> <y>200</y> </position> <rotation> <x>50</x> <y>100</y> <angle>90</angle> </rotation> </item> 全て要素で書くと上のような感じになると思いますが、 属性を入れて「<position x="100" y="200" />」と書くのも良さそうに思えます。 今後回転速度や移動速度などの要素が拡張されるかもしれません。 また、「x」や「y」などとせずに「posX」「rotX」のように独自のものを使用したほうがいいのかもしれません。 こういったルールは何を基準に決めて行ったらいいのでしょうか? 自分ならこうするという意見もありましたら教えて下さい。

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

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

  • ベストアンサー
noname#212058
noname#212058
回答No.1

以下の資料が参考になると思います。 http://www.ibm.com/developerworks/jp/xml/library/x-tipsub/index.html http://d.hatena.ne.jp/tacohachi/20090129/p1 私自身は、質問のような用途であれば属性のほうが好 みです。ファイルの中身を確認するときに、圧倒的に 読みやすいので。 (開発中はファイルに書き込まれたデータを直接確認する こともたびたび発生しますが、要素で書かれているとデー タが縦に長くなるので、とても読みにくいんですよね…) 属性の名前は、後で判らなくならないレベルで付ければ 良いかと。x でも posX も結局『独自の属性名』ですから あまり気にすることはありません。

django13
質問者

お礼

回答有難うございます。 可読性が高いのはたしかに便利なのでxやyは属性としてまとめてみることにしました。 posX等は特に必然ということもないのでひとまず使わずにすすめてみようと思います。

関連するQ&A

  • CSS3回転済み要素上のevent.x,yについて

    ■概要 IEのDXフィルターがIE10で廃止されたのをきっかけに、CSS3に手を出し始めました。 回転にはスタイルシートの属性値としてtransfar:rotate([number]deg)を用いますが、この回転を行った要素についておかしな点があったので質問させていただきます。 回転処理を行った要素上でマウスイベント(mousedown,move,up他)の座標メンバ(x,y)を取得すると、意味のわからない座標になっています。 規則性を見つけようとしましたが、効率の良い方法が見つからず悩んでいます。 やりたかったことは、回転済み要素をマウスでD&Dすることですが、マウスダウンの瞬間、座標がすっとんで、要素がワープします。 この現象の原因、仕組み、解決策等、ご回答よろしくお願い致します。m(_ _)m ■以下備考、随時補足させていただきます。 ・動作環境はIE10inWIN7、他は試していない。 ・rotate無しだと期待通りの動作。 ・ありだとたとえrotate(0deg)でもこの現象が起きる。 ■以下ソースコード:ローテートの行を消したりつけたりしてみてください。 <div id=asdf> aaa </div> <script> function SQUARE(){ this.posX = 0; this.posY = 100; } var elm; var square = new SQUARE(); function MainLoop(){ elm.style.left = square.posX; elm.style.top = square.posY; InputQWER(elm.style.left + ", " + elm.style.top); } function InputQWER(str){ var elm = document.getElementById("qwer"); elm.value = str; } function InputZXCV(str){ var elm = document.getElementById("zxcv"); elm.value = str; } function main(){ elm = document.getElementById("asdf"); elm.style.width = 100; elm.style.height = 100; elm.style.background = "yellow"; elm.style.position = "absolute"; //■■■■■■■■■■■■■■■■■■■■■■ ローテートの行 elm.style.msTransform = "rotate(30deg)"; elm.attachEvent("onmousemove", function(evt){ square.posX = evt.x; square.posY = evt.y; InputZXCV(evt.x + ", " + evt.y); }); timer = setInterval("MainLoop()", 100); } setTimeout("main()", 10); </script> <input id=qwer> <input id=zxcv>

  • オブジェクトの回転について

    FlashCS5 ActionScript3.0を使っています。 Flash上で、MovieClipでオブジェクトを作り、それをStage上で回転させたいのですが、 rotationプロパティで何度回転させるかはわかるのですが、 どこを基準に(どこを回転軸に)の、基準点の設定方法を教えていただけないでしょうか。 3Dではなく、平面です。 (たとえばX座標=100, Y座標=250を起点に回転させる場合など) 以上、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 親子関係にない要素を限定して取り出すには?

    <test>  <item id="001">   <name>foo</name>  </item>  <item id="002">   <name>bar</name>  </item>  <detail>   <itemid>001</itemid>   <yomigana>フー</yomigana>  </detail>  <detail>   <itemid>002</itemid>   <yomigana>バー</yomigana>  </detail> </test> 上記のようなXML文書から次のようなcsvファイルをつくろうと考えています。 フー,foo バー,bar つまり、「item要素の属性idの値」と「itemid要素の値」が同じものを対にして並べたいのですが、 これがなんともxslでうまいやり方が書けません。 (※実際には、item要素とdetail要素が上記のようにいくつも並びます。 item要素やdetail要素の数は状態によって可変ですが、item要素とdetail要素は必ず1対1で存在します。) どなたかご教示お願いします。 (※XML文書の構成改変はできません)

    • ベストアンサー
    • XML
  • spanの位置、サイズを取得したい

    何も属性が指定されていないspanタグ(CSSでも何も指定していない)のx座標、y座標、幅、高さを取得したいのですが、可能ですか? よろしくお願いします。

  • エクセルを用いた3次元座標変換

    3次元座標空間において、座標軸を回転移動させて三つの基準座標点のz座標をすべて0にする方法を教えていただけないでしょうか。 例:(x1,y1,z1), (x2,y2,z2), (x3,y3,z3) →(回転移動)→ (x1',y1',0), (x2', y2', 0), (x3', y3', 0)  よろしくお願いします。

  • atan2関数 ベクトル計算・・・

    atan2関数を使用した、ベクトルとベクトルのなす角度を 返す関数 というのを作りたいのですが、いいプログラム例があればご紹介ください。 また、 ベクトルの視点を中心として、 angle(rad) 回転させる 関数について。  回転公式 (x, y) を angle(rad) 回転 → (x', y')  x' = cos(angle)*x + sin(angle)*y  y' = -sin(angle)*x + cos(angle)*y どちらかひとつでも、お分かりになる方がいらしたらよろしく御願いします。

  • 回転行列が分かっているとき、基準座標に対してどれだ

    回転行列が分かっているとき、基準座標に対してどれだけ動いたかどうやって調べる? 座標系0(基準座標系)と座標系1があります。 0から1へのZYXオイラー角回転行列1R0がわかっています。 このとき,座標系1であらわされた動き(加速度)a1x,a1y,a1zを座標系0で表わすにはどう計算すればいいですか? よろしくお願いします.

  • コリオリ力や遠心力、回転系に働く力について

    物理学の専門書等を見ると、 原点Oを中心にしてXY座標系を一定角速度ωで回転させX'Y'座標系に変換するとき、X'Y'座標系から見た運動方程式は Ma=F1+F2+F3 (F2はコリオリ力、F3は遠心力) と表されることは頻繁に掲載されているのですが、一定角速度ではなく、時間微分が一定でない角速度で回転させたときのX'Y'座標系から見た運動方程式はどうなるのでしょうか?教えてください。 また、どの参考書、専門書を参考にしたか教えていただけるとありがたいです。 よろしくお願いいたします。

  • 3次元での回転による座標変換

    3次元での回転による座標変換に関して質問があります. X軸,Y軸,Z軸の直交座標系があるとします. この座標系において,ある位置ベクトル(a1,b1,c1)がX軸,Y軸,Z軸と成す角度は,θx,θy,θzは,ベクトルの内積から算出可能だと思います. θx=a1/sqrt(a1^2+b1^2+c1^2) θy=b1/sqrt(a1^2+b1^2+c1^2) θz=c1/sqrt(a1^2+b1^2+c1^2) X,Y,Zの直交座標系を回転させて,この位置ベクトルの向きを基準としたX'軸,Y'軸,Z'軸による新しい直交座標系を設定するには,どのようにすればよいでしょうか? θx,θy,θzと各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • 回転した座標系を基準とし、再回転したときの回転行列について

    x軸、y軸、z軸が互いに直角に交わる座標系を考えます。(これを座標系Aとします) 座標系Aを、原点を中心とし、各軸ごとにθxa,θya,θzaだけ回転させた座標系を座標系Bとします。 さらに、座標系Bを基準とし、各軸ごとにθxb,θyb,θzbだけ回転させた座標系を座標系Cとします。 このとき、座標系Aから見た座標系Cの回転角は、どのように計算すればよろしいでしょうか? 座標系Aを基準とした回転角で座標系Bを計算し、さらに座標系Aを基準とした回転角で座標系Cを計算し……という問題であれば、単純に回転行列を掛けていけばいいと思うのですが、 「1つ前の座標を基準とした回転角を与えられたとき、全体でどれだけ回転したか?」 を表現する方法がわからなかったので、ご教示いただければ幸いです。 何卒よろしくお願いいたします。

専門家に質問してみよう