PnYnMnDTnHnMnS | 時間間隔を定義します。P は固定で期間を表します。S の前の n には小数部を含めることができ、その他は整数である必要があります | |
注: 上記の最初の 8 種類の後に Z を追加して UTC 時間を表すことができます。Y、M、D、h、m、s はそれぞれ年、月、日、時、分、秒を表し、それらはすべて次のようになります。有効な整数に置き換えられます。年 4 桁が足りない場合は、先頭にマイナス記号を追加して、月、日、時、分、BC を示します。次に、ミリ秒sss には 1 ~ 3 桁の整数を左に追加します。
(5) バイナリデータ型
XSDには次の2つのバイナリデータ型があります:
A: hexBinary、16進数で保存されたバイナリデータなので、0~9、a~f、A~のみで構成できますF とその他の文字で構成され、文字長は偶数でなければなりません。
B: Base64Binary、Base64 エンコードで保存されたバイナリ データ。そのため、0 ~ 9、a ~ f、A ~ F、正符号 + などの文字でのみ構成でき、文字の長さは 4 の倍数である必要があります。 。
(6) anyURI タイプ: 正当な URI。
(7) NOTATION タイプ: DTD と同じで、法的記号を示します。
3. 単純なデータ型をカスタマイズする
(1) 要素を使用して単純なデータ型をカスタマイズするための構文は次のとおりです:
<simpleType id=ID name=NCName final=... any-attributes> (annotation?,(restriction|list|union)) <!-- 1.id属性是可选的,用于唯一标识<simpleType>元素本身 2.name属性表示自定义数据类型的名称,值是NCName类型,并且必须在所有<simpleType>和<complexType>之间唯一,<simpleType>是<schema>的子元素时必须指定,这个时候新定义的数据类型为全局的数据类型 --></simpleType>
ログイン後にコピー
(2) schema 要素でグローバル データ型を定義できます。または、ローカル データ型を他の要素で定義することもできます。
(3) Final 属性は、新しいタイプの派生を制限するために使用されます。デフォルト値は、ルート要素 の FinalDefault 属性の値です。
A、#all : 任意の形式で派生する型を制限します。 新しい型
B、制限、リスト、共用体の自由な組み合わせ: 新しい型を派生するための指定されたメソッドの使用を制限します
C、"": 制限なし
4。制限によるデータ型
From 構文の観点から見ると、 要素を使用して単純型をカスタマイズするには、restriction、list、union の 3 つの方法があります。このセクションでは、まず最初のタイプ、restriction について説明します。
(1) 構文形式は次のとおりです。
<simpleType ...> <restriction id=ID base=QNAME any-attributes> <!--1.处于<simpleType>元素下的语法--> (annotation?,(simpleType?,(12种数据类型约束)*)) </restriction></simpleType><simpleContent ...> <restriction id=ID base=QNAME any-attributes> <!--2.处于<simpleContent>元素下的语法--> (annotation?,(simpleType?,(12种数据类型约束)*)?,((attribute|attributeGroup)*,anyAttribute?)) </restriction></simpleContent><complextContent ...> <restriction id=ID base=QNAME any-attributes> <!--3.处于<complextContent>元素下的语法--> (annotation?,(group|all|choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)) </restriction></complextContent>
ログイン後にコピー
ここで、id 属性は 要素自体を一意に識別します。base 属性は、このスキーマ (または によって示される他のスキーマ) で定義されていることを示します。組み込みデータ型の名前、simpleType 要素または complexType 要素は、基本属性を指定せずに、 サブ要素を直接使用して、制限された基本型を定義することもできます。
(2) 制約: XSD では、基本型に制約を追加することで制約が実現されます。これらの制約はどの基本タイプに適用できますか? ...
精度制約 10進数 | fractionDigits | 許容される小数点以下の最大桁数 | |
totalDigits 許容される最大桁数(小数点を除く) | | 長さの制約s | | 文字列、QName 、anyURI、バイナリデータ
制約にも使用可能 リストタイプ リスト項目数 | length | 文字長またはリスト項目数 | |
maxLength 文字長またはリスト項目の最大数 | |
minLength 文字長またはリストの項目数の最小値 | 範囲制約 数値、日付などの大小の型を比較可能 | maxExclusive | 上限許容値は上限と等しくすることはできません |
minExclusive | 許容値の下限は下限と等しくすることはできません |
maxInclusive | 許容値の上限は、上限 |
minInclusive | 許容値の下限は下限と同じにすることができます | | 正規表現の制約 |
さまざまなデータ型 パターン | 正規表現を使用して、出現できる文字を制限します |
空白処理制約 | | whiteSpace
空白文字 (改行、復帰、スペース、タブなど) の処理方法を定義します | preserve: すべての空白をそのまま保持します |
replace: 置換しますすべての空白文字とスペース 折りたたみ: 最初に置換し、次に先頭と末尾のスペースを削除し、中央の連続するスペースを 1 つに圧縮します | | 在派生新的类型时,如果原来类型有一个约束,新派生类型使用相同的约束,且新约束范围在原约束范围之内,则新类型的约束将会覆盖原类型的约束。但有时候,想阻止派生类型覆盖已有的约束,这个时候可以在原类型的约束上添加fixed属性(true|false)。 5、通过列表派生自定义数据类型 (1)列表元素的语法: <list id=ID itemType=QName any-attributes> (annotatin?,(simpleType?))</list> ログイン後にコピー (2)指定列表成员类型的方法 A、使用itemType属性 B、使用子元素,这个时候不能指定itemType属性 (3)实际上,内置的IDREFS、ENTITIES、NMTOKENS分别是IDREF、ENTITY、NMTOKEN类型的列表类型。 (4)使用空格作为列表类型值的分隔符。 (5)可以对列表类型使用长度约束(约束列表项的个数)、枚举约束、正则表达式约束和空白处理约束(但值只能是collapse),需要注意的是,枚举约束和正则表达式约束的是整个列表类型的值,而不仅仅只是其中一个列表项值。 6、通过联合派生自定义数据类型 (1)联合元素的语法: <union id=ID memberTypes="QName列表" any-attributes> (annotatin?,(simpleType*))</union> ログイン後にコピー (2)指定联合成员类型的方法 A、使用属性memberTypes,多个类型使用空格分隔 B、使用一个或多个子元素 (3)可以对联合类型使用枚举约束和正则表达式约束,同样,约束的也是整个联合类型的值。 (4)列表类型和联合类型都是在现有类型的基础上派生新类型,在XSD中还可以使用元素由联合类型派生出相应的列表类型,也可以使用元素将一个或多个已有的列表类型派生出新的联合类型,不过需要注意的是,不能使用列表类型派生新的列表类型,也不能使用含有列表类型的联合类型派生新的列表类型。 7、最后看一个使用三种方式自定义简单类型的实例: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!--从int派生的ageType--> <xs:simpleType name="ageType"> <xs:restriction base="xs:int"> <xs:maxInclusive value="100"/> <xs:minInclusive value="0"/> </xs:restriction> </xs:simpleType> <!--由ageType派生出对应的列表类型--> <xs:simpleType name="ageListType"> <xs:list itemType="ageType"/> </xs:simpleType> <!--从string派生的nameType--> <xs:simpleType name="nameType"> <xs:restriction base="xs:string"> <xs:maxLength value="20"/> <xs:minLength value="4"/> </xs:restriction> </xs:simpleType> <!--由nameType派生出对应的列表类型--> <xs:simpleType name="nameListType"> <xs:list itemType="nameType"/> </xs:simpleType> <!--由ageType和nameType派生出联合类型--> <xs:simpleType name="ageType_nameType"> <xs:union memberTypes="ageType nameType"/> </xs:simpleType> <!--使用两个列表类型派生联合类型--> <xs:simpleType name="ageListType_nameListType"> <xs:union memberTypes="ageListType nameListType"/> </xs:simpleType> <!--使用两个联合类型派生联合类型--> <xs:simpleType name="furtherType"> <xs:union memberTypes="ageType_nameType ageListType_nameListType"/> </xs:simpleType> <!--一个列表类型,一个联合类型派生联合类型--> <xs:simpleType name="furtherMixType"> <xs:union memberTypes="nameListType ageListType_nameListType"/> </xs:simpleType> <!--由联合类型派生出对应的列表类型--> <xs:simpleType name="ageType_nameType_ListType"> <xs:list itemType="ageType_nameType"/> </xs:simpleType></xs:schema> ログイン後にコピー |