日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XSD(Schema)教程

發(fā)布時(shí)間:2024/4/17 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XSD(Schema)教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://www.cnblogs.com/caoxch/archive/2006/11/17/563856.html

XSD(Schema)教程 [轉(zhuǎn)]

schema教程

XML Schema是以XML語言為基礎(chǔ)的,它用于可替代DTD。
一份XML schema文件描述了XML文檔的結(jié)構(gòu)
XML Schema語言也被稱為XML Schema Definition (XSD)(XML Schema定義).
在本章教程你將學(xué)習(xí)如何讀取和建立XML Schemas,以及為什么XML Schemas比DTDs的功能更為強(qiáng)大,還有如何在你的程序中使用XML Schema語言

XML Schema 參考資料

你可以找到完整的有效的XML Schema元素

XML Schema 參考

Schema 介紹
w3pop.com / 2006-09-19

為何使用 XML Schemas?

XML Schema is an XML-based alternative to DTD.
XML Schema是以XML語言為基礎(chǔ)的,它用于可替代DTD。

An XML schema describes the structure of an XML document.
一份XML schema文件描述了XML文檔的結(jié)構(gòu)。

The XML Schema language is also referred to as XML Schema Definition (XSD).
XML Schema語言也被稱為XML Schema Definition (XSD)(XML Schema定義).


What You Should Already Know
你應(yīng)該已經(jīng)掌握的知識(shí)

Before you continue you should have a basic understanding of the following:
在繼續(xù)之前你應(yīng)對(duì)以下內(nèi)容有基本了解:

  • HTML / XHTML
  • XML and XML Namespaces
    XML 和 XML 名稱空間
  • A basic understanding of DTD
    對(duì)DTD有基本的了解

If you want to study these subjects first, find the tutorials on our Home page.
如果你想先學(xué)這些內(nèi)容,請(qǐng)看我們主頁上的的學(xué)習(xí)教程


What is an XML Schema?
什么是XML Schema?

The purpose of an XML Schema is to define the legal building blocks of an XML document, just like a DTD.
XML Schema的作用是定義一份XML文檔的合法組件群,就像DTD的作用一樣

An XML Schema:
一份XML Schema

  • defines elements that can appear in a document
    定義了可以出現(xiàn)在文檔里的元素
  • defines attributes that can appear in a document
    定義了可以出現(xiàn)在文檔里的屬性
  • defines which elements are child elements
    定義了哪些元素是子元素
  • defines the order of child elements
    定義了子元素的順序
  • defines the number of child elements
    定義了子元素的數(shù)量
  • defines whether an element is empty or can include text
    定義了一個(gè)元素應(yīng)是否能包含文本,或應(yīng)該是空的
  • defines data types for elements and attributes
    定義了元素和屬性的數(shù)據(jù)類型
  • defines default and fixed values for elements and attributes
    定義了元素和屬性的默認(rèn)值和固定值

XML Schemas are the Successors of DTDs
XML Schema 是DTD的“接任者”

We think that very soon XML Schemas will be used in most Web applications as a replacement for DTDs. Here are some reasons:
我們認(rèn)為XML Schema很快就會(huì)替代DTD在大多數(shù)的網(wǎng)絡(luò)應(yīng)用程序中被廣泛使用。

  • XML Schemas are extensible to future additions
    XML Schema針對(duì)將來的額外內(nèi)容是可擴(kuò)展的
  • XML Schemas are richer and more powerful than DTDs
    XML Schema內(nèi)容比DTD豐富,作用也更大
  • XML Schemas are written in XML?
    XML Schema是以XML語言編寫而成的
  • XML Schemas support data types
    XML Schema支持?jǐn)?shù)據(jù)類型
  • XML Schemas support namespaces?
    XML Schema支持名稱空間(namespaces)

XML Schema is a W3C Standard
XML Schema是W3C定義的標(biāo)準(zhǔn)

XML Schema became a W3C Recommendation 02. May 2001.
XML Schema于2001年5月2日成為W3C推薦使用的標(biāo)準(zhǔn)

You can read more about the XML Schema standard in our W3C tutorial.
在W3C 教程中你能閱讀到更多關(guān)于XML Schema標(biāo)準(zhǔn)。

為何使用 XML Schemas?
w3pop.com / 2006-09-21

Schema 介紹 如何制定 XSD

XML Schemas are much more powerful than DTDs.
XML Schema比DTD作用更加強(qiáng)大。


XML Schemas Support Data Types
XML Schema支持?jǐn)?shù)據(jù)類型

One of the greatest strength of XML Schemas is the support for data types.
XML Schema的最好用的地方之一就是它支持?jǐn)?shù)據(jù)類型

With support for data types:
支持?jǐn)?shù)據(jù)類型所帶來的好處:

  • It is easier to describe allowable document content
    更易于描述被允許的文檔內(nèi)容
  • It is easier to validate the correctness of data
    更易于檢驗(yàn)數(shù)據(jù)的正確性
  • It is easier to work with data from a database
    更易于與數(shù)據(jù)庫中的數(shù)據(jù)一起協(xié)同工作
  • It is easier to define data facets (restrictions on data)
    更易于定義數(shù)據(jù)的使用面(關(guān)于數(shù)據(jù)的限制)
  • It is easier to define data patterns (data formats)
    更易于定義數(shù)據(jù)樣式(數(shù)據(jù)格式)
  • It is easier to convert data between different data types
    更易于把數(shù)據(jù)轉(zhuǎn)換成不同的數(shù)據(jù)類型

XML Schemas use XML Syntax
XML Schema使用XML的語法

Another great strength about XML Schemas is that they are written in XML.
XML Schema另一個(gè)好處就是他們是用XML編寫成的。

Some benefits of that XML Schemas are written in XML:
用XML編寫的好處是:

  • You don't have to learn a new language
    可以不需要再學(xué)一種新語言
  • You can use your XML editor to edit your Schema files
    可以用XML編輯器來編輯Schema文件
  • You can use your XML parser to parse your Schema files
    可以用XML解析器解析Schema文件
  • You can manipulate your Schema with the XML DOM
    可以用XML DOM 處理Schema
  • You can transform your Schema with XSLT
    可以用XSLT轉(zhuǎn)換Schema

XML Schemas Secure Data Communication
XML Schema安全數(shù)據(jù)通訊

When sending data from a sender to a receiver, it is essential that both parts have the same "expectations" about the content.
當(dāng)數(shù)據(jù)由發(fā)送者被傳向接受者時(shí),雙方對(duì)“數(shù)據(jù)內(nèi)容理解的一致性”就顯得非常重要了

With XML Schemas, the sender can describe the data in a way that the receiver will understand.
在XML Schema里,發(fā)送者可以用接受者能夠理解的方式描述數(shù)據(jù)。

A date like: "03-11-2004" will, in some countries, be interpreted as 3.November and in other countries as 11.March.
像這樣格式的日期:"03-11-2004",一些國家會(huì)解釋成11月3日,而別的國家會(huì)解釋成3月11日

However, an XML element with a data type like this:
<date type="date">2004-03-11</date>
ensures a mutual understanding of the content, because the XML data type "date" requires the format "YYYY-MM-DD".
然而,一個(gè)有著像這樣的數(shù)據(jù)種類的XML元素:<date type="date">2004-03-11</date>,就確保了雙方都能理解其內(nèi)容,因?yàn)閄ML數(shù)據(jù)類型的"date"要求規(guī)定為"YYYY-MM-DD"的格式。


XML Schemas are Extensible
XML Schema是可擴(kuò)展的

XML Schemas are extensible, because they are written in XML.
因?yàn)閄ML Schema文件是由XML編寫的,所以它們是可擴(kuò)展的。

With an extensible Schema definition you can:
Schema可擴(kuò)展意味著你可以:

  • Reuse your Schema in other Schemas
    在別的Schema文件里再次用到你的Schema
  • Create your own data types derived from the standard types
    從標(biāo)準(zhǔn)的數(shù)據(jù)類型中派生出你自己的數(shù)據(jù)類型
  • Reference multiple schemas in the same document
    在相同的文檔中參考多種Schema。

Well-Formed is not Enough
光有“規(guī)范”仍然是不夠的

A well-formed XML document is a document that conforms to the XML syntax rules, like:
規(guī)范的XML文檔是符合XML語法規(guī)則的文檔,就像這樣:

  • it must begin with the XML declaration
    ? 開頭必須有XML聲明
  • it must have one unique root element
    ? 必須有一個(gè)獨(dú)特的根目錄元素
  • start-tags must have matching end-tags
    ? 開始標(biāo)簽(start-tag)必須和結(jié)束標(biāo)簽(end-tag)匹配
  • elements are case sensitive
    ? 元素是有大小寫區(qū)分的
  • all elements must be closed
    ? 元素必須有結(jié)束
  • all elements must be properly nested
    ? 所有的元素必須被合理嵌套
  • all attribute values must be quoted
    ? 所有屬性值必須寫在引號(hào)里
  • entities must be used for special characters
    ? 用特殊字符時(shí)必須用到實(shí)體

Even if documents are well-formed they can still contain errors, and those errors can have serious consequences.
即使文檔是規(guī)范的,它們也可能包含錯(cuò)誤。這些錯(cuò)誤可能會(huì)引起嚴(yán)重的后果。

Think of the following situation: you order 5 gross of laser printers, instead of 5 laser printers. With XML Schemas, most of these errors can be caught by your validating software.
試想下面的情況:你預(yù)定了 5羅(1羅=12打=144臺(tái))激光打印機(jī),而不是5臺(tái)打印機(jī)。在XML Schema文件里,大多數(shù)像這樣的錯(cuò)誤會(huì)由檢驗(yàn)軟件產(chǎn)生。

如何制定 XSD
w3pop.com / 2006-09-21

為何使用 XML Schemas? XSD - <schema> 元素

XML documents can have a reference to a DTD or to an XML Schema.
XML文檔能和一份DTD或XML Schema文件相關(guān)聯(lián)。


A Simple XML Document
一份簡(jiǎn)單的XML文檔

Look at this simple XML document called "note.xml":
請(qǐng)看下面名為"note.xml"的一份簡(jiǎn)易的XML文檔

<?xml version="1.0"?> <note><to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>


A DTD File
一份DTD文件

The following example is a DTD file called "note.dtd" that defines the elements of the XML document above ("note.xml"):
下面的例子是名為"note.dtd"的DTD文件,它定義了上述XML文檔("note.xml")的元素。

<!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

The first line defines the note element to have four child elements: "to, from, heading, body".
第一行定義了含有"to, from, heading, body".四個(gè)子元素的“note”元素。

Line 2-5 defines the to, from, heading, body elements to be of type "#PCDATA".
第2到5行定義了"#PCDATA". 類型的“to, from, heading, body”四個(gè)元素


An XML Schema
?一份XML Schema

The following example is an XML Schema file called "note.xsd" that defines the elements of the XML document above ("note.xml"):
下面的例子當(dāng)中,一個(gè)名為"note.xsd"的XML Schema文件定義了上述XML文檔("note.xml")中的元素

<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com"xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xs:element name="note"><xs:complexType><xs:sequence><xs:element name="to" type="xs:string"/><xs:element name="from" type="xs:string"/><xs:element name="heading" type="xs:string"/><xs:element name="body" type="xs:string"/></xs:sequence></xs:complexType> </xs:element> </xs:schema>

The note element is a complex type because it contains other elements. The other elements (to, from, heading, body) are simple types because they do not contain other elements. You will learn more about simple and complex types in the following chapters.
Note元素是復(fù)合類型(complex type)因?yàn)樗似渌?#xff0c;其他元素(to, from, heading, body)屬于簡(jiǎn)單類型(simple type),因?yàn)樗话渌亍T谙旅鎺渍吕锬銜?huì)學(xué)到更多關(guān)于簡(jiǎn)單類型和復(fù)合類型的相關(guān)知識(shí)。


A Reference to a DTD
和DTD相關(guān)

This XML document has a reference to a DTD:
XML文檔和DTD相關(guān):

<?xml version="1.0"?> <!DOCTYPE note SYSTEM "http://www.w3schools.com/dtd/note.dtd"> <note> <to>Tove</to> <from>Jani</from><heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>


A Reference to an XML Schema
和XML Schema相關(guān)

This XML document has a reference to an XML Schema:
下面的XML文檔和XML Schema相關(guān):

<?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"><to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body></note>

XSD - <schema> 元素
w3pop.com / 2006-09-21

如何制定 XSD XSD Simple 元素

The <schema> element is the root element of every XML Schema.
<schema>元素是每個(gè)XML Schema文件的根元素。


The <schema> Element
<schema>元素

The <schema> element is the root element of every XML Schema:
<schema>元素是每份XML Schema文件的根元素。

<?xml version="1.0"?> <xs:schema> ... ... </xs:schema>

The <schema> element may contain some attributes. A schema declaration often looks something like this:
<schema>元素也可以含有一些屬性,一個(gè)schema聲明經(jīng)常寫成這樣:

<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com"elementFormDefault="qualified"> ... ... </xs:schema>

The following fragment:
看下面的片段:

xmlns:xs="http://www.w3.org/2001/XMLSchema"

indicates that the elements and data types used in the schema come from the "http://www.w3.org/2001/XMLSchema" namespace. It also specifies that the elements and data types that come from the "http://www.w3.org/2001/XMLSchema" namespace should be prefixed with xs:
指明了在schema中使用的元素和數(shù)據(jù)種類來自http://www.w3.org/2001/XMLSchema名稱空間(namespace)。它也指定了來自"http://www.w3.org/2001/XMLSchema"名稱空間(namespace)的元素和數(shù)據(jù)種類必須帶前綴“xs:”

This fragment:
這個(gè)片段:

targetNamespace="http://www.w3schools.com"

indicates that the elements defined by this schema (note, to, from, heading, body.) come from the "http://www.w3schools.com" namespace.
暗示了由這份schema(note, to, from, heading, body.)定義的元素來自"http://www.w3schools.com"名稱空間(namespace)

This fragment:
這個(gè)片段:

xmlns="http://www.w3schools.com"

indicates that the default namespace is http://www.w3schools.com.
指明了默認(rèn)名稱空間(namespace)是http://www.w3schools.com.

This fragment:
這個(gè)片段

elementFormDefault="qualified"

indicates that any elements used by the XML instance document which were declared in this schema must be namespace qualified.
指明了由這份schema聲明的XML實(shí)例文檔里用到的任何元素,都必須是有效的名稱空間(namespace qualified)。


Referencing a Schema in an XML Document
在一份XML文檔里提到Schema

This XML document has a reference to an XML Schema:
一份XML文檔里提提到XML? Schiema

<?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body></note>

The following fragment:
下面的片段:

xmlns="http://www.w3schools.com"

specifies the default namespace declaration. This declaration tells the schema-validator that all the elements used in this XML document are declared in the "http://www.w3schools.com" namespace.
指定了默認(rèn)的名稱空間(default namespace)聲明。這個(gè)聲明告訴schema-檢驗(yàn)器:這份XML文檔里用到的所有元素都在http://www.w3schools.com的名稱空間(namespace)中聲明過。

Once you have the XML Schema Instance namespace available:
一旦你有了可以利用的XML Schema Instance的名稱空間(namespace):

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

you can use the schemaLocation attribute. This attribute has two values. The first value is the namespace to use. The second value is the location of the XML schema to use for that namespace:
你可以用到SchemaLocation屬性。這個(gè)屬性有兩個(gè)值。第一個(gè)值是要用到的名稱空間(namespace)。第二個(gè)值是為名稱空間(namespace)指定了需要使用的XML schema的位置。

xsi:schemaLocation="http://www.w3schools.com note.xsd"

XSD Simple 元素
w3pop.com / 2006-09-21

XSD - <schema> 元素 XSD 屬性

XML Schemas define the elements of your XML files.
XML Schemas(XML公式)定義了XML文件的元素

A simple element is an XML element that contains only text. It cannot contain any other elements or attributes.
簡(jiǎn)單元素是只含有文本的XML元素。它不可以含有其他元素或?qū)傩?/p>


What is a Simple Element?
什么是簡(jiǎn)單元素?

A simple element is an XML element that can contain only text. It cannot contain any other elements or attributes.
簡(jiǎn)單元素是只含有文本的XML元素。它不可以含有其他元件或?qū)傩?/p>

However, the "only text" restriction is quite misleading. The text can be of many different types. It can be one of the types included in the XML Schema definition (boolean, string, date, etc.), or it can be a custom type that you can define yourself.
但是,“只含文本”這個(gè)限定條件是非常容易引起誤解的,文本可以有很多的不同類型。它可以是XML Schema定義里的文本類型之一(邏輯值,字符串,日期,等等),也可以是自定義文本類型。

You can also add restrictions (facets) to a data type in order to limit its content, or you can require the data to match a specific pattern.
你可以通過給數(shù)據(jù)類型添加限定條件來限制它的內(nèi)容,或者你可以要求數(shù)據(jù)與指定的式樣相匹配。


Defining a Simple Element
定義一個(gè)簡(jiǎn)明元素

The syntax for defining a simple element is:
定義簡(jiǎn)明元素的語法為:

<xs:element name="xxx" type="yyy"/>

