- PR -

「第13回 名前空間を理解しDOMの概要をつかむ」の問題解答

1
投稿者投稿内容
来栖
会議室デビュー日: 2004/01/30
投稿数: 3
投稿日時: 2004-01-30 19:19
初投稿です。宜しくお願いします。

XMLマスターへの道 〜「XMLマスター:ベーシック」試験対策〜
第13回 名前空間を理解しDOMの概要をつかむ

において、
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
今回の問題の解答

 それでは、予習問題の解答です。

(Q1) 下記に示されるXMLインスタンスがあります。NAME要素のnickname属性が属する名前空間はどれでしょう。

<EMPLIST xmlns="http://www.abc.com/employee">
<EMPLOYEE id ="A0149">
<NAME xmlns="http://www.abc.com/emp2"
nickname="Taka" >Taro Yamada</NAME>
<DEPT>Sales</DEPT>
</EMPLOYEE>
</EMPLIST>

 答えは、(d) どの名前空間にも属さない、です。

(中略)

このXMLに含まれる要素や属性の名前空間の所属は次のようになります。

  要素/属性 所属する名前空間
  EMPLIST要素 http://www.abc.com/employee
  EMPLOYEE要素 http://www.abc.com/employee
  id属性 所属なし
  NAME要素 http://www.abc.com/employee
  nickname属性 所属なし
  DEPT要素 http://www.abc.com/employee

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
とあるのですが、

(b)次の名前空間に属する http://www.abc.com/emp2

が本当の正解ではないでしょうか?

記事の解説にある、
NAME要素が "http://www.abc.com/employee" に属すというのは明らかに誤りで、
NAME要素は "http://www.abc.com/emp2" に属しています。
その要素の属性である nickname も同じ名前空間に含まれると思うのです。

詳しい方、教えてくれませんか?
まこと
会議室デビュー日: 2003/11/06
投稿数: 14
投稿日時: 2004-01-31 12:45
デフォルト名前空間は接頭辞のない要素に対して適用されるもので、属性には
適用されません。

接頭辞のつかない属性は、要素型ごとの区画別の名前空間に属すると考えるようです。
これは要素の名前空間とは別です。
参考: http://www.cityfujisawa.ne.jp/~yanai/xml/schema/step43-2.html

上記の問題ですが、選択肢の中では「(d)どの名前空間にも属さない」
と答えるしかないと思います。

NAME要素についてはおっしゃる通りと思います。
来栖
会議室デビュー日: 2004/01/30
投稿数: 3
投稿日時: 2004-02-02 11:10
返答ありがとうございます。

投稿後に自分でももう一度参考書などを調べてみたのですが、
接頭辞のない属性に関する名前空間の扱いが今ひとつすっきりしません。

まことさんの記載にあった
「参考:http://www.cityfujisawa.ne.jp/~yanai/xml/schema/step43-2.html」
のページも参照しました。
これは W3C の REC-xml-names-19990114 に記述されている
A.2 XML Namespace Partitions 
http://www.w3.org/TR/REC-xml-names/#ns-breakdown
を解説してくれたものですね。

上記の解説とW3CのRECを読んだ上でもう一度「第13回 名前空間を理解しDOMの概要をつかむ」の問題を見てみると、

<NAME xmlns="http://www.abc.com/emp2" nickname="Taka" >Taro Yamada</NAME>

のnickname属性は、
名前空間の区画として「要素型ごとの区画」に属すことになり、
NAME要素の名前空間"http://www.abc.com/emp2"に属すことになるのではないでしょうか?

「第13回 名前空間を理解しDOMの概要をつかむ」を書いた内藤一彦さんの見解(というか回答)があるとよいのですけど。
ue
@ITエディタ
会議室デビュー日: 2004/02/02
投稿数: 2
投稿日時: 2004-02-02 20:11
@IT編集局、XML & Web Services編集担当の上島です。

XMLマスターへの道 〜「XMLマスター:ベーシック」試験対策〜
第13回 名前空間を理解しDOMの概要をつかむ

にかんして、筆者の内藤一彦氏からいただいた回答をお知らせします。

///////////////////
お問い合わせの件ですが、記事に書かれている通りで間違いはありません。

(d)どの名前空間に属さない。
デフォルトの名前空間(修飾子をつけない名前空間)は、属性には適用されません。
「第13回 名前空間(デフォルトの名前空間)」参照。
http://www.atmarkit.co.jp/fxml/rensai2/xmlmaster13/master13.html#def
//////////////////

また、内藤氏によれば、以前、あるのXMLコースのテキストでは

/////////////////
修飾子がついていない属性は、要素と同じ名前空間に所属されていると記載されていました。
これは実際には誤りであり、現在のコーステキストではこのような記載はなくなっております。
古い内容をもとに作成した書籍や記事では、これが修正されていない可能性があります。
////////////////

ということです。

Namespaces in XML勧告文書の中にも、5.2 Namespace Defaultingでは

///////////////
Note that default namespaces do not apply directly to attributes.
http://www.w3.org/TR/REC-xml-names/#defaulting
///////////////

という記述があります。

NAME要素については、ご指摘のとおり"http://www.abc.com/emp2"でした。
お詫びし、記事を修正いたします。

[ メッセージ編集済み 編集者: ue 編集日時 2004-02-02 20:13 ]
来栖
会議室デビュー日: 2004/01/30
投稿数: 3
投稿日時: 2004-02-02 20:23
返答および記事の修正、ありがとうございます。

ようやく、すっきりと理解できました!
私の手元にある某社のテキストは赤書きして修正しておきます。

まことさん、ueさん、そして内藤さん、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)