home(h) links(l) memo profile(r)
memo(u) XML関係

XML関係

index

アルファベット順一覧

a

all

登場順序は問わないが、登場が必要なことだけを規定する[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">
      

e

extension

型の拡張宣言を行う。base属性で基底型(元となる型)を指定する。

<xsd:element name="details">
  <xsd:simpleContent>
    <xsd:extension base="xsd:string">
      <xsd:attribute name="update_id">
    </xsd:extension>
  </xsd:simpleContent>
</xsd:element>
      

k

key

値が他と重複せず、値により要素が特定できることを規定する。

<xsd:key name="キー名">
  <xsd:selector xpath="セレクタ名" />
  <xsd:field xpath="フィールド名" />
</xsd:key>
      
キー名
keyrefで参照する場合にこのキー名で参照先を指定する。
セレクタ名
フィールドが要素の場合は直上要素、属性の場合は自己要素を指定。このセレクタの中でフィールド値が重複してはいけない。
フィールド名
頭にアットマークをつけた場合はセレクタの属性を、そうでない場合はセレクタの子要素を示す。フィールド要素は複数規定できるが、その場合は規定したフィールド全ての値が1つでも違っていればOK。

keyref

指定したキー(一意な値)に存在する値のみ設定可能であることを規定。

<xsd:keyref name="キー名" refer="参照するキーの名前">
  <xsd:selector xpath="セレクタ名" />
  <xsd:field xpath="フィールド名" />
</xsd:key>
      
キー名
keyrefで参照する場合にこのキー名で参照先を指定する。
参照するキーの名前
参照するキー(一意な値)をキー名で指定する。別途keyでキーを規定しておく必要あり。
セレクタ名
フィールドが要素の場合は直上要素、属性の場合は自己要素を指定。このセレクタの中でフィールド値が重複してはいけない。
フィールド名
頭にアットマークをつけた場合はセレクタの属性を、そうでない場合はセレクタの子要素を示す。

n

nillable

空の要素値を許可するかどうかを設定する。nillable="true" とスキーマで設定し、XMLの該当要素に「名前空間名:nil="true"」と設定すれば空要素(null値)が許可されるようになる[2]

【例】
--- スキーマ
<xsd:element name="hoge" nillable="true">
</xsd:element>

--- XML
<hoge xsi:nil="true"></hoge>
      

r

restriction

既定のデータ型に制約を加えて新たなデータ型を生成する。

【例】1以上の整数(自然数)
--- スキーマ
<xsd:restriction base="integer">
  <xsd:minInclusive value="1" />
</xsd:restriction>
      

s

sequence

simpleContent

単純型。属性も子要素もなし。xsd:extensionを使って属性を持たせるなどの拡張は可能。

u

union

複数のデータ型を組み合わせて新たなデータ型を作成するのに用いる。

参考文献・サイト

要素の型

型名 内容
complexType 子要素を持ってもよい。
simpleType 子要素は持たない。内側に含むのは要素値のみ。

データ型

型名 内容
token 復帰(carriage return,#xD)、改行(line feed,#xA)、タブ(#x9)の各文字を含まない文字列(標準化済み文字列 normalizedString)に、「前後に空白(space,#x20)を持たない」、「連続する2つ以上の空白も含まない」という制限を加えたもの。

参考文献・サイト

スキーマ

スキーマはXMLドキュメントの構造定義を記述したXMLファイル。

XML宣言

この文書がXML文書であることを宣言する。必ず最初の行に記述する。

【書式】
<xml 属性>
    
version="バージョン"
XMLのバージョンを示す。通常"1.0"。
<xml version="1.0">
	
encoding="エンコーディング"
文書のエンコーディングを示す。"utf-8"など
<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」、データ型「整数」
    

属性定義(<xs:attribute...>)

【書式】
<名前空間: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>