where xxx is the name of the element and yyy is the data type of the element.
在這里, xxx是元素名稱,yyy是元素的數(shù)據(jù)類型

XML Schema has a lot of built-in data types. The most common types are:
XML Schema本身有很多數(shù)據(jù)種類。最常見的種類有:

  • xs:string
    xs:字符
  • xs:decimal
    xs: 小數(shù)
  • xs:integer
    xs:整數(shù)
  • xs:boolean
    xs:邏輯值
  • xs:date
    xs:日期
  • xs:time
    xs:時(shí)間

Example
例子

Here are some XML elements:
這里是一些XML元素

<lastname>Refsnes</lastname> <age>36</age> <dateborn>1970-03-27</dateborn>

And here are the corresponding simple element definitions:
下面是相應(yīng)的簡(jiǎn)單元素定義

<xs:element name="lastname" type="xs:string"/><xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/>


Default and Fixed Values for Simple Elements
簡(jiǎn)單元素的默認(rèn)值和固定值

Simple elements may have a default value OR a fixed value specified.
簡(jiǎn)單元素也許會(huì)有指定的默認(rèn)值或固定值

A default value is automatically assigned to the element when no other value is specified.
值沒有被指定時(shí),屬性自動(dòng)會(huì)設(shè)置成默認(rèn)值

In the following example the default value is "red":
下面例子里默認(rèn)值是"red":

<xs:element name="color" type="xs:string" default="red"/>

A fixed value is also automatically assigned to the element, and you cannot specify another value.
固定值是也是自動(dòng)分派給屬性的,并且,一旦有了固定值,你就不能指定其他值了。

In the following example the fixed value is "red":
下面例子里固定值是"red":

<xs:element name="color" type="xs:string" fixed="red"/>

XSD 屬性
w3pop.com / 2006-09-21

XSD Simple 元素 XSD Restrictions/Facets

All attributes are declared as simple types.
所有屬性都是以簡(jiǎn)單類型來聲明的。


What is an Attribute?
屬性是什么?

Simple elements cannot have attributes. If an element has attributes, it is considered to be of a complex type. But the attribute itself is always declared as a simple type.
簡(jiǎn)單的元素沒有屬性。當(dāng)元素含有屬性時(shí),它會(huì)被認(rèn)為是復(fù)合元素。但屬性本身總是被聲明為簡(jiǎn)單類型。


How to Define an Attribute?
怎么樣定義屬性?

The syntax for defining an attribute is:
定義一項(xiàng)屬性的語法是:

<xs:attribute name="xxx" type="yyy"/>

where xxx is the name of the attribute and yyy specifies the data type of the attribute.
其中,xxx是屬性的名稱,yyy指定了屬性的數(shù)據(jù)類型

XML Schema has a lot of built-in data types. The most common types are:
XML Schema本身有很多數(shù)據(jù)類型。最常見的數(shù)據(jù)類型有:

  • xs:string
    xs:字符串
  • xs:decimal
    xs:小數(shù)
  • xs:integer
    xs:整數(shù)
  • xs:boolean
    xs:邏輯值
  • xs:date
    xs:日期
  • xs:time
    xs:時(shí)間

Example
例子

Here is an XML element with an attribute:
這是一個(gè)有屬性的XML元素:

<lastname lang="EN">Smith</lastname>

And here is the corresponding attribute definition:
而這個(gè)相應(yīng)的屬性定義:

<xs:attribute name="lang" type="xs:string"/>
?

Default and Fixed Values for Attributes
屬性的默認(rèn)值和固定值

Attributes may have a default value OR a fixed value specified.
屬性也許有指定的默認(rèn)值或固定值

A default value is automatically assigned to the attribute when no other value is specified.
值沒有被指定時(shí),屬性自動(dòng)會(huì)設(shè)成默認(rèn)值

In the following example the default value is "EN":
下面例子里默認(rèn)值是"EN":

<xs:attribute name="lang" type="xs:string" default="EN"/>

A fixed value is also automatically assigned to the attribute, and you cannot specify another value.
固定值是也是自動(dòng)分派給屬性的,并且,一旦有了固定值,你就不能指定其他值了。

In the following example the fixed value is "EN":
下面例子里固定值是"EN":

<xs:attribute name="lang" type="xs:string" fixed="EN"/>


Optional and Required Attributes
任意屬性和必需屬性

Attributes are optional by default. To specify that the attribute is required, use the "use" attribute:
默認(rèn)時(shí)屬性是任意的,要指明屬性是必需的,須用到"use"屬性

<xs:attribute name="lang" type="xs:string" use="required"/>


Restrictions on Content
對(duì)內(nèi)容的約束

When an XML element or attribute has a data type defined, it puts restrictions on the element's or attribute's content.
當(dāng)XML元素或?qū)傩杂辛艘讯x的數(shù)據(jù)類型,元素或?qū)傩缘膬?nèi)容會(huì)有約束

If an XML element is of type "xs:date" and contains a string like "Hello World", the element will not validate.
如果一個(gè)XML元素是"xs:date"類型,并包含著象"Hello World"的字符串,元素就不會(huì)進(jìn)行檢驗(yàn)

With XML Schemas, you can also add your own restrictions to your XML elements and attributes. These restrictions are called facets.?You can read more about facets in the next chapter.
你也可以用XML Schema給XML元素和屬性添加約束限制。這些約束稱為“面(facet)”。在下章里你可以讀到更多關(guān)于“面”的內(nèi)容

XSD Restrictions/Facets
w3pop.com / 2006-09-21

XSD 屬性 XSD Complex 元素

Restrictions are used to define acceptable values for XML elements or attributes. Restrictions on XML elements are called facets.
約束用于給XML元素或?qū)傩远x可接受的值,關(guān)于對(duì)XML元素的約束稱之為“面(facet)”


Restrictions on Values
對(duì)單個(gè)值的約束

The following example defines an element called "age" with a restriction. The value of age cannot be lower than 0 or greater than 120:
下面的例子給叫做"age"的元件定義了一個(gè)“約束(restriction)”。“age”的值要大等于0,小等于120:

<xs:element name="age"> <xs:simpleType><xs:restriction base="xs:integer"><xs:minInclusive value="0"/><xs:maxInclusive value="120"/></xs:restriction> </xs:simpleType> </xs:element>


Restrictions on a Set of Values
對(duì)一組值的約束

To limit the content of an XML element to a set of acceptable values, we would use the enumeration constraint.
為了限制XML元素的內(nèi)容得到一組符合條件的值,我們會(huì)用到“列舉約束(enumeration constraint)”。

The example below defines an element called "car" with a restriction. The only acceptable values are: Audi, Golf, BMW:
下面的例子給叫做"car"的元素定義了約束條件,符合條件的值有:Audi, Golf, BMW:

<xs:element name="car"> <xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="Audi"/><xs:enumeration value="Golf"/><xs:enumeration value="BMW"/></xs:restriction> </xs:simpleType> </xs:element>

The example above could also have been written like this:
上面的例子也可以寫成這樣:

<xs:element name="car" type="carType"/> <xs:simpleType name="carType"><xs:restriction base="xs:string"><xs:enumeration value="Audi"/><xs:enumeration value="Golf"/><xs:enumeration value="BMW"/></xs:restriction></xs:simpleType>

Note: In this case the type "carType" can be used by other elements because it is not a part of the "car" element.
注意:在這種情況下"carType"類型可以被其他元件所使用,因?yàn)樗皇?#34;car"元素的一部分


Restrictions on a Series of Values
對(duì)一系列值的約束

To limit the content of an XML element to define a series of numbers or letters that can be used, we would use the pattern constraint.
為了限制XML元件的內(nèi)容以定義一系列可被使用的數(shù)字或字母,我們可以用“式樣約束(pattern constraints)”。

The example below defines an element called "letter" with a restriction. The only acceptable value is ONE of the LOWERCASE letters from a to z:
下面的例子給叫做"letter"的元素定義可約束。唯一符合條件的值是 a到z之間的一個(gè)小寫字母:

<xs:element name="letter"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[a-z]"/></xs:restriction> </xs:simpleType> </xs:element>

The next example defines an element called "initials" with a restriction. The only acceptable value is THREE of the UPPERCASE letters from a to z:
接下來的例子給叫做"initials"的元素定義了一個(gè)約束。唯一符合條件的值是a到z之間的3個(gè)大寫字母

<xs:element name="initials"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[A-Z][A-Z][A-Z]"/></xs:restriction> </xs:simpleType> </xs:element>

The next example also defines an element called "initials" with a restriction. The only acceptable value is THREE of the LOWERCASE OR UPPERCASE letters from a to z:
下面的例子給叫做"initials"的元素定義了一個(gè)約束。唯一符合條件的值是 a到z之間的三個(gè)大寫或小寫字母

<xs:element name="initials"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/></xs:restriction> </xs:simpleType> </xs:element>

The next example defines an element called "choice" with a restriction. The only acceptable value is ONE of the following letters: x, y, OR z:
下面的例子給叫做"choice"的元素定義了一個(gè)約束,唯一符合條件的值是x,y,z三個(gè)字母中的任意一個(gè)

<xs:element name="choice"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[xyz]"/></xs:restriction> </xs:simpleType> </xs:element>

The next example defines an element called "prodid" with a restriction. The only acceptable value is FIVE digits in a sequence, and each digit must be in a range from 0 to 9:
下面的例子給叫做"prodid"的元素定義了一個(gè)約束,唯一符合條件的值是0到9的5個(gè)阿拉伯?dāng)?shù)字的排列,

<xs:element name="prodid"> <xs:simpleType><xs:restriction base="xs:integer"><xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/></xs:restriction> </xs:simpleType> </xs:element>


Other Restrictions on a Series of Values
對(duì)一系列值的其他約束

The example below defines an element called "letter" with a restriction. The acceptable value is zero or more occurrences of lowercase letters from a to z:
下面的例子給叫做"letter"的元素定義了一個(gè)約束。唯一符合條件的值是a 到z的小寫字母(可以有多個(gè))或0

<xs:element name="letter"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="([a-z])*"/></xs:restriction> </xs:simpleType> </xs:element>

The next example also defines an element called "letter" with a restriction. The acceptable value is one or more pairs of letters, each pair consisting of a lower case letter followed by an upper case letter. For example, "sToP" will be validated by this pattern, but not "Stop" or "STOP" or "stop":
下面的例子也給叫做"letter"的元素定義了一個(gè)約束。唯一符合條件的值是一對(duì)或多對(duì)字母,每對(duì)都是一個(gè)小寫字母后跟一個(gè)大寫字母組成。舉個(gè)例子,"sToP"在這種式樣里是有效正確的,但"Stop" ,"STOP" 或 "stop"就都不是了。

<xs:element name="letter"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="([a-z][A-Z])+"/></xs:restriction> </xs:simpleType> </xs:element>

The next example defines an element called "gender" with a restriction. The only acceptable value is male OR female:
下面的例子也給叫做"gender"的元素定義了一個(gè)約束。唯一符合的值是male (男性)或female(女性):

<xs:element name="gender"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="male|female"/></xs:restriction> </xs:simpleType> </xs:element>

The next example defines an element called "password" with a restriction. There must be exactly eight characters in a row and those characters must be lowercase or uppercase letters from a to z, or a number from 0 to 9:
下面的例子也給叫做"password"的元素定義了一個(gè)約束。一行里必須有8個(gè)字符,字符必須是a到z大或小寫字母,或者是0到9的數(shù)字

<xs:element name="password"> <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[a-zA-Z0-9]{8}"/></xs:restriction> </xs:simpleType> </xs:element>


Restrictions on Whitespace Characters
對(duì)空白符的約束

To specify how whitespace characters should be handled, we would use the whiteSpace constraint.
為了指定空白符該怎樣被處理,我們可以用空白符約束

This example defines an element called "address" with a restriction. The whiteSpace constraint is set to "preserve", which means that the XML processor WILL NOT remove any white space characters:
下面的例子給叫做"address"的元素定義了一個(gè)約束。空白符設(shè)為"preserve"(保留),這意味著XML處理器不會(huì)刪除任何空白字符:

<xs:element name="address"> <xs:simpleType><xs:restriction base="xs:string"><xs:whiteSpace value="preserve"/></xs:restriction> </xs:simpleType> </xs:element>

This example also defines an element called "address" with a restriction. The whiteSpace constraint is set to "replace", which means that the XML processor WILL REPLACE all white space characters (line feeds, tabs, spaces, and carriage returns) with spaces:
下面的例子也給叫做"address"的元素定義了一個(gè)約束。空白符設(shè)為" replace "(替代),這意味著XML處理器會(huì)用空格替代所有的空白字符(換行符, 制表符, 空格符, 回車符))

<xs:element name="address"> <xs:simpleType><xs:restriction base="xs:string"><xs:whiteSpace value="replace"/></xs:restriction> </xs:simpleType> </xs:element>

This example also defines an element called "address" with a restriction. The whiteSpace constraint is set to "collapse", which means that the XML processor WILL REMOVE all white space characters (line feeds, tabs, spaces, carriage returns are replaced with spaces, leading and trailing spaces are removed, and multiple spaces are reduced to a single space):
下面的例子也給叫做"address"的元素定義了一個(gè)約束。空白符設(shè)為"collapse"(消除),這意味著XML處理器會(huì)清除所有的空白字符(換行符, 制表符, 空格符以及回車符都被空格符代替。頭尾空格會(huì)被清除,多個(gè)空格也會(huì)減少為一個(gè))

<xs:element name="address"> <xs:simpleType><xs:restriction base="xs:string"><xs:whiteSpace value="collapse"/></xs:restriction> </xs:simpleType> </xs:element>


Restrictions on Length
對(duì)長(zhǎng)度的約束

To limit the length of a value in an element, we would use the length, maxLength, and minLength constraints.
為了限制元素的長(zhǎng)度值,我們會(huì)用length, maxLength, 和 minLength 約束。

This example defines an element called "password" with a restriction. The value must be exactly eight characters:
下面的例子給叫做"password"的元素定義了一個(gè)約束。值必須正好有8個(gè)字符:

<xs:element name="password"> <xs:simpleType><xs:restriction base="xs:string"><xs:length value="8"/></xs:restriction> </xs:simpleType> </xs:element>

This example defines another element called "password" with a restriction. The value must be minimum five characters and maximum eight characters:
下面的例子給叫做"password"的元素定義了一個(gè)約束。值最少要有5個(gè)字符,最多有8個(gè)字符。

<xs:element name="password"> <xs:simpleType><xs:restriction base="xs:string"><xs:minLength value="5"/><xs:maxLength value="8"/></xs:restriction> </xs:simpleType> </xs:element>


Restrictions for Datatypes
對(duì)數(shù)據(jù)類型的約束

Constraint
約束Description
說明
enumerationDefines a list of acceptable values
定義了一系列的有效值
fractionDigitsSpecifies the maximum number of decimal places allowed. Must be equal to or greater than zero
指定了允許的小數(shù)位數(shù)的最多位數(shù)。必須大于等于0
lengthSpecifies the exact number of characters or list items allowed. Must be equal to or greater than zero
指定了允許的字符或列表項(xiàng)的個(gè)數(shù)。必須大于等于0
maxExclusiveSpecifies the upper bounds for numeric values (the value must be less than this value)
指定了數(shù)值的上限(數(shù)值要比這個(gè)值小)
maxInclusiveSpecifies the upper bounds for numeric values (the value must be less than or equal to this value)
指定了數(shù)值上限(數(shù)值必須小于等于這個(gè)值)
maxLengthSpecifies the maximum number of characters or list items allowed. Must be equal to or greater than zero
指定了所允許的字符或列表項(xiàng)的最多個(gè)數(shù)。必須大于等于0
minExclusiveSpecifies the lower bounds for numeric values (the value must be greater than this value)
指定了數(shù)值的下限 (數(shù)值要比這個(gè)值小)
minInclusiveSpecifies the lower bounds for numeric values (the value must be greater than or equal to this value)
指定了數(shù)值的下限(數(shù)值必須大于等于這個(gè)值)
minLengthSpecifies the minimum number of characters or list items allowed. Must be equal to or greater than zero
指定了所允許的字符或列表的最少個(gè)數(shù)。必須等于大于0個(gè)
patternDefines the exact sequence of characters that are acceptable
定義了符合要求的字符的確切排列順序
totalDigitsSpecifies the exact number of digits allowed. Must be greater than zero
指定了所允許的字符的確切個(gè)數(shù)。必須大于0
whiteSpaceSpecifies how white space (line feeds, tabs, spaces, and carriage returns) is handled
指定了空白該怎樣被處理(換行符,制表符,空格符和回車符)

XSD Complex 元素
w3pop.com / 2006-09-21

XSD Restrictions/Facets XSD Complex 空元素

A complex element contains other elements and/or attributes.
一個(gè)復(fù)合元素(Complex Elements)包含其他元素和/或?qū)傩?/p>


What is a Complex Element?
什么是復(fù)合元素(Complex Elements)?

A complex element is an XML element that contains other elements and/or attributes.
復(fù)合元素(Complex Elements)是含有其他元素和/或?qū)傩缘腦ML元素

