【XML】XSD (XML Schema Definition / XMLスキーマ定義) ~知識編~

スキーマ言語【schema language】

 * スキーマ言語とは、SGMLXMLで文書を作成する際に、その構造を定義する言語
 * SGMLではDTDと呼ばれるスキーマ言語が使われ、HTMLの定義などに利用されてきた
   SGMLから派生したXMLでも、DTDが使われている

XSD

 * XML Schema Definition / XMLスキーマ定義
 * スキーマとは、XMLの構造
 * 「いつ、どの要素が出現するのか」「その要素にはどのような属性があるのか」など、
    XML木構造についての定義がスキーマです

属性

standalone属性

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

外部DTDの参照が必要か不要かを明示する

<?xml version="1.0"?>
<xsd:schema xmlns="">http://www.w3.org/">
     <xsd:element name="greeting" type="xsd:string" />
</xsd:schema>

 + element : 要素を宣言
 + greeting : 要素名
 + xsd:string : 要素の構造

include要素 / import要素 : 外部DTDの取り込み

http://www.atmarkit.co.jp/ait/articles/0402/11/news004_3.html
http://scalaxb.org/ja/multiple-schema-files
頻繁に使用するスキーマ定義を別ファイルとして保存しておき、
ほかのXML Schemaに取り込んで再利用することができる

 * include要素
  => ほかのXML Schemaに取り込んで、同一の名前空間の場合
 * import要素
  => ほかのXML Schemaに取り込んで、異なる名前空間の場合

■利点
 * 頻繁に使用されるカスタムのデータ型(拡張した複雑/単純型)を
   外部スキーマとして別ファイル化しておくことで、より保守性に富んだスキーマを記述可能

include要素(schemaLocation属性)

http://itdoc.hitachi.co.jp/manuals/3020/30203M4760/EM470038.HTM
<xsd:include schemaLocation="インクルード対象のXML Schemaのファイル名"/>

import要素(namespace属性/schemaLocation属性)

http://itdoc.hitachi.co.jp/manuals/3020/30203M4760/EM470037.HTM
<xsd:import namespace="インポートする名前空間URI"
           [schemaLocation="インポート対象のXML Schemaのファイル名"]/>

 * namespace
  => インポート対象のXML Schemaが属する名前空間URIを定義。この属性の定義は必須。
 * schemaLocation
  => インポート対象のXML Schemaのファイル名を定義。

use属性

 例:<xsd:attribute name="id" type="idType" use="required"/>

 id属性は「必ず記述しなければならない」属性ですので、use属性の値には「必須」を表す「required」を指定します

required

 * 属性は必ず書かなければならない

optional

 * 属性は書かなくてもよい。もちろん書いてもよい

prohibited

 * 属性は書いてはならない

choice要素

 * いずれかの要素を指定する場合に用いる

element

 * 要素を宣言する

complexType

 * 複雑型(子要素または属性を持つ要素のデータ型)を表す
 * cf.単純型 : 子要素および属性を持たない要素のデータ型、あるいは属性値のデータ型

sequence

 * 子要素の順番を指定する

ref

 * 要素を参照

名前空間指定

xmln:名前空間

例:<persons xmlns="http://xml.javainthebox.net" >

要素の出現回数の指定)

minOccurs

最少出現回数を指定する。
デフォルトは minOccurs="1"
0を指定すると省略可能要素となる。

maxOccurs

最大出現回数を指定する。
デフォルトは maxOccurs="1"
出現回数の上限をなくす場合は maxOccurs="unbounded" と指定する。
http://www.atmarkit.co.jp/fxml/rensai2/schema01/schema01.html

関連記事

XSD (XML Schema Definition / XMLスキーマ定義) ~ツール編~

http://blogs.yahoo.co.jp/dk521123/35172666.html

WSDL について ~知識編~

http://blogs.yahoo.co.jp/dk521123/31950737.html