ぺーぺーSEのブログ

備忘録・メモ用サイト。

XMLにおける名前空間

名前空間」は複数スキーマ間で「要素」名が衝突しないように使用される。
「要素」とか「属性」とかが混乱しそうなので整理。
下記の例では要素名が「bean」、属性名が「id」や「class」となる。

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" />

「xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"」メモ

「xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"」は

  • xsi:schemaLocation属性
  • xsi:noNamespaceSchemaLocation属性
  • xsi:type属性
  • xsi:nil属性

を使うために必要。

「xsi:schemaLocation属性 とxsi:noNamespaceSchemaLocation属性」

名前空間を持ったスキーマファイルをXMLデータ側から指定したい場合は、xsi:schemaLocation属性を使って、
対象名前空間のないスキーマファイルを指定したい場合には、xsi:noNamespaceSchemaLocation属性を使う。
もう少し詳しく言うと、
対象となるXMLスキーマ文書のルート要素である要素にtargetNamespace属性が指定されおり、 特定の名前空間に所属することが示されている場合は、xsi:schemaLocation属性を使用して、
対象となるXMLスキーマ文書のルート要素である要素にtargetNamespace属性が指定されおらず、 特定の名前空間に所属することが示されていない場合は、xsi:noNamespaceSchemaLocation属性を使用します。

書き方は

xsi:schemaLocation="名前空間1 スキーマファイルのURL1
                    名前空間2 スキーマファイルのURL2
                    ...
                    名前空間n スキーマファイルのURLn"

要するに「xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"」と「xsi:schemaLocation」か「xsi:noNamespaceSchemaLocation」を書いとけばxsd参照できるってこと。

自分がほしいとこだけメモなのでxsi:type属性とxsi:nil属性については省略。


参考:
http://www.mlab.im.dendai.ac.jp/~yamada/web/xml/namespace.html
http://www.technotype.net/tutorial/tutorial.php?fileId=%7BXML%20Schema%7D§ionId=%7Bassoriating-xml-instances-and-schemas%7D
http://www6.airnet.ne.jp/manyo/xml/