There are four kinds of complex elements:
有四種復(fù)合元素(Complex Elements):

  • empty elements
    空元素
  • elements that contain only other elements
    只含有其他元素的元素
  • elements that contain only text
    只含有文本的元素
  • elements that contain both other elements and text
    含有文本和其他元素的元素

Note: Each of these elements may contain attributes as well!
注意:這些元素中的每一個(gè)也許還含有屬性!


Examples of Complex Elements
復(fù)合元素(Complex Elements)的例子

A complex XML element, "product", which is empty:
一個(gè)空的復(fù)合XML元素"product":

<product pid="1345"/>

A complex XML element, "employee", which contains only other elements:
只含有其他元素的復(fù)合XML元素, "employee"

<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>

A complex XML element, "food", which contains only text:
只含有文本的復(fù)合XML元素, "food":

<food type="dessert">Ice cream</food>

A complex XML element, "description", which contains both elements and text:
含有元素和文本的復(fù)合XML元素, "description":

<description>It happened on <date lang="norwegian">03.03.99</date> .... </description>


How to Define a Complex Element
怎樣定義一個(gè)復(fù)合元素(Complex Elements)?

Look at this complex XML element, "employee", which contains only other elements:
看這個(gè)只含有其他元素的復(fù)合XML元素,"employee":

<employee> <firstname>John</firstname> <lastname>Smith</lastname></employee>

We can define a complex element in an XML Schema two different ways:
我們有兩種方法可以在一篇XML Schema里定義一個(gè)復(fù)合元素(Complex Elements):

1. The "employee" element can be declared directly by naming the element, like this:
1. "employee"元素可以直接通過命名元素的方式被聲明,像這樣:

<xs:element name="employee"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence></xs:complexType> </xs:element>

If you use the method described above, only the "employee" element can use the specified complex type. Note that the child elements, "firstname" and "lastname", are surrounded by the <sequence> indicator. This means that the child elements must appear in the same order as they are declared. You will learn more about indicators in the XSD Indicators chapter.
如果你用了上面的方法,那么只有"employee"元素才可以用指定的復(fù)合類型。注意子元素"firstname" 和 "lastname",它們是被包圍在<sequence>“指示器”元素里的。這意味著子元素必須以它們被聲明的順序出現(xiàn)。在XSD指示器這章里你可以學(xué)到關(guān)于指示器更多內(nèi)容。

2. The "employee" element can have a type attribute that refers to the name of the complex type to use:
2. "employee"元素可以有個(gè)類型屬性,其所指的是要用的復(fù)合類型的名稱

<xs:element name="employee" type="personinfo"/> <xs:complexType name="personinfo"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType>

If you use the method described above, several elements can refer to the same complex type, like this:
如果你用上述方法,幾個(gè)元素指的可以是相同的復(fù)合類型,就像這樣:

<xs:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:element name="member" type="personinfo"/> <xs:complexType name="personinfo"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType>

You can also base a complex element on an existing complex element and add some elements, like this:
你也可以在現(xiàn)存的復(fù)合元素(Complex Elements)上再加上一個(gè)復(fù)合元素(Complex Elements),并添加一些元素,就像這樣:

<xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"><xs:complexContent><xs:extension base="personinfo"><xs:sequence><xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/></xs:sequence></xs:extension></xs:complexContent> </xs:complexType>

XSD Complex 空元素
w3pop.com / 2006-09-21

XSD Complex 元素 XSD 復(fù)合類型 - 純?cè)?/span>

An empty complex element cannot have contents, only attributes.
一個(gè)空的復(fù)合元素不能含有內(nèi)容,只能含有屬性。


Complex Empty Elements
復(fù)合空元素(Complex Empty Elements)

An empty XML element:
一個(gè)空的XML元素:

<product prodid="1345" />

The "product" element above has no content at all. To define a type with no content, we must define a type that allows only elements in its content, but we do not actually declare any elements, like this:
上述"product"元素完全不含內(nèi)容。為定義不含內(nèi)容的類型,我們必須定義一個(gè)內(nèi)容中只允許出現(xiàn)元素的類型,但我們不需要聲明任何元素,就像這樣:

<xs:element name="product"><xs:complexType><xs:complexContent><xs:restriction base="xs:integer"><xs:attribute name="prodid" type="xs:positiveInteger"/></xs:restriction></xs:complexContent></xs:complexType> </xs:element>

In the example above, we define a complex type with a complex content. The complexContent element signals that we intend to restrict or extend the content model of a complex type, and the restriction of integer declares one attribute but does not introduce any element content.
上述例子中,我們定義了一個(gè)有復(fù)合內(nèi)容的復(fù)合類型。復(fù)合內(nèi)容的元素表示了我們想要約束或擴(kuò)充的復(fù)合類型的內(nèi)容模式。對(duì)整數(shù)的約束聲明了一個(gè)屬性,但并沒有介紹任何元素內(nèi)容。

However, it is possible to declare the "product" element more compactly, like this:
但是,可以更加簡(jiǎn)潔地聲明"product"元素,就像這樣:

<xs:element name="product"><xs:complexType><xs:attribute name="prodid" type="xs:positiveInteger"/></xs:complexType> </xs:element>

Or you can give the complexType element a name, and let the "product" element have a type attribute that refers to the name of the complexType (if you use this method, several elements can refer to the same complex type):
或者你可以給complexType元素起個(gè)名稱,并讓"product"元素有個(gè)類型屬性,而且類型屬性引用的是complexType的名稱(如果你用這個(gè)方法,幾個(gè)元素可以引用相同的復(fù)合類型):

<xs:element name="product" type="prodtype"/> <xs:complexType name="prodtype"><xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType>

XSD 復(fù)合類型 - 純?cè)?br /> w3pop.com / 2006-09-21

XSD Complex 空元素 XSD 復(fù)合文字 - 純?cè)?/span>

An "elements-only" complex type contains an element that contains only other elements.
“只有元素(Elements-only)”復(fù)合類型含有一個(gè)只包含其他元素的元素


Complex Types Containing Elements Only
復(fù)合類型只含有元素

An XML element, "person", that contains only other elements:
一個(gè)XML元素, "person",只含有其他元素:

<person> <firstname>John</firstname> <lastname>Smith</lastname> </person>

You can define the "person" element in a schema, like this:
你可以在一篇schema里定義"person"元素,就像這樣

<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence></xs:complexType> </xs:element>

Notice the <xs:sequence> tag. It means that the elements defined ("firstname" and "lastname") must appear in that order inside a "person" element.
注意<xs:sequence>標(biāo)簽。這表示所定義的元素("firstname" 和 "lastname")必須在"person"元素里以那樣的次序出現(xiàn)。

Or you can give the complexType element a name, and let the "person" element have a type attribute that refers to the name of the complexType (if you use this method, several elements can refer to the same complex type):
或者你可以給complexType元素取個(gè)名字,讓"person"元素有個(gè)類型屬性,這個(gè)類型屬性的名字可以參考使用complexType元素的名字(如果你用這個(gè)方法,幾個(gè)元素可以同時(shí)參考使用相同的復(fù)合類型)。

<xs:element name="person" type="persontype"/> <xs:complexType name="persontype"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType>

XSD 復(fù)合文字 - 純?cè)?br /> w3pop.com / 2006-09-21

XSD 復(fù)合類型 - 純?cè)?/span> XSD 混合內(nèi)容的復(fù)合類型

A complex text-only element can contain text and attributes.
一個(gè)復(fù)合只含文本元素(Complex Text-Only Elements)可以含有文本和屬性。


Complex Text-Only Elements
復(fù)合只含文本元素(Complex Text-Only Elements)

This type contains only simple content (text and attributes), therefore we add a simpleContent element around the content. When using simple content, you must define an extension OR a restriction within the simpleContent element, like this:
這種類型只含有簡(jiǎn)單內(nèi)容(文本和屬性),因此我們?cè)趦?nèi)容周圍添加一個(gè)simpleContent元素,當(dāng)用到簡(jiǎn)單內(nèi)容時(shí),你必須在simpleContent元素里定義一個(gè)擴(kuò)展或約束,就像這樣:

<xs:element name="somename"><xs:complexType><xs:simpleContent><xs:extension base="basetype">........</xs:extension> </xs:simpleContent></xs:complexType></xs:element>

OR

<xs:element name="somename"><xs:complexType><xs:simpleContent><xs:restriction base="basetype">........</xs:restriction> </xs:simpleContent></xs:complexType> </xs:element>

Tip: Use the extension/restriction element to expand or to limit the base simple type for the element.
提示:用extension/restriction元素?cái)U(kuò)展或限制元素的基本簡(jiǎn)單類型(base simple type)。

Here is an example of an XML element, "shoesize", that contains text-only:
這兒是只含有文本的一個(gè)XML元素, "shoesize":

<shoesize country="france">35</shoesize>

The following example declares a complexType, "shoesize". The content is defined as an integer value, and the "shoesize" element also contains an attribute named "country":
下面的例子聲明了一個(gè)復(fù)合類型,"shoesize"元素。內(nèi)容定義為整數(shù)值,"shoesize"元件含有名為"country"的屬性。

<xs:element name="shoesize"><xs:complexType><xs:simpleContent><xs:extension base="xs:integer"><xs:attribute name="country" type="xs:string" /></xs:extension></xs:simpleContent></xs:complexType> </xs:element>

We could also give the complexType element a name, and let the "shoesize" element have a type attribute that refers to the name of the complexType (if you use this method, several elements can refer to the same complex type):
我們可以給complexType元件起個(gè)名字,讓"shoesize"元件有種類屬性,種類屬性的名字就是complexType元件的名字。(如果你用這種方法,幾個(gè)元素指的可以是相同的復(fù)合類型)

<xs:element name="shoesize" type="shoetype"/> <xs:complexType name="shoetype"><xs:simpleContent><xs:extension base="xs:integer"><xs:attribute name="country" type="xs:string" /></xs:extension></xs:simpleContent> </xs:complexType>

XSD 混合內(nèi)容的復(fù)合類型
w3pop.com / 2006-09-21

XSD 復(fù)合文字 - 純?cè)?/span> XSD 指示器復(fù)合類型

A mixed complex type element can contain attributes, elements, and text.
混合內(nèi)容的復(fù)合類型元素(XSD Complex Types Element With Mixed Content )可以含有屬性,元素,和文本。


Complex Types with Mixed Content
混合內(nèi)容的復(fù)合類型

An XML element, "letter", that contains both text and other elements:
一個(gè)XML元素,"letter",既含有文本又含有其他元素:

<letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>.</letter>

The following schema declares the "letter" element:
下面的XML公式聲明了"letter"元素:

<xs:element name="letter"><xs:complexType mixed="true"><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="orderid" type="xs:positiveInteger"/><xs:element name="shipdate" type="xs:date"/></xs:sequence></xs:complexType> </xs:element>

Note: To enable character data to appear between the child-elements of "letter", the mixed attribute must be set to "true". The <xs:sequence> tag means that the elements defined (name, orderid and shipdate) must appear in that order inside a "letter" element.
注意:為了使字符數(shù)據(jù)能出現(xiàn)在"letter"子元件之間,mixed屬性必須設(shè)置為"true"。<xs:sequence>標(biāo)簽指出了已定義的元素(name, orderid 和shipdate)在"letter"元素里必須以指定的順序出現(xiàn)

We could also give the complexType element a name, and let the "letter" element have a type attribute that refers to the name of the complexType (if you use this method, several elements can refer to the same complex type):
我們可以給這個(gè)complexType元素一個(gè)名稱,并且讓"letter"元素有一個(gè)引用了complexType的名稱的種類屬性(如果你用了這個(gè)方法,幾個(gè)元素可以同時(shí)使用相同的復(fù)合類型):

<xs:element name="letter" type="lettertype"/> <xs:complexType name="lettertype" mixed="true"><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="orderid" type="xs:positiveInteger"/><xs:element name="shipdate" type="xs:date"/></xs:sequence></xs:complexType>

XSD 指示器復(fù)合類型
w3pop.com / 2006-09-21

XSD 混合內(nèi)容的復(fù)合類型 XSD <any> 元素

We can control HOW elements are to be used in documents with indicators.
用指示器(Indicators)我們可以控制文件中元素的使用方法(HOW TO USE)。


Indicators
指示器(Indicators)

There are seven indicators:
有7種指示器(Indicators)

Order indicators:
順序指示器(Indicators)

  • All
    全部
  • Choice
    選擇
  • Sequence
    按順序

Occurrence indicators:
出現(xiàn)次數(shù)指示器(Indicators):

  • maxOccurs
    最多出現(xiàn)次數(shù)
  • minOccurs
    最少出現(xiàn)次數(shù)

Group indicators:
組指示器(Indicators):

  • Group name
    組名
  • attributeGroup name
    屬性組名稱

Order Indicators
順序指示器(Indicators)

Order indicators are used to define the order of the elements.
順序指示器(Indicators)用于指定元素的順序。

All Indicator
全部指示器(Indicators)

The <all> indicator specifies that the child elements can appear in any order, and that each child element must occur only once:
<all>指示器(Indicators)指明了子元件可以以任何次序出現(xiàn),并且每個(gè)子元件只能出現(xiàn)一次:

<xs:element name="person"><xs:complexType><xs:all><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:all></xs:complexType> </xs:element>

Note: When using the <all> indicator you can set the <minOccurs> indicator to 0 or 1 and the <maxOccurs> indicator can only be set to 1 (the <minOccurs> and <maxOccurs> are described later).
注意:用<all>指示器(Indicators)時(shí)你可以把<minOccurs>指示器(Indicators)設(shè)為0或1,<maxOccurs>指示器(Indicators)只能設(shè)為1(<minOccurs> 和 <maxOccurs> 我們后頭再說)

Choice Indicator
選擇指示器(Indicators)

The <choice> indicator specifies that either one child element or another can occur:
<choice>指示器(Indicators)指明了隨便的子元素都可以出現(xiàn):

<xs:element name="person"><xs:complexType><xs:choice><xs:element name="employee" type="employee"/><xs:element name="member" type="member"/></xs:choice></xs:complexType> </xs:element>

Sequence Indicator
有序指示器(Indicators)

The <sequence> indicator specifies that the child elements must appear in a specific order:
<sequence>指示器(Indicators)指定了子元素必須以一個(gè)指明的順序出現(xiàn):

<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence></xs:complexType> </xs:element>


Occurrence Indicators
出現(xiàn)次數(shù)指示器(Indicators)

Occurrence indicators are used to define how often an element can occur.
出現(xiàn)次數(shù)指示器(Indicators)用于定義一個(gè)元素可以出現(xiàn)的次數(shù)

Note: For all "Order" and "Group" indicators (any, all, choice, sequence, group name, and group reference) the default value for maxOccurs and minOccurs is 1.
注意:對(duì)所有的"Order"和"Group"指示器(Indicators)(any, all, choice, sequence,group name, 和 group reference)來說,maxOccurs 和 minOccurs的默認(rèn)值都是1

maxOccurs Indicator
最多出現(xiàn)次數(shù)指示器(Indicators)

The <maxOccurs> indicator specifies the maximum number of times an element can occur:
最多出現(xiàn)次數(shù)指示器(Indicators)指明了一個(gè)元素可以出現(xiàn)的最多次數(shù):

<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="full_name" type="xs:string"/><xs:element name="child_name" type="xs:string" maxOccurs="10"/></xs:sequence></xs:complexType> </xs:element>

The example above indicates that the "child_name" element can occur a minimum of one time (the default value for minOccurs is 1) and a maximum of ten times in the "person" element.
上面的例子指明了"child_name"元素在"person"元素里最少出現(xiàn)1次(minOccurs的默認(rèn)值為1),最多出現(xiàn)10次

minOccurs Indicator
最少出現(xiàn)次數(shù)指示器(Indicators)

The <minOccurs> indicator specifies the minimum number of times an element can occur:
最少出現(xiàn)次數(shù)指示器(Indicators)指明了一個(gè)元素要出現(xiàn)的最小次數(shù):

<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="full_name" type="xs:string"/><xs:element name="child_name" type="xs:string"maxOccurs="10" minOccurs="0"/></xs:sequence></xs:complexType> </xs:element>

The example above indicates that the "child_name" element can occur a minimum of zero times and a maximum of ten times in the "person" element.
上面的例子指明了"child_name"元素在"person"元素里最少出現(xiàn)0次(minOccurs的默認(rèn)值為1),最多出現(xiàn)10次

Tip: To allow an element to appear an unlimited number of times, use the maxOccurs="unbounded" statement:
提示:為使元件可以重復(fù)出現(xiàn)無數(shù)次,可以設(shè)置maxOccurs="unbounded"的狀態(tài)

A working example:
實(shí)際作用例子:

An XML file called "Myfamily.xml":
名為"Myfamily.xml"的XML文件:

<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Hege Refsnes</full_name> <child_name>Cecilie</child_name> </person> <person><full_name>Tove Refsnes</full_name> <child_name>Hege</child_name> <child_name>Stale</child_name> <child_name>Jim</child_name> <child_name>Borge</child_name></person> <person> <full_name>Stale Refsnes</full_name> </person> </persons>

