UppaalのXML編集ではまる

自分はXMLのことはよくわからないけれど、UppaalのファイルはXMLで記述されているので、その編集をするためにRubyのREXMLを使ってプログラミングをしています。

さて、次のようなElementを

<transition>
  <source ref="id4" /> 
  <target ref="id4" /> 
  <label kind="synchronisation" x="128" y="-152">go!</label> 
  <label kind="assignment" x="0" y="0">_u()</label> 
  <nail x="120" y="-224" /> 
  <nail x="168" y="-104" /> 
</transition>

次のように、子の順番を入れ替えます。

<transition>
  <source ref="id4" /> 
  <target ref="id4" /> 
  <label kind="synchronisation" x="128" y="-152">go!</label> 
  <nail x="120" y="-224" /> 
  <nail x="168" y="-104" /> 
  <label kind="assignment" x="0" y="0">_u()</label> 
</transition>

すると、Uppaalで正しく読み込めなくなりました。これがXMLというやつの力なのでしょうか。それともUppaalが馬鹿なだけなのでしょうか。

(追記)ああでも良く考えたら、例えば上のnailタグはエッジの経由する座標を示しているのだけれど、順序を属性として持っていないので、これは完全に順番に依存しますね。(少なくともUppaalの)XMLは勝手に順番を変えてはいけないということがよくわかります。

Elementを末尾に加えるだけではなく、Parent#insert_beforeあたりを使って順序を制御しないといけないのですね。XMLは面倒だなあ。