XMLファイルに記載されている「xmlns」「xsi:schemaLocation」とは何なのか
掲載日:2021年1月18日
INFOMARTION > XMLファイルに記載されている「xmlns」「xsi:schemaLocation」とは何なのか
概要
XMLファイルに「xmlns」「xsi:schemaLocation」などと記載されていますが、これらがどういう意味があるのか説明したいと思います。
目次
- XMLファイルとは
- 1-1. 「xmlns」「xsi:schemaLocation」とは
- 1-2. xmlnsとは
- 1-3. 「xmlns:xsi」とは
- まとめ
1. XMLファイルとは
そもそもXMLとはExtensible Markup Languageの略で、World Wide Web Consortium (W3C)により仕様が決められています。「xmlns」「xsi:schemaLocation」以外にももっと細かい仕様を知りたい人は以下のサイトを参考にしてみてください。
1-1. 「xmlns」「xsi:schemaLocation」とは
以下の例はJavaのアプリ開発でSpringフレームワークを使用する時のXMLファイルの最初に記述する例となります。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
結論から言うと、「xmlns」「xsi:schemaLocation」はXMLの書き方に関する定義の設定です。Javaのアプリ開発でSpringフレームワークはこのXMLファイルに記載されているデータを元に処理を行います。もし、XMLの書き方に関する定義が無い場合、どう書いて良いか分からなくなってしまいます。なので、例えば「beanタグの中ではid属性を定義できる」「beanタグの内側のタグでconstructor-argタグを定義できる」などを定義してくれています。
1-2. xmlnsとは
xmlnsとは「XML ネームスペース」のこと指します。ネームスペースとは翻訳すると名前空間ですが、名前空間と言われても理解するのが難しいと思います。簡単に説明すると、名前空間とはID、つまり、一意に識別する値となります。
先ほどの例で「xmlns="http://www.springframework.org/schema/beans"」を例にとると「http://www.springframework.org/schema/beans」が名前空間、つまり、一意に識別する値となります。
URLとなっていますが、プログラムが処理する時はURLとしてではなく、IDとして処理をします。そのため、「http://www.springframework.org/schema/beans」がIDとして定義されているXSDファイル(XMLの定義ファイル)を探して、XSDファイルに定義されている通りに記載されているかチェックすることにより処理を行います。Springの場合、jarファイルの中にXSDファイルもセットで格納されています。
1-3. 「xmlns:xsi」とは
「xmlns」「xmlns:xsi」などは定義が重複しないための設定です。例えば「xmlns」「xmlns:xsi」で同じsampleタグが定義されていた場合、どちらの定義として記載しているか判断することができません。そのため、「xmlns」「xmlns:xsi」と定義することにより、「<sample>」の場合は「xmlns」の定義、「<xsi:sample>」の場合は「xmlns:xsi」の定義と区別することが可能です。つまり、「xmlns="~"」となっているものがデフォルト値となり、「xmlns:xxxx="~"」となっているものの場合は「xxxx:タグ名」と定義する必要があります。
2. まとめ
「xmlns」「xsi:schemaLocation」はXMLファイルを正しく書くための定義ファイルの設定となります。
最後までご覧いただきありがとうございました。