Data Types
1. String Data Types
1.1 String Data Type
可包含字符、缩进、回车、tab
在这样的Schema定义中:
<xs:element name=”customer” type=”xs:string”/>
XML中的元素可以是这样:
<customer>John Smith</customer>
也可以是这样:
<customer> John Smith </customer>
XML处理器将不会修改使用的string数据类型的值
1.2 NormalizedString Data Type
normalizedString类型由string数据类型继承而来
normalizedString类型也包含字符,但是XML处理器将替换缩进、回车以及制表符
上面的第三个例子,将用space代替tab
1.3 Token Data Type
也继承自String,但XML Processor将去除feeds、carriage returns、tabs、行首空格和行尾空格、多空格。
上面的第三个例子,tab将被去除
1.4 String Data Types
所有从string继承的类型
Name |
Description |
ENTITIES |
|
ENTITY |
|
ID |
A string that represents the ID attribute in XML (only used with schema attributes) |
IDREF |
A string that represents the IDREF attribute in XML (only used with schema attributes) |
IDREFS |
|
language |
A string that contains a valid language id |
Name |
A string that contains a valid XML name |
NCName |
|
NMTOKEN |
A string that represents the NMTOKEN attribute in XML (only used with schema attributes) |
NMTOKENS |
|
normalizedString |
A string that does not contain line feeds, carriage returns, or tabs |
QName |
|
string |
A string |
token |
A string that does not contain line feeds, carriage returns, tabs, leading or trailing spaces, or multiple spaces |
1.5 可用于String数据类型的约束
ü enumeration
ü length
ü maxLength
ü minLength
ü pattern(NMTOKENS,IDREFS和ENTITIES不能用于这种约束)
ü whiteSpace
2. Date and Time Data Types
2.1 Date Data Type
YYYY-MM-DD
schema: <xs:element name=”start” type=”xs:date”/>
xml element: <start> 2004-09-24 </start>
Time Zones
要指定时区,可以输入一个UTC日期,然后加一个Z
<start> 2002-09-24 Z</start> |
或者加上正负时间差来表示时间偏移量
<start> 2002-09-24 -06:00</start>
OR
<start> 2002-09-24 +06:00</start> |
2.2 Time Data Type
hh:mm:ss
schema: <xs:element name=”start” type=”xs:time”/>
xml element: <start>09:00:00</start>
也可能像这样:<start>09:30:10.5</start>
Time Zones
时区同上
2.3 DateTime Data Type
YYYY-MM-DDThh:mm:ss 注意:T表示开始时间部分
schema: <xs:element name=”startdate” type=”xs:dateTime”/>
xml element: <start> 2002-05-30 T09:30:10.5</start>
Time Zones
直接加在最后: 2002-05-30 T09:30:10-06:00、 2002-05-30 T09:30:10+06:00
2.4 Duration Data Type
duration用于标识时间间隔, PnYnMnDTnHnMnS
P是必须的,用于标识是一个时间段
n表示具体的年、月、日、时、分、秒的数量
schema: <xs:element name=”period” type=”xs:duration”>
<period>P5Y</period> 五年
<period>P5Y 2M 10DT15H</period>五年两个月十天十五小时
<period>PT15H</period> 15小时,只表示时间也需加T
负时间段:
要指明一个负时间段,在前面加负号
<period>-P10D</period> 负10天
2.5 Date and Time Data Types
Name |
Description |
date |
Defines a date value |
dateTime |
Defines a date and time value |
duration |
Defines a time interval |
gDay |
Defines a part of a date - the day (DD) |
gMonth |
Defines a part of a date - the month (MM) |
gMonthDay |
Defines a part of a date - the month and day (MM-DD) |
gYear |
Defines a part of a date - the year (YYYY) |
gYearMonth |
Defines a part of a date - the year and month (YYYY-MM) |
time |
Defines a time value |
2.6 Restrictions On Date Data Types
ü enumeration
ü maxExclusive
ü maxInclusive
ü minExclusive
ü minInclusive
ü pattern
ü whiteSpace
3. Numeric Data Types
3.1 Decimal Data Type
Schema: <xs:element name=”prize” type=”xs:decimal”/>
xml element:
<prize>999.50</prize> 可以有个后面的0
<prize>+999.50</prize> 前面可以添加正负号
<prize>-999.50</prize>
3.2 Integer Data Type
整数,可以添加正负号
3.3 Numeric Data Type
Name |
Description |
byte |
A signed 8-bit integer |
decimal |
A decimal value |
int |
A signed 32-bit integer |
integer |
An integer value |
long |
A signed 64-bit integer |
negativeInteger |
An integer containing only negative values ( .., -2, -1.) |
nonNegativeInteger |
An integer containing only non-negative values (0, 1, 2, ..) |
nonPositiveInteger |
An integer containing only non-positive values (.., -2, -1, 0) |
positiveInteger |
An integer containing only positive values (1, 2, ..) |
short |
A signed 16-bit integer |
unsignedLong |
An unsigned 64-bit integer |
unsignedInt |
An unsigned 32-bit integer |
unsignedShort |
An unsigned 16-bit integer |
unsignedByte |
An unsigned 8-bit integer |
byte: 一个8位的带符号的整数,所以范围为-128~127(2的7次幂)
int: 32位,不同于integer
long: 64位,这时候为最大值为9223372036854775807,为19位,超过了decimal
short: 16位
3.4 Restrictions on Numeric Data Types
ü enumeration
ü fractionDigits
ü maxExclusive
ü maxInclusive
ü minExclusive
ü minInclusive
ü pattern
ü totalDigits
ü whiteSpace
4. Miscellaneous Data Types
其它的数据类型包括:
boolean,base64Binary,hexBinary,float,double,anyURI,QName,NOTATION
4.1 Boolean Data Type
可以为四个值true/false/1/0,其余均不合法
4.2 Binary Data Types
有两种binary类型:
base64Binary(Base64-encoded binary data)
hexBinary(hexadecimal-encoded binary data)
4.3 AnyURI Data Type
表示一个URI
schema: <xs:attribute name=”src” type=”xs:anyURI”/>
xml: <pic src=”http://www.w3schools.com/images/siley.gif”/>
注意:如果URI包含空格,用”% 20” 代替
4.4 Miscellaneous Data Types
Name |
Description |
anyURI |
|
base64Binary |
|
boolean |
|
double |
|
float |
|
hexBinary |
|
NOTATION |
|
QName |
|
4.5 Restrictions on Miscellaneous Data Types
ü enumeration(boolean不能使用)
ü length(boolean不能使用)
ü maxLength(boolean不能使用)
ü minLength(boolean不能使用)
ü patter
ü whiteSpace
5. XSD Elements
Element |
Explanation |
all |
Specifies that the child elements can appear in any order. Each child element can occur 0 or 1 time |
annotation |
Specifies the top-level element for schema comments |
any |
Enables the author to extend the XML document with elements not specified by the schema |
anyAttribute |
Enables the author to extend the XML document with attributes not specified by the schema |
appInfo |
Specifies information to be used by the application (must go inside annotation) |
attribute |
Defines an attribute |
attributeGroup |
Defines an attribute group to be used in complex type definitions |
choice |
Allows only one of the elements contained in the <choice> declaration to be present within the containing element |
complexContent |
Defines extensions or restrictions on a complex type that contains mixed content or elements only |
complexType |
Defines a complex type element |
documentation |
Defines text comments in a schema (must go inside annotation) |
element |
Defines an element |
extension |
Extends an existing simpleType or complexType element |
field |
Specifies an XPath expression that specifies the value used to define an identity constraint |
group |
Defines a group of elements to be used in complex type definitions |
import |
Adds multiple schemas with different target namespace to a document |
include |
Adds multiple schemas with the same target namespace to a document |
key |
Specifies an attribute or element value as a key (unique, non-nullable, and always present) within the containing element in an instance document |
keyref |
Specifies that an attribute or element value correspond to those of the specified key or unique element |
list |
Defines a simple type element as a list of values |
notation |
Describes the format of non-XML data within an XML document |
redefine |
Redefines simple and complex types, groups, and attribute groups from an external schema |
restriction |
Defines restrictions on a simpleType, simpleContent, or a complexContent |
schema |
Defines the root element of a schema |
selector |
Specifies an XPath expression that selects a set of elements for an identity constraint |
sequence |
Specifies that the child elements must appear in a sequence. Each child element can occur from 0 to any number of times |
simpleContent |
Contains extensions or restrictions on a text-only complex type or on a simple type as content and contains no elements |
simpleType |
Defines a simple type and specifies the constraints and information about the values of attributes or text-only elements |
union |
Defines a simple type as a collection (union) of values from specified simple data types |
unique |
Defines that an element or an attribute value must be unique within the scope |
6. XSD Restrictions/Facets for Datatypes
Constraint |
Description |
enumeration |
Defines a list of acceptable values |
fractionDigits |
Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero |
length |
Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero |
maxExclusive |
Specifies the upper bounds for numeric values (the value must be less than this value) |
maxInclusive |
Specifies the upper bounds for numeric values (the value must be less than or equal to this value) |
maxLength |
Specifies the maximum number of characters or list items allowed. Must be equal to or greater than zero |
minExclusive |
Specifies the lower bounds for numeric values (the value must be greater than this value) |
minInclusive |
Specifies the lower bounds for numeric values (the value must be greater than or equal to this value) |
minLength |
Specifies the minimum number of characters or list items allowed. Must be equal to or greater than zero |
pattern |
Defines the exact sequence of characters that are acceptable |
totalDigits |
Specifies the exact number of digits allowed. Must be greater than zero |
whiteSpace |
Specifies how white space (line feeds, tabs, spaces, and carriage returns) is handled |