The XML file above contains a root element named "persons". Inside this root element we have defined three "person" elements. Each "person" element must contain a "full_name" element and it can contain up to five "child_name" elements.
上面XML文件含有一個(gè)名為"persons"的根元素,這個(gè)根元素里面里我們已經(jīng)定義了3個(gè)"person"元素。每個(gè)"person"元素必須含有一個(gè)"full_name"元素,而且最多可有5個(gè)"child_name"元素。

Here is the schema file "family.xsd":
下面是名為"family.xsd"的schema文件:

<?xml version="1.0" encoding="ISO-8859-1"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="persons"><xs:complexType><xs:sequence><xs:element name="person" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:element name="full_name" type="xs:string"/><xs:element name="child_name" type="xs:string"minOccurs="0" maxOccurs="5"/></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType> </xs:element> </xs:schema>


Group Indicators
組指示器(Indicators)

Group indicators are used to define related sets of elements.
組指示器(Indicators)用于定義相關(guān)的元素組。

Element Groups
元素組

Element groups are defined with the group declaration, like this:
元素組要定義組聲明,像這樣:

<xs:group name="groupname">... </xs:group>

You must define an all, choice, or sequence element inside the group declaration. The following example defines a group named "persongroup", that defines a group of elements that must occur in an exact sequence:
你必須在組聲明里定義一個(gè)all, choice,或sequence元素。下面的例子定義了一個(gè)名為"persongroup"的組,這個(gè)定義了一組元素必須以一定順序出現(xiàn):

<xs:group name="persongroup"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/><xs:element name="birthday" type="xs:date"/></xs:sequence></xs:group>

After you have defined a group, you can reference it in another definition, like this:
定義了一個(gè)組后,你可以在另一個(gè)組參考它,像這樣:

<xs:group name="persongroup"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/><xs:element name="birthday" type="xs:date"/></xs:sequence> </xs:group> <xs:element name="person" type="personinfo"/> <xs:complexType name="personinfo"><xs:sequence><xs:group ref="persongroup"/><xs:element name="country" type="xs:string"/></xs:sequence> </xs:complexType>

Attribute Groups
屬性組

Attribute groups are defined with the attributeGroup declaration, like this:
屬性組定義有attributeGroup(屬性組)聲明,像這樣:

<xs:attributeGroup name="groupname">... </xs:attributeGroup>

The following example defines an attribute group named "personattrgroup":
下面的例子定義了叫做"personattrgroup"的一個(gè)屬性組:

<xs:attributeGroup name="personattrgroup"><xs:attribute name="firstname" type="xs:string"/><xs:attribute name="lastname" type="xs:string"/><xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup>

After you have defined an attribute group, you can reference it in another definition, like this:
定義了一個(gè)屬性組之后,你可以在別的定義里參考它,像這樣:

<xs:attributeGroup name="personattrgroup"><xs:attribute name="firstname" type="xs:string"/><xs:attribute name="lastname" type="xs:string"/><xs:attribute name="birthday" type="xs:date"/></xs:attributeGroup> <xs:element name="person"><xs:complexType><xs:attributeGroup ref="personattrgroup"/></xs:complexType></xs:element>

XSD <any> 元素
w3pop.com / 2006-09-21

XSD 指示器復(fù)合類型 XSD <anyAttribute> 元素

The <any> element enables us to extend the XML document with elements not specified by the schema!
<any>元素可以使我們?cè)赬ML文檔中添加沒有被schema 定義過的新元素從而擴(kuò)充XML文檔。


The <any> Element
<any>元素

The <any> element enables us to extend the XML document with elements not specified by the schema.
<any>元素可以使我們?cè)赬ML文檔中添加沒有被schema 定義過的新元素從而擴(kuò)充XML文檔。

The following example is a fragment from an XML schema called "family.xsd". It shows a declaration for the "person" element. By using the <any> element we can extend (after <lastname>) the content of "person" with any element:
下面的例子是名為"family.xsd"的一份XML schema片段。它展示了"person"元素的聲明。用上<any>元素,我們可以在"person"元素的內(nèi)容里擴(kuò)充任意元素(在<lastname>的后面)

<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/><xs:any minOccurs="0"/></xs:sequence></xs:complexType></xs:element>

Now we want to extend the "person" element with a "children" element. In this case we can do so, even if the author of the schema above never declared any "children" element.
現(xiàn)在我們想在"person"元素中添加"children"元素,即使這篇schema的作者從未聲明過什么"children"元素,我們也可以做到。

Look at this schema file, called "children.xsd":
請(qǐng)看下面名為"children.xsd"的schema文件:

<?xml version="1.0" encoding="ISO-8859-1"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xs:element name="children"><xs:complexType><xs:sequence><xs:element name="childname" type="xs:string"maxOccurs="unbounded"/></xs:sequence></xs:complexType> </xs:element> </xs:schema>

The XML file below (called "Myfamily.xml"), uses components from two different schemas; "family.xsd" and "children.xsd":
下面的XML文件(叫做"Myfamily.xml"),用上了來自"family.xsd" 和"children.xsd"兩篇不同schema的組件

<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns="http://www.microsoft.com"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd http://www.w3schools.com children.xsd"> <person> <firstname>Hege</firstname> <lastname>Refsnes</lastname><children><childname>Cecilie</childname> </children> </person> <person> <firstname>Stale</firstname><lastname>Refsnes</lastname> </person> </persons>

The XML file above is valid because the schema "family.xsd" allows us to extend the "person" element with an optional element after the "lastname" element.
上述XML文件是有效的,因?yàn)?#34;family.xsd" schema允許我們?cè)?#34;person"元素里的"lastname"元素后面擴(kuò)充一個(gè)任意元素。

The <any> and <anyAttribute> elements are used to make EXTENSIBLE documents! They allow documents to contain additional elements that are not declared in the main XML schema.
<any> 和<anyAttribute>元素是用于制造可擴(kuò)展文檔的!它們?cè)试S文檔含有沒有在主要XML schema里聲明過的其它新元素。

XSD <anyAttribute> 元素
w3pop.com / 2006-09-21

XSD <any> 元素 XSD 元素替代

The <anyAttribute> element enables us to extend the XML document with attributes not specified by the schema!
<anyAttribute>元素可使我們?cè)赬ML文檔中添加未被schema指定過的屬性


The <anyAttribute> Element
<anyAttribute>元素

The <anyAttribute> element enables us to extend the XML document with attributes not specified by the schema.
<anyAttribute>元素可使我們?cè)赬ML文檔中添加未被schema指定過的屬性

The following example is a fragment from an XML schema called "family.xsd". It shows a declaration for the "person" element. By using the <anyAttribute> element we can add any number of attributes to the "person" element:
下面是名為"family.xsd"的XML schema片段。它顯示了"person"元素的聲明。通過使用<anyAttribute>元素我們可以給"person"元素添加任意數(shù)量的屬性。

<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence><xs:anyAttribute/></xs:complexType></xs:element>

Now we want to extend the "person" element with a "gender" attribute. In this case we can do so, even if the author of the schema above never declared any "gender" attribute.
現(xiàn)在我們想在"person"元素中添加"gender"屬性,即使這篇schema的作者從未聲明過什么"gender"屬性,我們也可以做到。

Look at this schema file, called "attribute.xsd":
請(qǐng)看下面名為"attribute.xsd"的schema文件:

<?xml version="1.0" encoding="ISO-8859-1"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xs:attribute name="gender"><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="male|female"/></xs:restriction></xs:simpleType> </xs:attribute> </xs:schema>

The XML file below (called "Myfamily.xml"), uses components from two different schemas; "family.xsd" and "attribute.xsd":
下面的XML文件(叫做"Myfamily.xml"),用上了來自"family.xsd" 和"attribute.xsd"兩篇不同的schema組件。

<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns="http://www.microsoft.com"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd http://www.w3schools.com attribute.xsd"> <person gender="female"> <firstname>Hege</firstname> <lastname>Refsnes</lastname></person> <person gender="male"> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons>

The XML file above is valid because the schema "family.xsd" allows us to add an attribute to the "person" element.
上述XML文件是有效的,因?yàn)?#34;family.xsd" schema允許我們?cè)?#34;person"元素里添加屬性

The <any> and <anyAttribute> elements are used to make EXTENSIBLE documents! They allow documents to contain additional elements that are not declared in the main XML schema.
<any> 和<anyAttribute>元素是用于擴(kuò)展文檔的!它們?cè)试S文檔含有沒有在主要XML schema里聲明過的其它新元素。

XSD 元素替代
w3pop.com / 2006-09-21

XSD <anyAttribute> 元素 XSD 實(shí)例

With XML Schemas, one element can substitute another element.
用XML Schema,一個(gè)元素可替代另一元素。


Element Substitution
元素替代(Element Substitution)

Let's say that we have users from two different countries: England and Norway. We would like the ability to let the user choose whether he or she would like to use the Norwegian element names or the English element names in the XML document.
假設(shè)有兩個(gè)分別來自英國和挪威的使用者,我們很希望有能力能讓他或她進(jìn)行選擇,在XML文檔里的元素名稱中選擇他們所擅長(zhǎng)的語言,是英文呢?還是挪威文呢?

To solve this problem, we could define a substitutionGroup in the XML schema. First, we declare a head element and then we declare the other elements which state that they are substitutable for the head element.
為解決這個(gè)問題,我們?cè)赬ML schema里定義了替代組。首先,我們聲明了一個(gè)標(biāo)題元素,接著,我們聲明已說明可替代標(biāo)題元素的其他元素

<xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/>

In the example above, the "name" element is the head element and the "navn" element is substitutable for "name".
在上面的例子里,"name"元素是標(biāo)題元素,"navn"元素可以替代"name"。

Look at this fragment of an XML schema:
看下面的XML schema片段:

<xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/> <xs:complexType name="custinfo"><xs:sequence><xs:element ref="name"/></xs:sequence> </xs:complexType> <xs:element name="customer" type="custinfo"/> <xs:element name="kunde" substitutionGroup="customer"/>

A valid XML document (according to the schema above) could look like this:
一份有效 的XML文檔(根據(jù)上述schema的XML文檔)應(yīng)該像這樣:

<customer><name>John Smith</name></customer>

or like this:
或者像這樣:

<kunde><navn>John Smith</navn> </kunde>


Blocking Element Substitution
關(guān)閉元素替代(Element Substitution)

To prevent other elements from substituting with a specified element, use the block attribute:
為了防止其他元素被已指定的元素替代(Element Substitution),可以用block屬性:

<xs:element name="name" type="xs:string" block="substitution"/>

Look at this fragment of an XML schema:
看這段XML schema片段:

<xs:element name="name" type="xs:string" block="substitution"/><xs:element name="navn" substitutionGroup="name"/> <xs:complexType name="custinfo"><xs:sequence><xs:element ref="name"/></xs:sequence> </xs:complexType> <xs:element name="customer" type="custinfo" block="substitution"/> <xs:element name="kunde" substitutionGroup="customer"/>

A valid XML document (according to the schema above) looks like this:
一份有效的XML文檔(根據(jù)上述的schema的XML文檔)應(yīng)該像這樣:

<customer><name>John Smith</name> </customer>

BUT THIS IS NO LONGER VALID:
但是這樣就不再有效了

<kunde><navn>John Smith</navn> </kunde>


Using substitutionGroup
使用替代組(substitutionGroup)

The type of the substitutable elements must be the same as, or derived from, the type of the head element. If the type of the substitutable element is the same as the type of the head element you will not have to specify the type of the substitutable element.
可替代元素類型應(yīng)和標(biāo)題元素的類型相同,或是從中派生出來的。如果可替代元素類型和標(biāo)題元素的類型相同,你就不需要再指明可替代元素的類型了

Note that all elements in the substitutionGroup (the head element and the substitutable elements) must be declared as global elements, otherwise it will not work!
注意在可替代元素組里的所有元素(標(biāo)題元素和可替代元素)必須聲明為“全域元素(global element)”,否則它是不會(huì)作用的!


What are Global Elements?
什么是“全域元素”?

Global elements are elements that are immediate children of the "schema" element! Local elements are elements nested within other elements.
“全域元素”是"schema"元素下面的直接子元素。“本地元素”是嵌套在別的元素里的元素。

XSD 實(shí)例
w3pop.com / 2006-09-21

XSD 元素替代 XSD 字符串?dāng)?shù)據(jù)類型

This chapter will demonstrate how to write an XML Schema. You will also learn that a schema can be written in different ways.
這章將示范如何寫一份XML Schema.你也會(huì)了解到可以使用不同的方法書寫schema。


An XML Document
一份XML文檔

Let's have a look at this XML document called "shiporder.xml":
讓我們看這份名為"shiporder.xml"的XML文檔

<?xml version="1.0" encoding="ISO-8859-1"?> <shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="shiporder.xsd"><orderperson>John Smith</orderperson><shipto><name>Ola Nordmann</name><address>Langgt 23</address><city>4000 Stavanger</city><country>Norway</country></shipto><item><title>Empire Burlesque</title><note>Special Edition</note><quantity>1</quantity><price>10.90</price></item><item><title>Hide your heart</title><quantity>1</quantity><price>9.90</price></item> </shiporder>

The XML document above consists of a root element, "shiporder", that contains a required attribute called "orderid". The "shiporder" element contains three different child elements: "orderperson", "shipto" and "item". The "item" element appears twice, and it contains a "title", an optional "note" element, a "quantity", and a "price" element.
上述XML文檔有根目錄元素"shiporder",它有個(gè)必需的屬性叫做"orderid","shiporder"元素包含了三個(gè)不同的子元素:"orderperson", "shipto" 和 "item"."item"元素出現(xiàn)了兩次,它包含了一個(gè)"title"元素,一個(gè)任意的"note"元素,一個(gè)"quantity"元素和一個(gè)"price"元素。

The line above: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" tells the XML parser that this document should be validated against a schema. The line:
xsi:noNamespaceSchemaLocation="shiporder.xsd" specifies WHERE the schema resides (here it is in the same folder as "shiporder.xml").
上面的一行xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance",告訴了XML解析器這個(gè)文檔應(yīng)該被一份schema檢驗(yàn)。xsi:noNamespaceSchemaLocation="shiporder.xsd"指定了schema應(yīng)該所在位置(這里它以"shiporder.xml"文件待在相同的文件夾里)。


Create an XML Schema
創(chuàng)建一篇XML Schema

Now we want to create a schema for the XML document above.
現(xiàn)在我們想要為上面的XML文檔創(chuàng)建一份schema

We start by opening a new file that we will call "shiporder.xsd". To create the schema we could simply follow the structure in the XML document and define each element as we find it. We will start with the standard XML declaration followed by the xs:schema element that defines a schema:
開始先打開叫做"shiporder.xsd"的新文件。為創(chuàng)建新的schema,我們可以簡(jiǎn)單地按照XML文檔的結(jié)構(gòu),每當(dāng)發(fā)現(xiàn)一個(gè)元素時(shí)就進(jìn)行定義。一開始先作標(biāo)準(zhǔn)的XML聲明,接下來是定義了schema的xs:schema元素:

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... ...</xs:schema>

In the schema above we use the standard namespace (xs), and the URI associated with this namespace is the Schema language definition, which has the standard value of http://www.w3.org/2001/XMLSchema.
在上述schema里我們用了標(biāo)準(zhǔn)的名稱空間(xs),并且和這個(gè)名稱空間相聯(lián)系的URI是Schema語言定義,它有個(gè)標(biāo)準(zhǔn)值http://www.w3.org/2001/XMLSchema.

Next, we have to define the "shiporder" element. This element has an attribute and it contains other elements, therefore we consider it as a complex type. The child elements of the "shiporder" element is surrounded by a xs:sequence element that defines an ordered sequence of sub elements:
接下來,我們必須定義"shiporder”元素。這個(gè)元素有個(gè)屬性,并包含著其他的元素,因此我們把它看成是復(fù)合類型。"shiporder"元素的子元素由xs:sequence元素包圍著,xs:sequence元素定義了子元素一定順序的排列。

<xs:element name="shiporder"><xs:complexType><xs:sequence>......</xs:sequence>...</xs:complexType> </xs:element>

Then we have to define the "orderperson" element as a simple type (because it does not contain any attributes or other elements). The type (xs:string) is prefixed with the namespace prefix associated with XML Schema that indicates a predefined schema data type:
那么我們必須將"orderperson"元件定義為簡(jiǎn)單類型(因?yàn)樗缓腥魏螌傩曰蚱渌?#xff09;。種類用名稱空間(namespace)的前綴使用與XML Schema相關(guān)的名稱空間前綴化,這里的XML Schema指明了一個(gè)前綴的Schema數(shù)據(jù)類型。

<xs:element name="orderperson" type="xs:string"/>

Next, we have to define two elements that are of the complex type: "shipto" and "item". We start by defining the "shipto" element:
接下來,我們必須定義兩個(gè)復(fù)合類型的元素,"shipto" 和 "item"。先由定義"shipto"元素開始:

<xs:element name="shipto"><xs:complexType><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/></xs:sequence></xs:complexType> </xs:element>

