XMLゼミ 独習XML ~第3章 文書と構造~ 3.3 スキーマ 3.3 XML Schema 谷津 哲平 スキーマとは さまざまな文書やデータの内容構造を定義したもの(広義) 整形式文書(内容の保証なし) 検証済み文書(構造が厳格) スキーマ文書 XML文書の構造を定義するための方法 DTD (Document Type Definition、文書型定義) XML Schema (XMLスキーマ) RELAX (Regular Language Description for XML) Microsoft XML Schema (XML Data) ※スキーマとXML Schemaは同じではない 有効性を検証した文書(valid XML document)はタグの順序や属性値などが スキーマ文書に定義されているとおりだと保証される XML Schema 概要 XMLの文書型定義にはDTDが使われてきたが不十分になり、 XML Schemaは機能不足を改善し、文法規則をXMLと同じにした 使い方 musinst.xml XML文書 musinst.xsd XML Schema バリデータ(Validator) or XMLパーサ XML文書を 検証する Schema 要素 XML Shema を定義するときは schema要素を記述し,その中に スキーマの定義を記述する XMLスキーマのスケルトン <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> (スキーマ定義) </xml:schema> コメント,要素宣言 XML Schemaのコメント <!-- schema.xsd --> ※XML 文書と同じ XML Schemaの要素宣言(element declaration) <xsd:element name=“楽器” type=“xsd:string”> type属性の値 string(文字列型)であることを示す name属性の値 要素名が「楽器」であることを示している 単純型(simpleType) XML Schemaではデータ型に単純型と複合型がある 単純型 単純型 説明 値の例 string 文字列 Mojiretu positiveInteger 正の整数 1, 126789 integer 整数 -126789, -1, 0, 1 uriReference URL http://www.ibaraki.ac.jp/ decimal 10進数 -10, 0, 123.4, 1000.0 time 時刻 13:20:00.000 単純型のユーザ定義 独自の単純な型を単純型(simpleType)として定義できる ユーザ定義の例 <xsd:simpleType name=“MyType” base=“xsd:string”> <xsd:pattern value=“[A-Z]{2}”/> </xml:simpleType> 「MyType」という単純型を文字列方をベースに A-Zの範囲の大文字の英文字2文字で構成されるpatternと定義 (文字列の形式を指定する要素) 複合型 (complexType) XML文書の構造や複数の要素を含む要素はcomplexTypeを使う 複合型 <?xml version=“1.0” encoding=“UTF-16” ?> <!– schema.xsd --> <xsd:schema xmlns:xsd=“http://www.w3.org/1999/XMLSchema”> <xsd:complexType name=“連絡先”> <xsd:element name=“氏名” type=“xsd:string”> 要素宣言 <xsd:attribute name=“CODE” type=“xsd:long”/> <xsd:attribute name=“TEL” type=“xsd:string”/> 属性宣言 <xsd:attribute name=“FAX” type=“xsd:string”/> </xsd:element> </xsd:complexType> </xmd:schema> 要素参照,出現回数 要素参照の指定 <xsd:element ref=“Title” minOccurs=“0” /> 要素の参照は ref属性を使う 出現回数の指定 <xsd:element name=“氏名” type=“xsd:string” minOccurs=“1” /> <xsd:element name=“TEL” type=“xsd:string” /> <xsd:element name=“別名” type=“xsd:string” minOccurs=“0” maxOccurs=“unbounded” /> 要素「氏名」タグが少なくとも1個,要素「TEL」も少なくとも1個 要素「別名」は出現しなくても,いくつ出現してもよい 要素がいくつでもよいとき maxOccurs に“unbounded”を指定する 属性宣言(attribute declaration) 属性はattribute要素で宣言する 属性の指定 <xsd:attribute name=“CODE” type=“xsd:NMTOKEN”/> 連絡先の<氏名>タグの属性“CODE”を“xsd:NMTOKEN”型の 属性として指定する例 ファセット(facet)[1] 制限を表すもの XML Shema では既存のデータ型の範囲やサイズを制限して 新しいデータ型を定義することができる xsd:length 値の長さを限定する.文字列の場合は文字単位, バイナリーデータの場合はオクテット(8ビット)単位, リストの場合はリスト項目単位で指定. <xsd:length value=”5”> 文字列の場合 5文字という制限になる ファセット(facet)[2] xsd:minLength 値の長さの最小値を限定する. xsd:maxLength 値の長さの最大値を限定する. 要素名「title」 <xsd:element name="title"> 単純型である <xsd:simpleType> <xsd:restriction base="xsd:string"> 「xsd:string」を元に制限をつける <xsd:maxLength value=“32" /> <xsd:minLength value=“6" /> ファセット </xsd:restriction> 最大値32,最小値6 という制限 </xsd:simpleType> </xsd:element> ファセット(facet)[3] xsd:maxInclusive 値の範囲の最大値を限定する.指定した値は含まれる. <xsd:maxInclusive value=”10”> 10以下 xsd:maxExclusive 値の範囲の最大値を限定する.指定した値は含まれない. <xsd:maxExclusive value=”10”> 10未満 XML Schema の例 (再) 「楽器リスト」は「楽器」要素で構成 「楽器」の個数は無限 「記譜音域」は省略できる 文字型要素 正の整数型要素 課題 ●XML Schema で,要素の内容を1以上10未満に 制約する定義を記述する
© Copyright 2024 ExpyDoc