- ベストアンサー
XML要素の記述順番に意味を持たせることはできる?
- 仕事でXMLを読み込むプログラムを作っている際、XML要素の記述順番に意味を持たせることはできるのか疑問に感じています。
- XMLの仕様を調べたり、関連する記事を読んでもよく理解できませんでした。
- XMLの仕様では、要素の順番が保証されていない場合があるようです。参考になるサイトや書籍を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>「XMLの仕様では、要素は記述された順番に読み込まれるとは限らないよ」 本当です。 質問者様の参考サイトにも記述されていますが XMLにはパーサーの読み込み順序の規定は何もありません。 従いまして、パーサーによって読み込まれたXML要素の順序性は保証されず、 使用するパーサーに完全に依存することになります。 ただ、読み込み時にわざわざ要素を入れ替えるというパーサーを今までに私は見たことがありません。 (そもそも読み込む順序をわざわざ入れ替える理由も無いですから) ちなみにJavaならorg.w3c.domパッケージのElementクラスの getElementsByTagNameメソッドなどは「文書順に返す」といった記述が見られますね。 (ただ、Nodeインターフェースのメソッドはそういった記述が見当たらないですけど)
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
>「XMLの仕様では、要素は記述された順番に読み込まれるとは限らないよ」 は 「XMLの仕様では、要素は記述される順序は設計どおりでは無いことがある」 では無いかと ・・・ たとえば <!--- Sample1.xml --> <test> <myData> <node1>Data1</node1> <node2>Data2</node2> </myData> </text> と <!--- Sample2.xml --> <test> <myData> <node2>Data2</node2> <node1>Data1</node1> </myData> </text> といった具合の2つのファイルが同じように処理できなければいけない事を指摘したかったのではないかと ・・・
お礼
回答ありがとうございます。 redfox63さんにご指摘いただいた内容の方が遙かに重要な事だと思います。 実は、上司の指摘をきっかけに >「XMLの仕様では、要素は記述される順序は設計どおりでは無いことがある」 この点についても不安になり、プログラムを見直したところ不具合を発見した次第です。 分かってはいたつもりですが情けないかぎりです。 >「XMLの仕様では、要素は記述された順番に読み込まれるとは限らないよ」 については、書いたとおり本当かどうか知りたいのです。 もし本当なら、質問に書いたXMLを別のソフトで表示させた時 「2行目」「1行目」の順で表示された、なんて場合もある事になります。 現実にはない事だと思いますが・・・ プログラム作成の方は、既にこの問題を解消したXML設計に変更して対応しましたが 仕様について詳しく知りたいと思っておりますので、引き続きよろしくお願いします。
お礼
>本当です。 >質問者様の参考サイトにも記述されていますが >XMLにはパーサーの読み込み順序の規定は何もありません。 順序を入れ替えてもよいと書いてあるわけではないし 言語が違うとはいえ、XHTMLやHTMLの使われ方を事を考えると ひょっとして何かの間違いでは?と思ってしまいましたが、本当だったんですね。 とても参考になりました、回答ありがとうございました。