With schemas we can define the number of possible occurrences for an element with the maxOccurs and minOccurs attributes. maxOccurs specifies the maximum number of occurrences for an element and minOccurs specifies the minimum number of occurrences for an element. The default value for both maxOccurs and minOccurs is 1!
用schema,我們可以用maxOccurs(最多出現(xiàn)次數(shù))和minOccurs(最少出現(xiàn)次數(shù))屬性來定義一個(gè)元素的可能出現(xiàn)次數(shù)。maxOccurs指定了一個(gè)元素的最多出現(xiàn)次數(shù),minOccurs指定了一個(gè)元素的最少出現(xiàn)次數(shù)。maxOccurs
和minOccurs的默認(rèn)值都是1。

Now we can define the "item" element. This element can appear multiple times inside a "shiporder" element. This is specified by setting the maxOccurs attribute of the "item" element to "unbounded" which means that there can be as many occurrences of the "item" element as the author wishes. Notice that the "note" element is optional. We have specified this by setting the minOccurs attribute to zero:
現(xiàn)在我們可以來定義"item"元素,這個(gè)元素可以在"shiporder"元素里重復(fù)出現(xiàn)。這可以通過設(shè)置"item"元素的maxOccurs屬性為"unbounded"實(shí)現(xiàn),屬性為"unbounded"意味著"item"元素可以根據(jù)編者意愿重復(fù)出現(xiàn)多次。要注意"note"元素是任意的,我們可以通過設(shè)置minOccurs屬性為0來實(shí)現(xiàn)。

<xs:element name="item" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:element name="title" type="xs:string"/><xs:element name="note" type="xs:string" minOccurs="0"/><xs:element name="quantity" type="xs:positiveInteger"/><xs:element name="price" type="xs:decimal"/></xs:sequence></xs:complexType> </xs:element>

We can now declare the attribute of the "shiporder" element. Since this is a required attribute we specify use="required".
我們現(xiàn)在可以聲明"shiporder"元素的屬性了。因?yàn)檫@是項(xiàng)必須屬性,我們可以指定:use="required"。

Note: The attribute declarations must always come last:
注意:屬性聲明必須總是放在最后

<xs:attribute name="orderid" type="xs:string" use="required"/>

Here is the complete listing of the schema file called "shiporder.xsd":
下面是"shiporder.xsd" schema文件的完整例子:

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"><xs:complexType><xs:sequence><xs:element name="orderperson" type="xs:string"/><xs:element name="shipto"><xs:complexType><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="item" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:element name="title" type="xs:string"/><xs:element name="note" type="xs:string" minOccurs="0"/><xs:element name="quantity" type="xs:positiveInteger"/><xs:element name="price" type="xs:decimal"/></xs:sequence></xs:complexType></xs:element></xs:sequence><xs:attribute name="orderid" type="xs:string" use="required"/></xs:complexType> </xs:element> </xs:schema>


Divide the Schema
劃分Schema

The previous design method is very simple, but can be difficult to read and maintain when documents are complex.
上面的設(shè)計(jì)方法非常簡(jiǎn)單,但因?yàn)槲募菑?fù)合(或復(fù)雜的,Complex)的,所以難于閱讀和利用。

The next design method is based on defining all elements and attributes first, and then referring to them using the ref attribute.
下面的設(shè)計(jì)方法是:先定義所有的元素和屬性,然后用ref屬性引用它們。

Here is the new design of the schema file ("shiporder.xsd"):
下面是schema文件的新設(shè)計(jì)方式("shiporder.xsd"):

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- definition of simple elements --> <xs:element name="orderperson" type="xs:string"/> <xs:element name="name" type="xs:string"/><xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/><xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string"/> <xs:element name="quantity" type="xs:positiveInteger"/><xs:element name="price" type="xs:decimal"/> <!-- definition of attributes --> <xs:attribute name="orderid" type="xs:string"/> <!-- definition of complex elements --> <xs:element name="shipto"><xs:complexType><xs:sequence><xs:element ref="name"/><xs:element ref="address"/><xs:element ref="city"/><xs:element ref="country"/></xs:sequence></xs:complexType> </xs:element> <xs:element name="item"><xs:complexType><xs:sequence><xs:element ref="title"/><xs:element ref="note" minOccurs="0"/><xs:element ref="quantity"/><xs:element ref="price"/></xs:sequence></xs:complexType> </xs:element> <xs:element name="shiporder"><xs:complexType><xs:sequence><xs:element ref="orderperson"/><xs:element ref="shipto"/><xs:element ref="item" maxOccurs="unbounded"/></xs:sequence><xs:attribute ref="orderid" use="required"/></xs:complexType> </xs:element> </xs:schema>


Using Named Types
使用有名稱的類型

The third design method defines classes or types, that enables us to reuse element definitions. This is done by naming the simpleTypes and complexTypes elements, and then point to them through the type attribute of the element.
第三種設(shè)計(jì)方法定義了種類或類型,這使我們能重新用元素定義。通過給簡(jiǎn)單類型和復(fù)合類型元素命名,接著在元素的種類屬性類型里指明它們的方法來做到這點(diǎn)。

Here is the third design of the schema file ("shiporder.xsd"):
這是schema文件("shiporder.xsd")的第三份構(gòu)思

<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="stringtype"><xs:restriction base="xs:string"/> </xs:simpleType> <xs:simpleType name="inttype"><xs:restriction base="xs:positiveInteger"/> </xs:simpleType> <xs:simpleType name="dectype"><xs:restriction base="xs:decimal"/> </xs:simpleType> <xs:simpleType name="orderidtype"><xs:restriction base="xs:string"><xs:pattern value="[0-9]{6}"/></xs:restriction> </xs:simpleType> <xs:complexType name="shiptotype"><xs:sequence><xs:element name="name" type="stringtype"/><xs:element name="address" type="stringtype"/><xs:element name="city" type="stringtype"/><xs:element name="country" type="stringtype"/></xs:sequence> </xs:complexType> <xs:complexType name="itemtype"><xs:sequence><xs:element name="title" type="stringtype"/><xs:element name="note" type="stringtype" minOccurs="0"/><xs:element name="quantity" type="inttype"/><xs:element name="price" type="dectype"/></xs:sequence></xs:complexType> <xs:complexType name="shipordertype"><xs:sequence><xs:element name="orderperson" type="stringtype"/><xs:element name="shipto" type="shiptotype"/><xs:element name="item" maxOccurs="unbounded" type="itemtype"/></xs:sequence><xs:attribute name="orderid" type="orderidtype" use="required"/> </xs:complexType> <xs:element name="shiporder" type="shipordertype"/> </xs:schema>

The restriction element indicates that the datatype is derived from a W3C XML Schema namespace datatype. So, the following fragment means that the value of the element or attribute must be a string value:
約束元素指出了這個(gè)數(shù)據(jù)類型是由一個(gè)W3C XML Schema名稱空間數(shù)據(jù)類型派生出來的。所以,下面的片段意味著元素或?qū)傩缘闹当仨毷且粋€(gè)字符串的值

<xs:restriction base="xs:string">

The restriction element is more often used to apply restrictions to elements. Look at the following lines from the schema above:
約束元素常常用于給元素添加約束。請(qǐng)看上述schema中的幾行:

<xs:simpleType name="orderidtype"><xs:restriction base="xs:string"><xs:pattern value="[0-9]{6}"/></xs:restriction> </xs:simpleType>

This indicates that the value of the element or attribute must be a string, it must be exactly six characters in a row, and those characters must be a number from 0 to 9.
這指出了元素或?qū)傩缘闹当仨毷亲址?#xff0c;而且必須是一排6個(gè)從0到9之間的數(shù)字。

XSD 字符串?dāng)?shù)據(jù)類型
w3pop.com / 2006-09-21

XSD 實(shí)例 XSD 日期數(shù)據(jù)類型

String data types are used for values that contains character strings.
字符串?dāng)?shù)據(jù)類型用于定義字符串的值的。


String Data Type
字符串?dāng)?shù)據(jù)類型

The string data type can contain characters, line feeds, carriage returns, and tab characters.
字符串?dāng)?shù)據(jù)類型包括字符,換行符,回車符,和制表符

The following is an example of a string declaration in a schema:
下面是關(guān)于字符在schema(XML公式)里的聲明方法的例子:

<xs:element name="customer" type="xs:string"/>

An element in your document might look like this:
你文檔中也許有這樣的元素:

<customer>John Smith</customer>

Or it might look like this:
它也許會(huì)是這樣:

<customer> John Smith </customer>

Note: The XML processor will not modify the value if you use the string data type.
注意:如果你用字符串?dāng)?shù)據(jù)類型,XML處理器將不會(huì)修改數(shù)值。


NormalizedString Data Type
規(guī)格化的字符串?dāng)?shù)據(jù)類型(NormalizedString Data Type)

The normalizedString data type is derived from the String data type.
規(guī)格化的字符串?dāng)?shù)據(jù)類型是從字符數(shù)據(jù)類型里派生出來的。

The normalizedString data type also contains characters, but the XML processor will remove line feeds, carriage returns, and tab characters.
規(guī)格化的字符串?dāng)?shù)據(jù)類型也包括字符,但XML processor會(huì)清除換行符,回車符和制表符

The following is an example of a normalizedString declaration in a schema:
下面的是關(guān)于一個(gè)規(guī)格化的字符串?dāng)?shù)據(jù)類型(normalizedString)在Schema中聲明方法的例子:

<xs:element name="customer" type="xs:normalizedString"/>

An element in your document might look like this:
你的文檔中也許有像這樣的元素:

<customer>John Smith</customer>

Or it might look like this:
或者它也許會(huì)是這樣:

<customer> John Smith </customer>

Note: In the example above the XML processor will replace the tabs with spaces.
注意:上述例子里XML處理器會(huì)用空格符替代制表符


Token Data Type
記號(hào)(token)數(shù)據(jù)類型

The token data type is also derived from the String data type.
記號(hào)數(shù)據(jù)類型也是從字符串?dāng)?shù)據(jù)類型里派生出來的

The token data type also contains characters, but the XML processor will remove line feeds, carriage returns, tabs, leading and trailing spaces, and multiple spaces.
記號(hào)數(shù)據(jù)類型也包括字符,但XML處理器會(huì)清除換行符,回車符,制表符,頭尾的空格,以及對(duì)于的空格。

The following is an example of a token declaration in a schema:
下面是關(guān)于符號(hào)(token)在schema中聲明的例子:

<xs:element name="customer" type="xs:token"/>

An element in your document might look like this:
你文檔中的元素也許像這樣:

<customer>John Smith</customer>

Or it might look like this:
或者它也有可能像這樣:

<customer> John Smith </customer>

Note: In the example above the XML processor will remove the tabs.
注意:在上述例子里,XML處理器會(huì)清除制表符


String Data Types
字符串?dāng)?shù)據(jù)類型

Note that all of the data types below derive from the String data type (except for string itself)!
要注意下面所有的數(shù)據(jù)類型都是從字符串?dāng)?shù)據(jù)類型里派生出來的(除了字符串本身)

Name
名稱Description
解釋
ENTITIES?
ENTITY?
IDA string that represents the ID attribute in XML (only used with schema attributes)
象征XML的ID屬性的字符串(只用在schema屬性里)
IDREFA string that represents the IDREF attribute in XML (only used with schema attributes)
象征XML里的IDREF屬性的字符串(只能和schema屬性一起使用)
IDREFS?
languageA string that contains a valid language id
含有正確的語言ID的字符串
NameA string that contains a valid XML name
含有一個(gè)有效的XML名稱的字符串
NCName?
NMTOKENA string that represents the NMTOKEN attribute in XML (only used with schema attributes)
象征XML里的NMTOKEN屬性的字符串(只能和schema屬性一起使用)
NMTOKENS?
normalizedStringA string that does not contain line feeds, carriage returns, or tabs
不含有換行符,回車符或制表符的字符串
QName?
stringA string
一個(gè)字符串
tokenA string that does not contain line feeds, carriage returns, tabs, leading or trailing spaces, or multiple spaces
不含有換行符,回車符,制表符,頭尾空格,或重復(fù)空格的字符串


Restrictions on String Data Types
對(duì)字符串?dāng)?shù)據(jù)類型的約束(Restrictions on String Data Types)

Restrictions that can be used with String data types:
可約束的字符串?dāng)?shù)據(jù)類型:

  • enumeration
    列舉
  • length
    長(zhǎng)度
  • maxLength
    最大長(zhǎng)度
  • minLength
    最小長(zhǎng)度
  • pattern (NMTOKENS, IDREFS, and ENTITIES cannot use this constraint)
    式樣(不能約束NMTOKENS, IDREFS,和 ENTITIES)
  • whiteSpace
    空白

    XSD 日期數(shù)據(jù)類型
    w3pop.com / 2006-09-21

    XSD 字符串?dāng)?shù)據(jù)類型 XSD 小數(shù)數(shù)據(jù)類型

    Date and time data types are used for values that contain date and time.
    日期和時(shí)間數(shù)據(jù)類型(Date and time data types)用于定義日期和時(shí)間數(shù)據(jù)的。


    Date Data Type
    日期數(shù)據(jù)類型

    The date data type is used to specify a date.
    日期數(shù)據(jù)類型用于指定一個(gè)具體的日期

    The date is specified in the following form "YYYY-MM-DD" where:
    日期由下面的"YYYY-MM-DD"形式指定。

    • YYYY indicates the year
      ?YYYY指示年份
    • MM indicates the month
      MM指示月份
    • DD indicates the day
      DD 指示日期

    Note: All components are required!
    注意:所有組件都是必需的。

    The following is an example of a date declaration in a schema:
    下面是schema(XML公式)里的聲明日期的例子

    <xs:element name="start" type="xs:date"/>

    An element in your document might look like this:
    你文檔中的某個(gè)元素也許是這樣的:

    <start>2002-09-24</start>

    Time Zones
    時(shí)間區(qū)

    To specify a time zone, you can either enter a date in UTC time by adding a "Z" behind the date - like this:
    為指定一個(gè)時(shí)間區(qū),你既可以通過在日期的后面加個(gè)"Z"訪問UTC時(shí)間格式的日期,就像這樣:

    <start>2002-09-24Z</start>

    or you can specify an offset from the UTC time by adding a positive or negative time behind the date - like this:
    也可以UTC時(shí)間后加、減一個(gè)時(shí)間值,就像這樣:

    <start>2002-09-24-06:00</start> or <start>2002-09-24+06:00</start>


    Time Data Type
    時(shí)間數(shù)據(jù)類型

    The time data type is used to specify a time.
    時(shí)間數(shù)據(jù)類型用于指定一個(gè)時(shí)間

    The time is specified in the following form "hh:mm:ss" where:
    時(shí)間由下面的"hh:mm:ss"形式指定:

    • hh indicates the hour
      hh指示小時(shí)
    • mm indicates the minute
      mm 指示分鐘
    • ss indicates the second
      ss指示秒鐘

    Note: All components are required!
    注意:所有的組件都是必需的

    The following is an example of a time declaration in a schema:
    下面是schema(XML公式)里的時(shí)間聲明的例子

    <xs:element name="start" type="xs:time"/>

    An element in your document might look like this:
    你文檔中或許有這樣的元素:

    <start>09:00:00</start>

    Or it might look like this:
    或者是這樣的:

    <start>09:30:10.5</start>

    Time Zones
    時(shí)間區(qū)

    To specify a time zone, you can either enter a time in UTC time by adding a "Z" behind the time - like this:
    為指定一個(gè)時(shí)間區(qū),你既可以通過在日期的后面加個(gè)"Z"訪問UTC時(shí)間格式的日期,就像這樣:

    <start>09:30:10Z</start>

    or you can specify an offset from the UTC time by adding a positive or negative time behind the time - like this:
    也可以UTC時(shí)間后加、減一個(gè)時(shí)間值,就像這樣:

    <start>09:30:10-06:00</start> or <start>09:30:10+06:00</start>


    DateTime Data Type
    日期時(shí)間數(shù)據(jù)類型(DateTime Data Type)

    The dateTime data type is used to specify a date and a time.
    日期時(shí)間數(shù)據(jù)類型用于指定一個(gè)日期和一個(gè)時(shí)間

    The dateTime is specified in the following form "YYYY-MM-DDThh:mm:ss" where:
    日期時(shí)間由"YYYY-MM-DDThh:mm:ss"的形式指定:

    • YYYY indicates the year
      YYYY指示時(shí)間
    • MM indicates the month
      MM指示月份
    • DD indicates the day
      DD 指示時(shí)間
    • T indicates the start of the required time section
      T指示時(shí)間區(qū)的開頭
    • hh indicates the hour
      hh指示小時(shí)
    • mm indicates the minute
      mm指示分鐘
    • ss indicates the second
      ss指示秒鐘

    Note: All components are required!
    注意:所有組件都是必需的

    The following is an example of a dateTime declaration in a schema:
    下面是schema(XML公式)里的日期時(shí)間聲明的例子

    <xs:element name="startdate" type="xs:dateTime"/>

    An element in your document might look like this:
    你文檔中或許有這樣的元素:

    <startdate>2002-05-30T09:00:00</startdate>

    Or it might look like this:
    或者是這樣的:

    <startdate>2002-05-30T09:30:10.5</startdate>

    Time Zones
    時(shí)間區(qū)

    To specify a time zone, you can either enter a dateTime in UTC time by adding a "Z" behind the time - like this:
    為指定一個(gè)時(shí)間區(qū),你既可以通過在日期的后面加個(gè)"Z"訪問UTC時(shí)間格式的日期,就像這樣:

    <startdate>2002-05-30T09:30:10Z</startdate>

    or you can specify an offset from the UTC time by adding a positive or negative time behind the time - like this:
    也可以UTC時(shí)間后加、減一個(gè)時(shí)間值,就像這樣:

    <startdate>2002-05-30T09:30:10-06:00</startdate> or <startdate>2002-05-30T09:30:10+06:00</startdate>


    Duration Data Type
    持續(xù)時(shí)間數(shù)據(jù)類型(或“時(shí)間段數(shù)據(jù)類型”)(Duration Data Type)

    The duration data type is used to specify a time interval.
    持續(xù)時(shí)間數(shù)據(jù)類型(或“時(shí)間段數(shù)據(jù)類型”)用于定義一段時(shí)間間隔

    The time interval is specified in the following form "PnYnMnDTnHnMnS" where:
    時(shí)間間隔由"PnYnMnDTnHnMnS"形式定義的

    • P indicates the period (required)
      P指示
    • nY indicates the number of years
      nY指示年數(shù)
    • nM indicates the number of months
      nM指示月數(shù)
    • nD indicates the number of days
      nD指示天數(shù)
    • T indicates the start of a time section (required if you are going to specify hours, minutes, or seconds)
      T指示時(shí)間部分的開頭(如果你要指定時(shí)間,分鐘,或秒數(shù),就必須用到T)
    • nH indicates the number of hours
      nH指示小時(shí)數(shù)
    • nM indicates the number of minutes
      nM指示分鐘數(shù)
    • nS indicates the number of seconds
      nS指示秒數(shù)

    The following is an example of a duration declaration in a schema:
    下面是schema(XML公式)里的時(shí)間段聲明的例子

    <xs:element name="period" type="xs:duration"/>

    An element in your document might look like this:
    你文檔中或許有這樣的元素:

    <period>P5Y</period>

    The example above indicates a period of five years.
    上面的例子指示了5年的時(shí)間段

    Or it might look like this:
    或者也可以像這樣:

    <period>P5Y2M10D</period>

    The example above indicates a period of five years, two months, and 10 days.
    上面的例子指出了5年2個(gè)月零10天的時(shí)間段

    Or it might look like this:
    它也可以這樣:

    <period>P5Y2M10DT15H</period>

    The example above indicates a period of five years, two months, 10 days, and 15 hours.
    上面的例子指出了5年2個(gè)月零10天的時(shí)間段

    Or it might look like this:
    或者它會(huì)是可以這樣:

    <period>PT15H</period>

    The example above indicates a period of 15 hours.
    上面的例子指出了15小時(shí)的時(shí)間段

    Negative Duration
    負(fù)時(shí)間段

    To specify a negative duration, enter a minus sign before the P:
    為定義負(fù)的時(shí)間段,在P之前添個(gè)負(fù)號(hào)

    <period>-P10D</period>

    The example above indicates a period of minus 10 days.
    上面的例子指出里負(fù)10天的時(shí)間段


    Date and Time Data Types
    日期和時(shí)間數(shù)據(jù)類型

    Name
    名稱Description
    解釋
    dateDefines a date value
    定義日期的值
    dateTimeDefines a date and time value
    定義了日期和時(shí)間值
    durationDefines a time interval
    定義了時(shí)間間隔
    gDayDefines a part of a date - the day (DD)
    定義了日期的部分定義了時(shí)間的一部分——日部分(DD)
    gMonthDefines a part of a date - the month (MM)
    定義了日期的一部分——月部分(MM)
    gMonthDayDefines a part of a date - the month and day (MM-DD)
    定義了日期的一部分——月和日部分(MM-DD)
    gYearDefines a part of a date - the year (YYYY)
    定義了日期的年部分(YYYY)
    gYearMonthDefines a part of a date - the year and month (YYYY-MM)
    定義了日期的一部分——年和月部分(YYYY-MM)
    timeDefines a time value
    定義時(shí)間值


    Restrictions on Date Data Types
    對(duì)日期數(shù)據(jù)類型的約束

    Restrictions that can be used with Date data types:
    對(duì)日期數(shù)據(jù)類型可進(jìn)行約束

    • enumeration
      列舉
    • maxExclusive
      除去最大值
    • maxInclusive
      包括最大值
    • minExclusive
      除去最小值排外
    • minInclusive
      包括最小值
    • pattern
      式樣
    • whiteSpace
      空白

