XMLマスターの再リベンジ試験を今週の金曜日26日に受けることにした。
本当はもう少しじっくり攻めたかったのだが、情報処理プロジェクトマネージャの試験が4月にあるため、これ以上、引き延ばすとプロジェクトマネージャの勉強ができなくなってしまうため、今週に受けることにした。
今度こそである。
今回はなんとしても合格せねば!
さて、前回の試験で私がおそらく間違ったであろう問題について、また一つ記述しておく。
DOMにおける名前空間の競合時の問題である。
あるXML文書1の名前空間付きの要素を別の名前空間が存在するXML文書2にimportする場合、名前空間接頭辞が同一の場合、名前空間の競合が起きる可能性がある。そういった名前空間が競合した場合の問題が出た。
この部分を理解するため、DOMプログラムを組んで色々動作を検証してみた。
その結果、要素については名前空間接頭辞が競合していても、名前空間有効設定setNamespaceAware(true)を設定していれば、競合を解決してくれるということがわかってきた。
しかしながら、属性の場合は名前空間有効設定をしていても競合を解決できないようである。
ここは、ちょっと難しい。。。
ns1:attrA=”1″は名前空間”urn:data”に属している。
<ns1:root1 xmlns:ns1=”urn:data”><sub ns1:attrA=”1″/></ns1:root1>
ns1:attrA=”1″を下のXML文書にインポート
↓
<ns1:root2 xmlns:ns1=”urn:work” ns1:attrB=”2″/>
結果XML文書
<ns1:root2 xmlns:ns1=”urn:work” ns1:attrA=”1″ ns1:attrB=”2″ />
結果的にns1:attrA=”1″は”urn:work”名前空間に属してしまう。