Download - XML ゼミ
![Page 1: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/1.jpg)
XML ゼミ
独習 XML~ 第 3 章 文書と構造 ~
3.3 スキーマ3.3 XML Schema
谷津 哲平
![Page 2: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/2.jpg)
スキーマとはさまざまな文書やデータの内容構造を定義したもの(広義)
整形式文書(内容の保証なし)検証済み文書(構造が厳格)
XML 文書の構造を定義するための方法DTD (Document Type Definition 、文書型定義 )XML Schema (XML スキーマ )RELAX (Regular Language Description for XML)Microsoft XML Schema (XML Data)
※ スキーマと XML Schema は同じではない
スキーマ文書
有効性を検証した文書( valid XML document )はタグの順序や属性値などがスキーマ文書に定義されているとおりだと保証される
![Page 3: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/3.jpg)
XML Schema 概要
musinst.xmlXML 文書
musinst.xsdXML Schema
使い方
XML 文書を検証する
バリデータ( Validator )or
XML パーサ
バリデータ( Validator )or
XML パーサ
XML の文書型定義には DTD が使われてきたが不十分になり、XML Schema は機能不足を改善し、文法規則を XML と同じにした
![Page 4: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/4.jpg)
Schema 要素
XMLXML スキーマのスケルトンスキーマのスケルトン
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>( スキーマ定義 )</xml:schema>
XML Shema を定義するときは schema 要素を記述し,その中にスキーマの定義を記述する
![Page 5: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/5.jpg)
コメント,要素宣言XML SchemaXML Schema のコメンのコメントト
<!-- schema.xsd --> ※XML 文書と同じ
XML SchemaXML Schema の要素宣言の要素宣言( element declaration )
<xsd:element name=“ 楽器” type=“xsd:string”>
name 属性の値要素名が「楽器」であることを示している
type 属性の値string (文字列型)であることを示す
![Page 6: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/6.jpg)
単純型( 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
![Page 7: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/7.jpg)
単純型のユーザ定義
ユーザ定義の例ユーザ定義の例
<xsd:simpleType name=“MyType” base=“xsd:string”> <xsd:pattern value=“[A-Z]{2}”/></xml:simpleType>
独自の単純な型を単純型 (simpleType) として定義できる
「 MyType 」という単純型を文字列方をベースにA-Z の範囲の大文字の英文字 2 文字で構成される pattern と定義
( 文字列の形式を指定する要素 )
![Page 8: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/8.jpg)
複合型 (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>
XML 文書の構造や複数の要素を含む要素は complexType を使う
要素宣言
属性宣言
![Page 9: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/9.jpg)
要素参照,出現回数要素参照の指定要素参照の指定
<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” を指定する
![Page 10: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/10.jpg)
属性宣言( attribute declaration )
属性の指定属性の指定
<xsd:attribute name=“CODE” type=“xsd:NMTOKEN”/>
連絡先の < 氏名 > タグの属性“ CODE” を“ xsd:NMTOKEN” 型の属性として指定する例
属性は attribute 要素で宣言する
![Page 11: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/11.jpg)
ファセット( facet ) [1]
xsd:length値の長さを限定する.文字列の場合は文字単位,バイナリーデータの場合はオクテット (8 ビット ) 単位,リストの場合はリスト項目単位で指定 .
XML Shema では既存のデータ型の範囲やサイズを制限して新しいデータ型を定義することができる
制限を表すもの
<xsd:length value=”5”>
文字列の場合 5文字という制限になる
![Page 12: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/12.jpg)
ファセット( facet ) [2]xsd:minLength値の長さの最小値を限定する.
<xsd:element name="title"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value=“32" /> <xsd:minLength value=“6" /> </xsd:restriction> </xsd:simpleType> </xsd:element>
最大値 32 ,最小値 6 という制限
xsd:maxLength値の長さの最大値を限定する.
要素名「 title 」
単純型である「 xsd:string 」を元に制限をつける
ファセット
![Page 13: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/13.jpg)
ファセット( facet ) [3]
xsd:maxInclusive値の範囲の最大値を限定する.指定した値は含まれる .
<xsd:maxInclusive value=”10”> 10 以下
xsd:maxExclusive値の範囲の最大値を限定する.指定した値は含まれない .
<xsd:maxExclusive value=”10”> 10 未満
![Page 14: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/14.jpg)
XML Schema の例 (再)「楽器リスト」は「楽器」要素で構成
「楽器」の個数は無限
「記譜音域」は省略できる
文字型要素
正の整数型要素
![Page 15: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/15.jpg)
![Page 16: XML ゼミ](https://reader036.vdocuments.pub/reader036/viewer/2022082819/56813b47550346895da42a48/html5/thumbnails/16.jpg)
課題
●XML Schema で,要素の内容を 1 以上 10 未満に 制約する定義を記述する