XSD 小數(shù)數(shù)據(jù)類型
w3pop.com / 2006-09-21

XSD 日期數(shù)據(jù)類型 XSD 邏輯值數(shù)據(jù)類型

Decimal data types are used for numeric values.
小數(shù)數(shù)據(jù)類型用于定義數(shù)值


Decimal Data Type
小數(shù)數(shù)據(jù)類型

The decimal data type is used to specify a numeric value.
小數(shù)數(shù)據(jù)類型用于指定一個(gè)數(shù)值

The following is an example of a decimal declaration in a schema:
下面是在schema(XML公式)里關(guān)于小數(shù)聲明的例子

<xs:element name="prize" type="xs:decimal"/>

An element in your document might look like this:
你文檔中的一個(gè)元素也許會(huì)像這樣:

<prize>999.50</prize>

Or it might look like this:
或者會(huì)像這樣:

<prize>+999.5450</prize>

Or it might look like this:
又或者像這樣:

<prize>-999.5230</prize>

Or it might look like this:
也可能這樣:

<prize>0</prize>

Or it might look like this:
當(dāng)然,也會(huì)是這樣:

<prize>14</prize>

Note: The maximum number of decimal digits you can specify is 18.
注意:可以指定的小數(shù)位數(shù)最多是18位。


Integer Data Type
整數(shù)數(shù)據(jù)類型

The integer data type is used to specify a numeric value without a fractional component.
整數(shù)數(shù)據(jù)類型用于指定沒有小數(shù)部分的數(shù)值。

The following is an example of an integer declaration in a schema:
下面是的關(guān)于整數(shù)在schema里的聲明方法的例子。

<xs:element name="prize" type="xs:integer"/>

An element in your document might look like this:
你文檔中也許有這樣的元素:

<prize>999</prize>

Or it might look like this:
或許是這樣:

<prize>+999</prize>

Or it might look like this:
也可能是這樣:

<prize>-999</prize>

Or it might look like this:
當(dāng)然也會(huì)是這樣:

<prize>0</prize>


Numeric Data Types
數(shù)字?jǐn)?shù)據(jù)類型

Note that all of the data types below derive from the Decimal data type (except for decimal itself)!
要注意的是下面所有的數(shù)據(jù)類型都是從小數(shù)數(shù)據(jù)類型里派生出來的(除了小數(shù)自身)

Name
名稱Description
解釋
byteA signed 8-bit integer
最大8位的帶符號(hào)整數(shù)
decimalA decimal value
小數(shù)數(shù)值
intA signed 32-bit integer
最大32位的帶符號(hào)整數(shù)
integerAn integer value
整數(shù)值
longA signed 64-bit integer
最大64位的帶符號(hào)整數(shù)
negativeIntegerAn integer containing only negative values ( .., -2, -1.)
含有負(fù)值的整數(shù) ( .., -2, -1.)
nonNegativeIntegerAn integer containing only non-negative values (0, 1, 2, ..)
含有非負(fù)值的整數(shù) (0, 1, 2, ..)
nonPositiveIntegerAn integer containing only non-positive values (.., -2, -1, 0)
含有非正值的整數(shù) (.., -2, -1, 0)
positiveIntegerAn integer containing only positive values (1, 2, ..)
只含有正值的整數(shù)(1, 2, ..)
shortA signed 16-bit integer
最大16位的帶符號(hào)整數(shù)
unsignedLongAn unsigned 64-bit integer
最大64位的不帶符號(hào)整數(shù)
unsignedIntAn unsigned 32-bit integer
最大32位的不帶符號(hào)整數(shù)
unsignedShortAn unsigned 16-bit integer
最大16位的不帶符號(hào)整數(shù)
unsignedByteAn unsigned 8-bit integer
最大8位的不帶符號(hào)整數(shù)


Restrictions on Numeric Data Types
對(duì)字?jǐn)?shù)據(jù)類型的約束

Restrictions that can be used with Numeric data types:
可用于約束的數(shù)字?jǐn)?shù)據(jù)類型:

  • enumeration
    列舉
  • fractionDigits
    小數(shù)位數(shù)
  • maxExclusive
    ?除去最大值
  • maxInclusive
    包括最大值
  • minExclusive
    除去最小值
  • minInclusive
    包括最小值
  • pattern
    式樣類型
  • totalDigits
    總的數(shù)字位數(shù)
  • whiteSpace
    空白部分

    XSD 邏輯值數(shù)據(jù)類型
    w3pop.com / 2006-09-21

    XSD 小數(shù)數(shù)據(jù)類型 XML Schema總結(jié)

    Other miscellaneous data types are boolean, base64Binary, hexBinary, float, double, anyURI, QName, and NOTATION.
    其他混合的數(shù)據(jù)類型包括邏輯值(boolean),基本的64個(gè)二進(jìn)制數(shù)、十六進(jìn)位數(shù)、浮點(diǎn)精度小數(shù)、雙精度型數(shù)、anyURI、限定名稱(QName)和符號(hào)。


    Boolean Data Type
    邏輯值數(shù)據(jù)類型

    The boolean data type is used to specify a true or false value.
    邏輯型數(shù)據(jù)類型用于指定值為真或假。

    The following is an example of a boolean declaration in a schema:
    以下是在schema(XML公式)里有關(guān)邏輯聲明的例子

    <xs:attribute name="disabled" type="xs:boolean"/>

    An element in your document might look like this:
    你文檔里或許有這樣的元素:

    <prize disabled="true">999</prize>

    Note: Legal values for boolean are true, false, 1 (which indicates true), and 0 (which indicates false).
    注意:合法的邏輯值是真,假,1(指示真),0(指示假)


    Binary Data Types
    二進(jìn)制數(shù)據(jù)類型

    Binary data types are used to express binary-formatted data.
    二進(jìn)制數(shù)據(jù)用于表示二進(jìn)制的數(shù)據(jù)

    We have two binary data types:
    我們有兩種二進(jìn)制數(shù)據(jù)類型:

    • base64Binary (Base64-encoded binary data)
      基礎(chǔ)64二進(jìn)制(64碼基礎(chǔ)的二進(jìn)制數(shù)據(jù)Base64-encoded binary data)
    • hexBinary (hexadecimal-encoded binary data)
      16進(jìn)制(16進(jìn)位編碼的二進(jìn)制數(shù)據(jù)hexadecimal-encoded binary data)

    The following is an example of a hexBinary declaration in a schema:
    以下是關(guān)于十六進(jìn)位數(shù)在schema里的聲明方法:

    <xs:element name="blobsrc" type="xs:hexBinary"/>


    AnyURI Data Type
    anyURI數(shù)據(jù)類型

    The anyURI data type is used to specify a URI.
    anyURI數(shù)據(jù)類型用于指定一個(gè)URI.

    The following is an example of an anyURI declaration in a schema:
    以下是關(guān)于anyURI在schema里的聲明方法:

    <xs:attribute name="src" type="xs:anyURI"/>

    An element in your document might look like this:
    你文檔里也許有這個(gè)元素:

    <pic src="http://www.w3schools.com/images/smiley.gif" />

    Note: If a URI has spaces, replace them with %20.
    注意:如果URI包含空格,可以用“%20”替代它們。


    Miscellaneous Data Types
    混合數(shù)據(jù)類型

    Name
    名稱Description
    描述
    anyURI?
    base64Binary?
    boolean?
    double?
    float?
    hexBinary?
    NOTATION?
    QName?


    Restrictions on Miscellaneous Data Types
    對(duì)混合數(shù)據(jù)類型的約束

    Restrictions that can be used with the other data types:
    可用于約束的其他數(shù)據(jù)類型:

    • enumeration (a Boolean data type cannot use this constraint)
      列舉(不能用此約束邏輯值數(shù)據(jù)類型)
    • length (a Boolean data type cannot use this constraint)
      長(zhǎng)度(不能用此約束邏輯值數(shù)據(jù)類型)
    • maxLength (a Boolean data type cannot use this constraint)
      最大長(zhǎng)度(不能用此約束邏輯值數(shù)據(jù)類型)
    • minLength (a Boolean data type cannot use this constraint)
      最短長(zhǎng)度(不能用此約束邏輯值數(shù)據(jù)類型)
    • pattern
      式樣
    • whiteSpace
      空白

XML Schema總結(jié)
w3pop.com / 2006-09-21

XSD 邏輯值數(shù)據(jù)類型 XML Schema 參考

XML Schema Summary
XML Schema總結(jié)

This tutorial has taught you how to describe the structure of an XML document.
這篇教程教你如何描述XML文檔的結(jié)構(gòu)

You have learned how to use an XML Schema is to define the legal elements of an XML document, just like a DTD. We think that very soon XML Schemas will be used in most Web applications as a replacement for DTDs.
你已經(jīng)學(xué)習(xí)了怎樣使用XML Schema(XML 公式),就是象DTD一樣給XML文檔定義合法元素。我們認(rèn)為很快XML Schema(XML 公式)就會(huì)取代DTD而被大多數(shù)的網(wǎng)絡(luò)應(yīng)用程序所使用。

You have also learned that the XML Schema language is very rich. Unlike DTDs, it supports data types and namespaces.
你已經(jīng)知道了 XML公式語言是很豐富的。和DTD不同,它支持?jǐn)?shù)據(jù)類型和名稱空間。

For more information on XML Schema, please look at our XML Schema reference.
想更多地了解XML Schema 的信息,請(qǐng)看我們的XML Schema 參考。


Now You Know XML Schema, What's Next?
現(xiàn)在你知道了XML Schema,那接著學(xué)什么呢?

The next step is to learn about WSDL.
下步是學(xué)習(xí)有關(guān)WSDL.

WSDL is a schema-based language for describing Web services and how to access them.
WSDL 是描述網(wǎng)絡(luò)服務(wù)以及描述怎樣訪問它們的一種以schema為基礎(chǔ)的語言

WSDL describes a web service, along with the message format and protocol details for the web service.
WSDL描述網(wǎng)絡(luò)服務(wù),以及與網(wǎng)絡(luò)服務(wù)有關(guān)的信息格式和協(xié)議細(xì)節(jié)。

If you want to learn more about WSDL, please visit our WSDL tutorial.
想學(xué)習(xí)更多與WSDL有關(guān)的內(nèi)容,請(qǐng)瀏覽我們的WSDL 教程.

XML Schema 參考
w3pop.com / 2006-09-21

XML Schema總結(jié)

XSD Elements
XSD元素

Element
元素Explanation
解釋
allSpecifies that the child elements can appear in any order. Each child element can occur 0 or 1 time
指明了子元素可以以任意順序出現(xiàn),每個(gè)子元素出現(xiàn)0到1次
annotationSpecifies the top-level element for schema comments
為schema注釋指定了最高階層的元素
anyEnables the author to extend the XML document with elements not specified by the schema
讓編者能夠用沒有被schema指定的元素來擴(kuò)展XML文件
anyAttributeEnables the author to extend the XML document with attributes not specified by the schema
讓編者能夠用沒有被schema指定的屬性來擴(kuò)展XML文件
appInfoSpecifies information to be used by the application (must go inside annotation)
指定了將被應(yīng)用程序所用到的信息(必須在annotation里)
attributeDefines an attribute
定義屬性
attributeGroupDefines an attribute group to be used in complex type definitions
定義了用于復(fù)合種類定義的屬性組
choiceAllows only one of the elements contained in the <choice> declaration to be present within the containing element
只允許<choice>聲明里的元素里的一個(gè)元素出現(xiàn)在所含的元素中。
complexContentDefines extensions or restrictions on a complex type that contains mixed content or elements only
在包含混合內(nèi)容和元素的復(fù)合類型(complex type)上定義擴(kuò)展或限制
complexTypeDefines a complex type element
定義了復(fù)合類型元素(complex type element)
documentationDefines text comments in a schema (must go inside annotation)
定義了schema里的文本注釋(必須在annotation里)
elementDefines an element
定義元素
extensionExtends an existing simpleType or complexType element
擴(kuò)展一個(gè)現(xiàn)存的簡(jiǎn)單類型或復(fù)合類型元素
fieldSpecifies an XPath expression that specifies the value used to define an identity constraint
指明一個(gè)XPath表達(dá)式,以指明用于定義身份約束的值
groupDefines a group of elements to be used in complex type definitions
定義了將用于復(fù)合類型說明的一組元素
importAdds multiple schemas with different target namespace to a document
用不同的目標(biāo)名稱空間把多項(xiàng)schema添加到一份文件
includeAdds multiple schemas with the same target namespace to a document
用同一目標(biāo)名稱空間把多項(xiàng)schema添加到文件
keySpecifies an attribute or element value as a key (unique, non-nullable, and always present) within the containing element in an instance document
在實(shí)例文檔包含的元素里指明某屬性或元素值,使它們成為“鑰匙”(特殊的,非零的,經(jīng)常是存在的)
keyrefSpecifies that an attribute or element value correspond to those of the specified key or unique element
定義用于回應(yīng)已指明關(guān)鍵或特殊元素的屬性或元素值
listDefines a simple type element as a list of values
一張值的列表的形式定義一個(gè)簡(jiǎn)單類型元素
notationDescribes the format of non-XML data within an XML document
描述在XML文檔里的非XML形式數(shù)據(jù)的格式
redefineRedefines simple and complex types, groups, and attribute groups from an external schema
從外部的schema中重新定義簡(jiǎn)單和復(fù)合類型,群,以及屬性群
restrictionDefines restrictions on a simpleType, simpleContent, or a complexContent
在簡(jiǎn)單類型,簡(jiǎn)單文本或復(fù)合文本上定義約束
schemaDefines the root element of a schema
定義schema的根元素
selectorSpecifies an XPath expression that selects a set of elements for an identity constraint
指明一段可為身份約束選擇一組節(jié)點(diǎn)的XPath表達(dá)
sequenceSpecifies that the child elements must appear in a sequence. Each child element can occur from 0 to any number of times
指明了子元素必須以一定順序出現(xiàn)。每個(gè)子元素可以出現(xiàn)任意次
simpleContentContains extensions or restrictions on a text-only complex type or on a simple type as content and contains no elements
包含著作為只有文本的復(fù)合類型或簡(jiǎn)單類型的文本的擴(kuò)展和約束,不包含元素
simpleTypeDefines a simple type and specifies the constraints and information about the values of attributes or text-only elements
定義了簡(jiǎn)單類型,指定了關(guān)于屬性值或只有文本的元素的信息
unionDefines a simple type as a collection (union) of values from specified simple data types
從已指定的簡(jiǎn)單數(shù)據(jù)類型里定義簡(jiǎn)單種類,作為值的集合
uniqueDefines that an element or an attribute value must be unique within the scope
定義了在所屬范圍內(nèi)一個(gè)元素或?qū)傩灾当仨毷仟?dú)特(沒有重復(fù)的)


