登場順序は問わないが、登場が必要なことだけを規定する[2]。順序まで規定するならsequenceを使う。
【書式】 <xsd:all minOccurs="数値" maxOccurs="数値"> ... </xsd:all> 【例】登場順序は問わないが、少なくとも1回登場する必要あり <xsd:all> <xsd:element name="birthday" type="xsd:date"> <xsd:element name="name" type="xsd:string"> <xsd:element name="address" type="xsd:string"> </xsd:all> 【例】登場順序は問わないが、「全て1回ずつ登場する」か「全て1回も登場しない」のどちらか <xsd:all minOccurs="0" maxOccurs="1"> <xsd:element name="birthday" type="xsd:date"> <xsd:element name="name" type="xsd:string"> <xsd:element name="address" type="xsd:string"> </xsd:all minOccurs="0" maxOccurs="1">
型の拡張宣言を行う。base
属性で基底型(元となる型)を指定する。
<xsd:element name="details"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="update_id"> </xsd:extension> </xsd:simpleContent> </xsd:element>
値が他と重複せず、値により要素が特定できることを規定する。
<xsd:key name="キー名"> <xsd:selector xpath="セレクタ名" /> <xsd:field xpath="フィールド名" /> </xsd:key>
指定したキー(一意な値)に存在する値のみ設定可能であることを規定。
<xsd:keyref name="キー名" refer="参照するキーの名前"> <xsd:selector xpath="セレクタ名" /> <xsd:field xpath="フィールド名" /> </xsd:key>
空の要素値を許可するかどうかを設定する。nillable="true" とスキーマで設定し、XMLの該当要素に「名前空間名:nil="true"」と設定すれば空要素(null値)が許可されるようになる[2]。
【例】 --- スキーマ <xsd:element name="hoge" nillable="true"> </xsd:element> --- XML <hoge xsi:nil="true"></hoge>
既定のデータ型に制約を加えて新たなデータ型を生成する。
【例】1以上の整数(自然数) --- スキーマ <xsd:restriction base="integer"> <xsd:minInclusive value="1" /> </xsd:restriction>
単純型。属性も子要素もなし。xsd:extension
を使って属性を持たせるなどの拡張は可能。
複数のデータ型を組み合わせて新たなデータ型を作成するのに用いる。
参考文献・サイト
型名 | 内容 |
---|---|
complexType | 子要素を持ってもよい。 |
simpleType | 子要素は持たない。内側に含むのは要素値のみ。 |
型名 | 内容 |
---|---|
token | 復帰(carriage return,#xD)、改行(line feed,#xA)、タブ(#x9)の各文字を含まない文字列(標準化済み文字列 normalizedString)に、「前後に空白(space,#x20)を持たない」、「連続する2つ以上の空白も含まない」という制限を加えたもの。 |
参考文献・サイト
スキーマはXMLドキュメントの構造定義を記述したXMLファイル。
この文書がXML文書であることを宣言する。必ず最初の行に記述する。
【書式】
<xml 属性>
<xml version="1.0">
<xml version="1.0" encoding="utf-8">
【書式】 <名前空間:element name="要素名" type="データ型" nillable="true | false" # 要素値空を許容するかどうか。既定値はfalse(許容しない) maxOccurs="0以上の整数またはunbounded" # 許容される最大要素数。既定値は1 minOccurs="0以上の整数" # 許容される最小要素数。既定値は1 default="既定値" fixed="固定値" > <annotation>要素の説明</annotation> (一言では書けないデータ型の記述や説明など) </名前空間:element>
既定のデータ型には下記のものがある。
【例】 <xs:element name="name" type="string"/> # 要素名「name」、データ型「文字列」 <xs:element name="birth" type="date"/> # 要素名「birth」、データ型「日付」 <xs:element name="age" type="integer"/> # 要素名「age」、データ型「整数」
【書式】 <名前空間:attribute name="属性名" type="データ型" default="既定値" fixed="固定値" > use="optional | prohibited | required" > (一言では書けないデータ型の記述や説明など) </名前空間:attribute>
単一種の子要素しか持たない型は simpleType
要素で、そうでない型は complexType
要素で記述?
【例】 ---- XMLスキーマ <?xml version="1.0" encoding="utf-8"?> # XMLの宣言(XMLバージョン、使用文字コード) <xs:schema # 最上位の要素 xmlns:xs="http://www.w3.org/2001/XMLSchema" # このスキーマで使う要素、データ型の名前空間、名前空間名(xs) targetNamespace="http://www.hoge.com/" # このスキーマで定義する名前空間の場所(URI) xmlns="http://www.hoge.com/" # 既定の名前空間定義 elementFormDefault="qualified"> # このスキーマ定義に従ったXML文書ではこのスキーマで定義された要素のみ使用を許可する。 <xs:element name="name" type="string"/> # 要素名「name」、データ型「文字列」 <xs:element name="species" type="string"/> # 要素名「species」、データ型「文字列」 <xs:element name="birth" type="date"/> # 要素名「birth」、データ型「日付」 <xs:element name="age" type="integer"/> # 要素名「age」、データ型「整数」 </xs:schema> ---- XMLインスタンス(XMLスキーマ定義に従って作成されたXML文書) <?xml version="1.0" encoding="utf-8"?> # XMLの宣言(XMLバージョン、使用文字コード) <root # 最上位の要素 xmlns="http://www.hoge.com/" # 既定の名前空間宣言(これを元に検証される) xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" # XMLスキーマインスタンス名前空間を有効にする xmlns:schemaLocation="http://www.hoge.com foo.xsd"> # 使用する名前空間とスキーマファイル名 <name>Jack</name> <species>turtle</species> <birth>2000-10-10</birth> <age>9</age> </root>