XSD Restrictions/Facets for Datatypes
XSD對(duì)各種數(shù)據(jù)類型的約束

Look at XSD Restrictions!
下面看一看關(guān)于XSD的約束

Constraint
約束Description
描述
enumerationDefines a list of acceptable values
定義了一系列可接受的屬性的值
fractionDigitsSpecifies the maximum number of decimal places allowed. Must be equal to or greater than zero
指明了所允許的最多小數(shù)位數(shù)。必須等于大于0
lengthSpecifies the exact number of characters or list items allowed. Must be equal to or greater than zero
指明了所允許的字符或列表項(xiàng)的確切個(gè)數(shù)。必須等于大于零
maxExclusiveSpecifies the upper bounds for numeric values (the value must be less than this value)
指明了最大數(shù)值(數(shù)值必須小于最大數(shù)值)
maxInclusiveSpecifies the upper bounds for numeric values (the value must be less than or equal to this value)
指明了數(shù)值上限(數(shù)值必須小于等于數(shù)值上限)
maxLengthSpecifies the maximum number of characters or list items allowed. Must be equal to or greater than zero
指明了所允許的字符或列表項(xiàng)的最多個(gè)數(shù)。必須大于等于0
minExclusiveSpecifies the lower bounds for numeric values (the value must be greater than this value)
指明了數(shù)值的下限(數(shù)值必須比這個(gè)值大)
minInclusiveSpecifies the lower bounds for numeric values (the value must be greater than or equal to this value)
指明了數(shù)值的下限(數(shù)值要大于等于這個(gè)值)
minLengthSpecifies the minimum number of characters or list items allowed. Must be equal to or greater than zero
指明了所允許的字符和列表項(xiàng)的最少個(gè)數(shù)。必須大于等于0個(gè)
patternDefines the exact sequence of characters that are acceptable
定義了可接受字符的確切順序
totalDigitsSpecifies the exact number of digits allowed. Must be greater than zero
定義了所允許的阿拉伯?dāng)?shù)字的確切個(gè)數(shù)。必須比0個(gè)多
whiteSpaceSpecifies how white space (line feeds, tabs, spaces, and carriage returns) is handled
定義了各種空白區(qū)域(white space) (換行符、制表符、空格、回車符)是如何被處理的。

?

總結(jié)

以上是生活随笔為你收集整理的XSD(Schema)教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久9视频 | 天天色天天爱天天射综合 | 国产精品综合av一区二区国产馆 | 香蕉一区| 女人魂免费观看 | 精品高清视频 | 久久免费国产视频 | 欧美日韩3p | 国内视频1区| 亚洲精品xx | 国产一级视频 | 91系列在线观看 | 欧美日韩综合在线观看 | 日日夜夜精品视频天天综合网 | 在线国产一区 | 午夜精品一区二区三区免费 | 久久久久久久久久免费视频 | 久久精品综合一区 | 久久人视频 | 最近中文字幕高清字幕免费mv | 国产人免费人成免费视频 | 婷婷精品在线 | 最新日韩在线 | 91精品1区 | 久久一级片 | 欧美在线观看视频一区二区三区 | 五月天婷亚洲天综合网鲁鲁鲁 | 黄a在线观看 | 五月婷香蕉久色在线看 | 美女中文字幕 | 玖玖999 | 国产一级在线免费观看 | 天天爽夜夜爽人人爽一区二区 | 91视频免费观看 | 日韩av免费一区二区 | 中文字幕日韩国产 | 97视频在线免费观看 | 欧洲一区二区在线观看 | 成人小视频在线观看免费 | 欧美在线视频二区 | 国产午夜av | 久久综合久久综合这里只有精品 | 欧美性生交大片免网 | 一本一本久久a久久精品牛牛影视 | 国产精品一区二区三区99 | 欧美最猛性xxxxx免费 | 成年人精品| 国产精品麻豆免费版 | 91福利视频免费观看 | 91x色| 色吧久久 | 久久精品综合 | 蜜臀aⅴ国产精品久久久国产 | 欧美激情第一区 | 在线免费视频 你懂得 | av女优中文字幕在线观看 | 国产午夜精品福利视频 | 亚洲欧美怡红院 | 波多野结衣电影一区二区 | 欧美中文字幕久久 | 亚洲成人精品久久 | 天天干天天拍 | 日韩美女免费线视频 | 国产一二区免费视频 | 中文字幕一区二区三区四区视频 | 丁香婷婷激情国产高清秒播 | 国产小视频网站 | 欧美专区国产专区 | 日本精品va在线观看 | 综合影视 | 欧美成年人在线观看 | 国产无套视频 | 久久久久久免费毛片精品 | 四虎在线视频免费观看 | 国产精品18久久久久久首页狼 | 伊人婷婷在线 | 91av视频网站 | 欧美激情精品久久久久久 | 夜夜爽天天爽 | 人人玩人人爽 | 国产视频午夜 | 免费看的黄色网 | 中文字幕一区二区三区在线播放 | 国产一区高清在线 | 国产v在线 | 日韩成人免费在线观看 | 综合久久五月天 | 蜜臀精品久久久久久蜜臀 | 伊人久久精品久久亚洲一区 | 天天干一干 | 日韩黄在线观看 | 精品福利片 | 日韩专区在线 | 亚洲欧美国产日韩在线观看 | 成人黄色免费观看 | 久久艹艹 | 日产乱码一二三区别在线 | 手机av永久免费 | 手机av资源 | 亚洲精品视频二区 | 日日夜夜操操 | 精品影院一区二区久久久 | 中文字幕91在线 | 最新99热| 伊人久在线 | h视频在线看 | 亚洲精品日韩在线观看 | 六月激情婷婷 | 欧美日韩视频在线 | 久草热视频 | 欧美日韩在线视频免费 | 国产亚洲精品v | wwwww.国产| 亚洲成人黄色av | 欧美日韩中文字幕视频 | 国产一区二区在线免费观看 | 久久久久久国产精品亚洲78 | 久久久久区| 欧美疯狂性受xxxxx另类 | 国产精品扒开做爽爽的视频 | 久久精品韩国 | 亚洲劲爆av | 欧美日韩免费观看一区=区三区 | 中文字幕色网站 | 欧美激情在线网站 | 国产 日韩 在线 亚洲 字幕 中文 | 高清精品久久 | 成人黄大片视频在线观看 | 国产色视频一区二区三区qq号 | 中文字幕在线观看网址 | 久久中文字幕视频 | 97人人模人人爽人人少妇 | 色综合咪咪久久网 | 狠狠的日日 | 综合黄色网 | 久久精品网站视频 | 免费情缘| 免费又黄又爽的视频 | 狠狠干中文字幕 | 国产在线国偷精品产拍免费yy | av电影不卡 | 狠狠操操网 | 国产黄在线| a视频在线播放 | 伊人婷婷在线 | 国产精品毛片网 | 亚洲精品一区二区三区在线观看 | 777奇米四色 | 91女人18片女毛片60分钟 | 麻豆免费看片 | 久草在线国产 | 伊人激情综合 | 一级欧美黄 | 国产免费三级在线观看 | 欧美一区二区三区在线 | 精品中文字幕在线观看 | 日韩av在线小说 | 久日精品| 成人综合日日夜夜 | 99激情网 | 国产无遮挡又黄又爽馒头漫画 | 色网站在线观看 | 网站免费黄| 亚洲精品视频在线看 | 九九久久影视 | 麻豆视频免费看 | 99国产在线视频 | 国产一区不卡在线 | 国产午夜激情视频 | 日日夜夜天天射 | 香蕉网在线观看 | 91精品国产成人 | 18性欧美xxxⅹ性满足 | 国产三级av在线 | 精品亚洲二区 | 亚洲人成人天堂h久久 | 免费日韩在线 | 国产性xxxx| 中文字幕激情 | 美国av片在线观看 | 久久99亚洲网美利坚合众国 | 国产色就色| 91在线精品视频 | 在线视频app | 99久久精品国产亚洲 | 亚洲精品高清在线 | 日韩中文幕 | 免费欧美精品 | www.亚洲视频 | 国产自产高清不卡 | 在线观看欧美成人 | 日韩电影一区二区在线观看 | 五月天激情综合 | 久久国产精彩视频 | 亚洲视频在线观看 | 波多野结衣资源 | 97视频在线观看成人 | 婷婷中文字幕 | 久久精品免费 | 中文字幕在线视频第一页 | 国产精品久久久久久久久婷婷 | 9ⅰ精品久久久久久久久中文字幕 | 日韩一区二区三免费高清在线观看 | 久久久久久久久久久网站 | 高清国产在线一区 | 久久国产精品一区二区三区 | 色偷偷88888欧美精品久久久 | 97视频在线免费播放 | 亚洲天堂网视频 | av在线在线 | 美腿丝袜一区二区三区 | 日日夜夜狠狠操 | 成年美女黄网站色大片免费看 | 最近中文字幕免费视频 | 国产91勾搭技师精品 | 久久中文字幕在线视频 | 欧美日韩在线免费观看 | a在线v| 97人人模人人爽人人少妇 | 国产免费又黄又爽 | 国产精品第一 | 成人看片 | 色99在线 | 亚洲视频分类 | 高清av不卡| 国产一区在线播放 | 国产精品久久久久永久免费 | 久久视频在线视频 | 日韩久久影院 | 在线观看国产区 | 日韩有码专区 | 国产福利中文字幕 | 国产小视频在线 | 久久伦理网 | 日韩av网站在线播放 | 日日碰夜夜爽 | 99精品久久久久久久久久综合 | 国产亚洲精品xxoo | 亚洲激情小视频 | 一区二区 不卡 | 亚洲国产操 | ww视频在线观看 | 亚洲精品大全 | 色婷婷激婷婷情综天天 | 婷婷丁香五 | 国产一区二区三区视频在线 | 成人18视频| 欧美日本一区 | 九九热在线精品视频 | 九草在线观看 | 999久久国产 | 日日爽天天爽 | 欧美九九九 | 国产精品久久久久久久久久新婚 | 欧美最新另类人妖 | 99精品区 | 免费在线成人av电影 | 成人免费91| 婷婷丁香七月 | 国产白浆在线观看 | 免费电影一区二区三区 | 日韩一区正在播放 | 天堂视频一区 | 国产香蕉视频在线观看 | 久久久综合电影 | 国产原创av在线 | 国产99久久九九精品免费 | 青青河边草观看完整版高清 | 国产区av在线 | 在线观看aa | 久久亚洲二区 | 久久久久这里只有精品 | 国产小视频免费在线观看 | 狠狠干夜夜爽 | 国产黄a三级三级 | 青草视频在线 | 99re8这里有精品热视频免费 | 一区二区三区免费网站 | 国产黄在线免费观看 | 亚洲精品网站在线 | 日韩高清一二区 | 婷婷五月情 | 亚洲精品电影在线 | 一区二区中文字幕在线播放 | 久久一本综合 | 日韩欧美专区 | 探花视频在线版播放免费观看 | 久国产在线播放 | 美女久久99 | 一本一本久久a久久精品综合小说 | 久久不卡国产精品一区二区 | 日韩免费在线观看视频 | 午夜精品视频免费在线观看 | 97av色| 久久国产精品视频 | 天天天插| 麻豆高清免费国产一区 | 国产亚洲精品成人 | 久久久国产影院 | 国产精品成久久久久 | 日韩午夜高清 | 久久精品99视频 | 国产一级片不卡 | 久久久久免费精品视频 | 日韩精品视频网站 | 国产一区二区视频在线播放 | 一级理论片在线观看 | 一区二区三区精品在线视频 | 亚洲国产精品久久久 | 在线免费高清一区二区三区 | 成人久久久精品国产乱码一区二区 | 精品成人在线 | 伊人电影在线观看 | 黄色三级网站在线观看 | 精品一区二区在线看 | 天天摸日日操 | 精品黄色视 | 岛国大片免费视频 | 夜又临在线观看 | 亚洲国产高清在线观看视频 | 成人h动漫在线看 | 日韩一级电影在线观看 | 91重口视频 | 国产在线视频资源 | 久久免费视频观看 | 91精品国产麻豆国产自产影视 | 国产青春久久久国产毛片 | 在线观看一区二区精品 | 成片视频免费观看 | 国内精品久久久精品电影院 | 国产视频2区 | 91精品久久久久久综合五月天 | 成 人 黄 色 免费播放 | 香蕉影院在线观看 | 999国产| 在线综合 亚洲 欧美在线视频 | 精品美女在线观看 | 97国产大学生情侣白嫩酒店 | 免费 在线 中文 日本 | 91禁在线观看| 国产亚洲精品久久久久5区 成人h电影在线观看 | 亚洲精品免费观看视频 | 久久r精品 | 一区二区三区在线视频111 | 91色九色 | 狠狠躁日日躁狂躁夜夜躁 | 亚洲欧洲日韩在线观看 | 99精品国产亚洲 | 国产日韩欧美在线免费观看 | 91chinese在线 | 亚洲理论电影网 | 四虎国产精品成人免费4hu | 亚洲人在线视频 | 激情综合网在线观看 | 国产亚洲精品中文字幕 | 黄色av三级在线 | 全黄色一级片 | 九九久久成人 | 国产精品久久视频 | 亚洲美女视频网 | av高清免费 | 国产精品久久久久久婷婷天堂 | 在线视频一二三 | 国产精品系列在线 | 日韩欧美一区二区三区免费观看 | 国产精品av电影 | 婷婷精品国产一区二区三区日韩 | 综合久久五月天 | 天天插天天爱 | 日韩网页 | 亚洲欧美日本一区二区三区 | 日韩中文字幕网站 | 国产高清免费视频 | www国产一区| 成年人免费在线 | 天天玩天天干天天操 | 综合精品久久久 | 日韩久久激情 | av网站地址 | 亚洲精品国产精品国自产观看 | 国产精品女同一区二区三区久久夜 | 精品视频国产 | 久久精品系列 | 色综合狠狠干 | 日产av在线播放 | 亚洲一级电影视频 | 激情综合色综合久久综合 | 一区二区三区四区在线免费观看 | 8x8x在线观看视频 | 欧美性色xo影院 | 91女子私密保健养生少妇 | 欧美一级片免费在线观看 | 免费能看的黄色片 | 国产精品视频app | 日韩特黄一级欧美毛片特黄 | 亚洲精品字幕在线 | 欧美人操人 | 91精品一区国产高清在线gif | 天天插视频 | 天天操天天色天天射 | 一区二区精品在线 | 国产大片免费久久 | 国产又粗又猛又爽又黄的视频先 | 丁香婷婷综合网 | www日日夜夜| 夜色资源站wwwcom | 婷婷精品进入 | 久久久久久久av麻豆果冻 | 视频二区在线视频 | 亚洲精品男人的天堂 | 色婷婷综合久久久久中文字幕1 | 97在线免费观看 | 色网站免费在线观看 | 玖玖999 | 这里有精品在线视频 | 欧美少妇18p| 黄色一级动作片 | 国产一区在线不卡 | 99久国产 | 日韩久久精品 | 亚洲三级毛片 | 乱男乱女www7788| 欧美性生交大片免网 | 久久影视网 | 日韩在线 一区二区 | av中文字幕在线免费观看 | 激情五月婷婷综合网 | 99久久99久久| 国产成人在线播放 | 日韩精品久久一区二区三区 | 欧美综合久久久 | 精品久久综合 | 久久久黄色免费网站 | 精品国产一区二区三区噜噜噜 | 国产精品白丝av | 伊人久久电影网 | 欧美精品一区在线发布 | 久久久久久高潮国产精品视 | 玖玖在线精品 | 三日本三级少妇三级99 | 91精品婷婷国产综合久久蝌蚪 | 久久久久中文字幕 | 日日干天天爽 | 国产成人精品综合久久久 | 国产一级二级三级视频 | 2019久久精品 | 97成人精品视频在线观看 | 日韩高清不卡一区二区三区 | 天天干天天操天天入 | 久久视频免费观看 | 丰满少妇久久久 | 91麻豆精品国产91 | 成全免费观看视频 | 国产亚洲精品久久久久久电影 | 激情开心网站 | 久久久久女人精品毛片九一 | 久久久久久国产一区二区三区 | 香蕉97视频观看在线观看 | 国产精品www | a在线免费| 婷婷在线网| 亚洲成人av在线电影 | 欧美日韩在线观看一区 | 日韩网站免费观看 | 亚洲区另类春色综合小说校园片 | 成人av一区二区在线观看 | 国产视频在线免费观看 | 久久久精品二区 | 亚洲免费在线播放视频 | 国内精品视频在线播放 | 日韩电影在线观看一区二区三区 | 欧美另类xxx | 午夜影院一级片 | 91观看视频 | 最近中文字幕免费视频 | 激情黄色av | 国产精品久久久久久久久久东京 | 日韩免费视频观看 | 2019精品手机国产品在线 | 99久久夜色精品国产亚洲 | 一级黄色电影网站 | 久久免费的精品国产v∧ | 中文在线资源 | 精品女同一区二区三区在线观看 | 美女搞黄国产视频网站 | 精品字幕在线 | 久久好看免费视频 | 91成人免费在线视频 | 99久久久国产免费 | 精品女同一区二区三区在线观看 | 一区二区三区在线免费观看 | www.黄色小说.com | 激情一区二区三区欧美 | 日韩中文字幕国产精品 | 久久久精品欧美一区二区免费 | 国产亚洲免费的视频看 | 久久久久久蜜av免费网站 | 国产精品久久久久久久妇 | 色亚洲激情| 黄色免费视频在线观看 | 在线 欧美 日韩 | 91网址在线观看 | 国产精品专区在线观看 | 日韩网站视频 | 8x成人免费视频 | 久久成人国产精品入口 | 91一区二区在线 | 日韩在线免费看 | 天天操天天爱天天爽 | 久草com| 精品在线亚洲视频 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 亚洲人成精品久久久久 | 色99之美女主播在线视频 | 99热最新精品 | 最近日本中文字幕a | 最新中文字幕在线播放 | 亚洲国产网站 | 精品国产1区二区 | 人人爽人人爽人人爽 | 国产精品自在线拍国产 | 欧美日本不卡 | 成人蜜桃视频 | 缴情综合网五月天 | 黄色aaa级片 | 九月婷婷人人澡人人添人人爽 | 亚洲做受高潮欧美裸体 | 热久久99这里有精品 | 成人激情开心网 | 91手机视频| 国产精久久 | 日韩美av在线 | 久久综合免费视频 | 亚洲日本三级 | 国产精品videossex国产高清 | 中文国产在线观看 | 不卡的av在线播放 | 国产一区国产二区在线观看 | 日韩欧美视频 | 五月婷婷综合在线 | 久久久午夜精品理论片中文字幕 | 日韩av一区二区在线播放 | 欧美一二三四在线 | 激情综合网色播五月 | 天天av在线播放 | 精品在线视频播放 | 国产亚洲aⅴaaaaaa毛片 | 91精品国产92久久久久 | 精品国产精品久久一区免费式 | 日韩一区精品 | 激情久久影院 | 天天爽天天做 | 999国产 | 97视频免费观看 | 亚洲a免费 | a√天堂中文在线 | 成年人视频在线免费观看 | 超碰在线公开 | 日韩三级视频 | 日本黄网站 | 日本在线精品视频 | 91亚洲精 | 探花视频免费在线观看 | 黄色日视频| 国产精品白丝jk白祙 | 久久久影视| 亚洲1区 在线 | 91自拍视频在线观看 | 国产精品专区在线 | 精品999在线观看 | 91av在线国产 | 最新中文字幕在线播放 | 色亚洲激情| 区一区二区三在线观看 | 亚洲天堂免费视频 | 精品久久久久久久久久国产 | 日本黄色免费网站 | 成人午夜片av在线看 | 国产老妇av | 一区二区三区污 | 青春草国产视频 | 免费在线观看成人 | 欧美色一色 | 久久www免费视频 | 人人干天天干 | 蜜臀久久99精品久久久久久网站 | 99久久精品国产系列 | 国内三级在线观看 | 日韩激情影院 | www五月天com| 成人久久久久久久久 | 911精品视频 | 国产精久久久久久久 | 99 精品 在线 | 天天操天天干天天爽 | 夜夜高潮夜夜爽国产伦精品 | 国产精品自产拍在线观看网站 | 国产不卡av在线播放 | 国产精品免费视频网站 | 福利一区在线视频 | 国产区精品在线观看 | 日韩在线免费高清视频 | 正在播放 国产精品 | 亚洲专区中文字幕 | 综合色狠狠 | 欧美另类高潮 | 2018好看的中文在线观看 | 久久久久久久久久久免费av | 国产精品18久久久久久久久久久久 | 日日操日日干 | 看全黄大色黄大片 | 国产成人精品亚洲日本在线观看 | 久久黄色片| 午夜精品一区二区三区视频免费看 | 亚洲视频观看 | 日日操日日操 | 国产中文伊人 | 色综合天天综合网国产成人网 | 91亚洲欧美激情 | 国产欧美精品在线观看 | 久久精品美女视频 | 色综合久久综合 | 亚洲国产剧情av | 亚洲欧洲国产精品 | 麻豆传媒一区二区 | 中文字幕日韩伦理 | 久久伊人爱 | 日韩三级.com | 欧美国产一区二区 | 一区二区三区在线看 | 一区二区三区日韩精品 | 99热在线精品观看 | 97在线观看视频国产 | 欧美另类v | 国产a免费 | 欧美a影视 | 国产免费不卡 | 亚洲精品综合在线观看 | 久久99久久99精品免观看粉嫩 | 国产综合婷婷 | 91av网址| 青青河边草免费直播 | 国产精成人品免费观看 | 国产成人精品日本亚洲999 | 日韩电影一区二区三区在线观看 | 久久五月激情 | 99自拍视频在线观看 | 亚洲女欲精品久久久久久久18 | 成人久久久精品国产乱码一区二区 | 美女视频黄频大全免费 | 亚洲a网 | 久久综合影音 | 蜜桃视频日韩 | 免费国产在线视频 | 激情开心网站 | 91精品国产一区二区在线观看 | 国产视频高清 | 亚洲免费av一区二区 | 亚洲一区二区91 | 91亚洲激情| 日本资源中文字幕在线 | 久久精品一二三区白丝高潮 | 91看片成人 | 精品中文字幕在线 | 久久精品99国产 | 天天干天天摸 | 亚洲视频资源在线 | 国产麻豆精品在线观看 | 亚洲在线视频免费观看 | 亚洲欧洲精品视频 | 国产精品第一页在线 | 国产一区在线精品 | 日韩电影在线观看中文字幕 | 免费在线播放视频 | 69精品视频| 亚洲欧洲精品视频 | 国产一级二级三级视频 | 一区二区三区四区精品视频 | 国产精品刺激对白麻豆99 | 国产专区欧美专区 | 99久久99久久 | 狠狠的操你| 亚洲成av人片在线观看无 | 色姑娘综合网 | 992tv在线 | 在线观看国产v片 | 久久久久久久久久久久久国产精品 | 99资源网 | 蜜臀久久99精品久久久酒店新书 | 91香蕉久久 | 欧美激情视频一区二区三区免费 | 黄色成人影院 | 日本视频精品 | av在线不卡观看 | 午夜.dj高清免费观看视频 | 国产二区视频在线观看 | 日本丰满少妇免费一区 | 日韩av伦理片 | 久久午夜影视 | 国产99久久99热这里精品5 | 国产女做a爱免费视频 | 激情久久婷婷 | 亚洲精品久久视频 | 免费黄色a网站 | 福利一区在线视频 | 五月黄色 | 精品1区2区3区 | 国产在线视频资源 | 亚洲最大免费成人网 | 日韩av在线一区二区 | 精品国产一区二区三区四区在线观看 | 国产一卡二卡四卡国 | 国产第一页福利影院 | 国内精品视频一区二区三区八戒 | 99热都是精品 | 一级黄色电影网站 | 久久国产影院 | 亚欧日韩成人h片 | 国产成人三级 | av日韩在线网站 | 五月天高清欧美mv | 精品一区二区三区香蕉蜜桃 | 国产一二区在线观看 | 久久精品毛片基地 | 国产精品一二三 | 欧美精品久 | 国产乱老熟视频网88av | 777久久久| 欧美精品天堂 | 韩日精品视频 | 日韩免费一区二区在线观看 | 国产成人在线免费观看 | 亚洲h在线播放在线观看h | 国产视频一区二区在线观看 | 欧美午夜理伦三级在线观看 | 激情综合婷婷 | 亚洲精品国 | 97理论电影 | 国产精品久久久久久欧美 | 久久精品视频在线看 | 日韩在线观看免费 | 六月丁香伊人 | 麻豆精品传媒视频 | av中文字幕剧情 | 亚洲自拍偷拍色图 | 一区二区三区精品在线视频 | 97超碰人人澡人人爱学生 | 特级黄色片免费看 | 一区精品在线 | 在线国产小视频 | 九色视频网址 | 精品uu | 一区在线电影 | 看av在线| 国产精品不卡在线播放 | 人人人爽| 久久免费观看视频 | 国产视频精品久久 | 欧美一级大片在线观看 | 成人在线视频网 | 又黄又刺激又爽的视频 | 天天弄天天干 | 九九导航 | 在线看国产一区 | 日本久久电影 | 人人澡人人添人人爽一区二区 | 丁香一区二区 | 国产九色在线播放九色 | 91精品国产麻豆国产自产影视 | 国产999精品久久久久久 | 夜添久久精品亚洲国产精品 | 中文字幕一区在线观看视频 | 开心丁香婷婷深爱五月 | 精品国产一区在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩网站一区二区 | 久久久久久久久久久久久久电影 | 久久精品99精品国产香蕉 | 五月开心六月伊人色婷婷 | 久久国产精品影片 | 日本黄色免费播放 | 中文字幕久久网 | 亚洲五月婷婷 | 精品久久网 | 亚洲国产精品久久久 | 99久久精品电影 | 国产精品av在线免费观看 | av在线专区 | 婷婷色狠狠| 精品免费视频123区 午夜久久成人 | 久草久草在线观看 | av在线网站大全 | 亚洲亚洲精品在线观看 | 草久在线观看视频 | 97在线观看免费观看 | 国产免费高清视频 | 国产黑丝一区二区三区 | 日韩视频精品在线 | 欧美日韩免费一区 | 日韩大片在线看 | 国产成人中文字幕 | 久久草草热国产精品直播 | 国产91精品在线观看 | 欧美一二三四在线 | 精品国产伦一区二区三区观看说明 | 日本久久电影 | 天天干天天操天天做 | 色偷偷97 | a午夜在线 | 欧美伦理一区 | 午夜av片 | 九色激情网 | 日韩一级成人av | 欧美日韩亚洲在线观看 | 成年美女黄网站色大片免费看 | av观看免费在线 | 日韩一区二区三区不卡 | 韩国av免费观看 | 91成年人网站 | 美女视频一区 | 另类老妇性bbwbbw高清 | 久久国产剧场电影 | 亚洲欧美日韩精品久久奇米一区 | 色激情在线 | 久草在线视频网 | 日韩在线免费视频 | 国产成人免费精品 | 一级片免费在线 | 久久久久久久久久久久久9999 | 国色综合 | 香蕉久久久久久久 | 日韩av一区在线观看 | 91麻豆操| 国产精品久久中文字幕 | 久久狠狠一本精品综合网 | 在线v | 欧美日本国产在线观看 | av黄色亚洲 | 自拍超碰在线 | 日韩精品一区二区三区电影 | 日韩精品一区二区三区不卡 | 久久这里只精品 | 免费看的av片| 国产免费一区二区三区网站免费 | 在线亚洲播放 | 四虎国产精品永久在线国在线 | 久久不射网站 | 久久午夜精品视频 | 欧美十八| 亚洲婷婷在线 | 中文字幕免费一区 | 亚洲国产免费看 | 国产五码一区 | 色视频一区 | 欧美国产日韩一区二区三区 | 制服丝袜欧美 | 91丨九色丨91啦蝌蚪老版 | 久久综合日 | 中文字幕在线播放日韩 | 五月激情久久 | 四虎国产免费 | 97视频在线观看免费 | 天天躁日日躁狠狠躁 | 国产在线 一区二区三区 | 国产一区二区三区免费在线观看 | 免费网站看v片在线a | 少妇bbbb揉bbbb日本 | 久久好看免费视频 | 玖玖爱在线观看 | 婷婷久久精品 | 免费视频资源 | 日本韩国在线不卡 | 国产黄a三级 | 日韩免费中文字幕 | 美女在线观看av | 欧美a视频| 国产精品一区二区av日韩在线 | 91精品国产91p65 | 婷婷丁香色 | 五月天综合激情网 | 国产精品伦一区二区三区视频 | 国产乱对白刺激视频不卡 | 亚洲激情精品 | 在线有码中文字幕 | 97免费| 97视频一区| 九九热精品视频在线观看 | 久久久综合九色合综国产精品 | 美女免费视频观看网站 | 91人人澡人人爽人人精品 | 狠狠色噜噜狠狠 | 久久国产视频网站 | 这里只有精品视频在线观看 | 人人草在线视频 | 丁香高清视频在线看看 | 成人国产综合 | 色婷婷综合久久久中文字幕 | 特级xxxxx欧美 | 精品自拍av | 色精品视频 | 婷婷免费在线视频 | 亚洲精品麻豆 | 成人在线视频免费观看 | 麻豆精品视频在线观看免费 | 久久毛片网 | 国产一级电影网 | 日本h在线播放 | 超碰97人人干 | 久久精品久久精品久久精品 | 毛片二区 | 69精品 | 久久久久精 | 亚洲三级国产 | 在线观看国产福利片 | 51精品国自产在线 | 欧美日韩中文字幕在线视频 | 国产.精品.日韩.另类.中文.在线.播放 | 88av色| 欧美日韩视频网站 | 国产精品福利一区 | 亚洲婷婷综合色高清在线 | 黄色成人小视频 | 最近中文字幕免费 | 成人h视频在线播放 | 8090yy亚洲精品久久 | 亚洲精品麻豆 | 91最新视频在线观看 | 亚洲国产高清视频 | 精品一区二区在线观看 | 亚洲免费在线播放视频 | 日韩在线免费不卡 | 97在线视频网站 | 国产 日韩 中文字幕 | 亚洲精品午夜久久久久久久久久久 | 玖玖精品视频 | 在线观看蜜桃视频 | 免费观看一级一片 | 日日夜夜天天久久 | 国产午夜一区二区 | 国产精品毛片一区视频 | 国产一区二区三区在线 | 一区二区三区播放 | 93久久精品日日躁夜夜躁欧美 | 亚洲欧洲av在线 | 去看片| 成人少妇影院yyyy | 成人在线观看你懂的 | 麻豆免费在线播放 | 午夜av日韩| 国产高清视频免费最新在线 | 亚洲精欧美一区二区精品 | 开心激情久久 | 亚洲人人爱 | 国产麻豆视频 | 在线免费亚洲 | 亚洲专区中文字幕 | 日韩精品免费在线 | 麻豆精品视频在线观看免费 | 亚洲日日射 | 日韩中出在线 | 久久久久久久国产精品 | 一二三久久久 | 亚洲网站在线 | 欧美精品免费在线 | 91精品国产福利在线观看 | 黄色片网站av | 精品国内自产拍在线观看视频 | 国产黄色视 | 欧美日bb | 人人艹视频| 在线国产精品一区 | 成人观看| 香蕉日日| 国内99视频| 中文字幕在线观看第二页 | 久久精选视频 | 91在线视频观看免费 | 午夜 久久 tv | 国产一级精品绿帽视频 | 国产97碰免费视频 | 日韩va欧美va亚洲va久久 | 国产精品观看在线亚洲人成网 | av在线h| 美国三级黄色大片 | 97超级碰碰碰碰久久久久 | 五月婷婷另类国产 | 日本69hd| 国产精品乱码一区二区视频 | 国产一级视频免费看 | 久久蜜桃av | 91精品国产亚洲 | 久久免费视频在线观看6 | 在线欧美a | 夜夜干天天操 | 黄色资源网站 | 国产精品国产毛片 | 久久8| www.狠狠干|