现在的位置: 首页 > 综合 > 正文

xsd的解释说明

2013年09月13日 ⁄ 综合 ⁄ 共 39700字 ⁄ 字号 评论关闭

schema教程

XML Schema是以XML语言为基础的,它用于可替代DTD。
一份XML schema文件描述了XML文档的结构
XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义).
在本章教程你将学习如何读取和建立XML Schemas,以及为什么XML Schemas比DTDs的功能更为强大,还有如何在你的程序中使用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语言为基础的,它用于可替代DTD。

An XML schema describes the structure of an XML document.
一份XML schema文件描述了XML文档的结构。

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
你应该已经掌握的知识

Before you continue you should have a basic understanding of the following:
在继续之前你应对以下内容有基本了解:

    * HTML / XHTML
    * XML and XML Namespaces
      XML 和 XML 名称空间
    * A basic understanding of DTD
      对DTD有基本的了解

If you want to study these subjects first, find the tutorials on our Home page.
如果你想先学这些内容,请看我们主页上的的学习教程
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
      定义了可以出现在文档里的元素
    * defines attributes that can appear in a document
      定义了可以出现在文档里的属性
    * defines which elements are child elements
      定义了哪些元素是子元素
    * defines the order of child elements
      定义了子元素的顺序
    * defines the number of child elements
      定义了子元素的数量
    * defines whether an element is empty or can include text
      定义了一个元素应是否能包含文本,或应该是空的
    * defines data types for elements and attributes
      定义了元素和属性的数据类型
    * defines default and fixed values for elements and attributes
      定义了元素和属性的默认值和固定值

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:
我们认为XML Schema很快就会替代DTD在大多数的网络应用程序中被广泛使用。

    * XML Schemas are extensible to future additions
      XML Schema针对将来的额外内容是可扩展的
    * XML Schemas are richer and more powerful than DTDs
      XML Schema内容比DTD丰富,作用也更大
    * XML Schemas are written in XML
      XML Schema是以XML语言编写而成的
    * XML Schemas support data types
      XML Schema支持数据类型
    * XML Schemas support namespaces
      XML Schema支持名称空间(namespaces)

XML Schema is a W3C Standard
XML Schema是W3C定义的标准

XML Schema became a W3C Recommendation 02. May 2001.
XML Schema于2001年5月2日成为W3C推荐使用的标准

You can read more about the XML Schema standard in our W3C tutorial.
在W3C 教程中你能阅读到更多关于XML Schema标准。
为何使用 XML Schemas?
w3pop.com / 2006-09-21
Schema 介绍 如何制定 XSD

XML Schemas are much more powerful than DTDs.
XML Schema比DTD作用更加强大。
XML Schemas Support Data Types
XML Schema支持数据类型

One of the greatest strength of XML Schemas is the support for data types.
XML Schema的最好用的地方之一就是它支持数据类型

With support for data types:
支持数据类型所带来的好处:

    * It is easier to describe allowable document content
      更易于描述被允许的文档内容
    * It is easier to validate the correctness of data
      更易于检验数据的正确性
    * It is easier to work with data from a database
      更易于与数据库中的数据一起协同工作
    * It is easier to define data facets (restrictions on data)
      更易于定义数据的使用面(关于数据的限制)
    * It is easier to define data patterns (data formats)
      更易于定义数据样式(数据格式)
    * It is easier to convert data between different data types
      更易于把数据转换成不同的数据类型

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

Another great strength about XML Schemas is that they are written in XML.
XML Schema另一个好处就是他们是用XML编写成的。

Some benefits of that XML Schemas are written in XML:
用XML编写的好处是:

    * You don't have to learn a new language
      可以不需要再学一种新语言
    * 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转换Schema

XML Schemas Secure Data Communication
XML Schema安全数据通讯

When sending data from a sender to a receiver, it is essential that both parts have the same "expectations" about the content.
当数据由发送者被传向接受者时,双方对“数据内容理解的一致性”就显得非常重要了

With XML Schemas, the sender can describe the data in a way that the receiver will understand.
在XML Schema里,发送者可以用接受者能够理解的方式描述数据。

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",一些国家会解释成11月3日,而别的国家会解释成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".
然而,一个有着像这样的数据种类的XML元素:<date type="date">2004-03-11</date>,就确保了双方都能理解其内容,因为XML数据类型的"date"要求规定为"YYYY-MM-DD"的格式。
XML Schemas are Extensible
XML Schema是可扩展的

XML Schemas are extensible, because they are written in XML.
因为XML Schema文件是由XML编写的,所以它们是可扩展的。

With an extensible Schema definition you can:
Schema可扩展意味着你可以:

    * Reuse your Schema in other Schemas
      在别的Schema文件里再次用到你的Schema
    * Create your own data types derived from the standard types
      从标准的数据类型中派生出你自己的数据类型
    * Reference multiple schemas in the same document
      在相同的文档中参考多种Schema。

Well-Formed is not Enough
光有“规范”仍然是不够的

A well-formed XML document is a document that conforms to the XML syntax rules, like:
规范的XML文档是符合XML语法规则的文档,就像这样:

    * it must begin with the XML declaration
      ? 开头必须有XML声明
    * it must have one unique root element
      ? 必须有一个独特的根目录元素
    * start-tags must have matching end-tags
      ? 开始标签(start-tag)必须和结束标签(end-tag)匹配
    * elements are case sensitive
      ? 元素是有大小写区分的
    * all elements must be closed
      ? 元素必须有结束
    * all elements must be properly nested
      ? 所有的元素必须被合理嵌套
    * all attribute values must be quoted
      ? 所有属性值必须写在引号里
    * entities must be used for special characters
      ? 用特殊字符时必须用到实体

Even if documents are well-formed they can still contain errors, and those errors can have serious consequences.
即使文档是规范的,它们也可能包含错误。这些错误可能会引起严重的后果。

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.
试想下面的情况:你预定了 5罗(1罗=12打=144台)激光打印机,而不是5台打印机。在XML Schema文件里,大多数像这样的错误会由检验软件产生。
如何制定 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文件相关联。
A Simple XML Document
一份简单的XML文档

Look at this simple XML document called "note.xml":
请看下面名为"note.xml"的一份简易的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".四个子元素的“note”元素。

Line 2-5 defines the to, from, heading, body elements to be of type "#PCDATA".
第2到5行定义了"#PCDATA". 类型的“to, from, heading, body”四个元素
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"):
下面的例子当中,一个名为"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元素是复合类型(complex type)因为它包含了其他元素,其他元素(to, from, heading, body)属于简单类型(simple type),因为它不包含其他元素。在下面几章里你会学到更多关于简单类型和复合类型的相关知识。
A Reference to a DTD
和DTD相关

This XML document has a reference to a DTD:
XML文档和DTD相关:

<?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相关

This XML document has a reference to an XML Schema:
下面的XML文档和XML Schema相关:

<?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>元素是每个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>元素也可以含有一些属性,一个schema声明经常写成这样:

<?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中使用的元素和数据种类来自http://www.w3.org/2001/XMLSchema名称空间(namespace)。它也指定了来自"http://www.w3.org/2001/XMLSchema"名称空间(namespace)的元素和数据种类必须带前缀“xs:”

This fragment:
这个片段:

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:
这个片段:

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

indicates that the default namespace is http://www.w3schools.com.
指明了默认名称空间(namespace)是http://www.w3schools.com.

This fragment:
这个片段

elementFormDefault="qualified"

indicates that any elements used by the XML instance document which were declared in this schema must be namespace qualified.
指明了由这份schema声明的XML实例文档里用到的任何元素,都必须是有效的名称空间(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.
指定了默认的名称空间(default namespace)声明。这个声明告诉schema-检验器:这份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属性。这个属性有两个值。第一个值是要用到的名称空间(namespace)。第二个值是为名称空间(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.
简单元素是只含有文本的XML元素。它不可以含有其他元素或属性
What is a Simple Element?
什么是简单元素?

A simple element is an XML element that can contain only text. It cannot contain any other elements or attributes.
简单元素是只含有文本的XML元素。它不可以含有其他元件或属性

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.
但是,“只含文本”这个限定条件是非常容易引起误解的,文本可以有很多的不同类型。它可以是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.
你可以通过给数据类型添加限定条件来限制它的内容,或者你可以要求数据与指定的式样相匹配。
Defining a Simple Element
定义一个简明元素

The syntax for defining a simple element is:
定义简明元素的语法为:

<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是元素的数据类型

XML Schema has a lot of built-in data types. The most common types are:
XML Schema本身有很多数据种类。最常见的种类有:

    * xs:string
      xs:字符
    * xs:decimal
      xs: 小数
    * xs:integer
      xs:整数
    * xs:boolean
      xs:逻辑值
    * xs:date
      xs:日期
    * xs:time
      xs:时间

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:
下面是相应的简单元素定义

<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
简单元素的默认值和固定值

Simple elements may have a default value OR a fixed value specified.
简单元素也许会有指定的默认值或固定值

A default value is automatically assigned to the element when no other value is specified.
值没有被指定时,属性自动会设置成默认值

In the following example the default value is "red":
下面例子里默认值是"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.
固定值是也是自动分派给属性的,并且,一旦有了固定值,你就不能指定其他值了。

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.
所有属性都是以简单类型来声明的。
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.
简单的元素没有属性。当元素含有属性时,它会被认为是复合元素。但属性本身总是被声明为简单类型。
How to Define an Attribute?
怎么样定义属性?

The syntax for defining an attribute is:
定义一项属性的语法是:

<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指定了属性的数据类型

XML Schema has a lot of built-in data types. The most common types are:
XML Schema本身有很多数据类型。最常见的数据类型有:

    * xs:string
      xs:字符串
    * xs:decimal
      xs:小数
    * xs:integer
      xs:整数
    * xs:boolean
      xs:逻辑值
    * xs:date
      xs:日期
    * xs:time
      xs:时间

Example
例子

Here is an XML element with an attribute:
这是一个有属性的XML元素:

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

And here is the corresponding attribute definition:
而这个相应的属性定义:

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

 
Default and Fixed Values for Attributes
属性的默认值和固定值

Attributes may have a default value OR a fixed value specified.
属性也许有指定的默认值或固定值

A default value is automatically assigned to the attribute when no other value is specified.
值没有被指定时,属性自动会设成默认值

In the following example the default value is "EN":
下面例子里默认值是"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.
固定值是也是自动分派给属性的,并且,一旦有了固定值,你就不能指定其他值了。

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:
默认时属性是任意的,要指明属性是必需的,须用到"use"属性

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

Restrictions on Content
对内容的约束

When an XML element or attribute has a data type defined, it puts restrictions on the element's or attribute's content.
当XML元素或属性有了已定义的数据类型,元素或属性的内容会有约束

If an XML element is of type "xs:date" and contains a string like "Hello World", the element will not validate.
如果一个XML元素是"xs:date"类型,并包含着象"Hello World"的字符串,元素就不会进行检验

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)”。在下章里你可以读到更多关于“面”的内容
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元素或属性定义可接受的值,关于对XML元素的约束称之为“面(facet)”
Restrictions on Values
对单个值的约束

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"的元件定义了一个“约束(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
对一组值的约束

To limit the content of an XML element to a set of acceptable values, we would use the enumeration constraint.
为了限制XML元素的内容得到一组符合条件的值,我们会用到“列举约束(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"类型可以被其他元件所使用,因为它不是"car"元素的一部分
Restrictions on a Series of Values
对一系列值的约束

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元件的内容以定义一系列可被使用的数字或字母,我们可以用“式样约束(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之间的一个小写字母:

<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"的元素定义了一个约束。唯一符合条件的值是a到z之间的3个大写字母

<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"的元素定义了一个约束。唯一符合条件的值是 a到z之间的三个大写或小写字母

<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"的元素定义了一个约束,唯一符合条件的值是x,y,z三个字母中的任意一个

<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"的元素定义了一个约束,唯一符合条件的值是0到9的5个阿拉伯数字的排列,

<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
对一系列值的其他约束

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"的元素定义了一个约束。唯一符合条件的值是a 到z的小写字母(可以有多个)或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"的元素定义了一个约束。唯一符合条件的值是一对或多对字母,每对都是一个小写字母后跟一个大写字母组成。举个例子,"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"的元素定义了一个约束。唯一符合的值是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"的元素定义了一个约束。一行里必须有8个字符,字符必须是a到z大或小写字母,或者是0到9的数字

<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
对空白符的约束

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"的元素定义了一个约束。空白符设为"preserve"(保留),这意味着XML处理器不会删除任何空白字符:

<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"的元素定义了一个约束。空白符设为" replace "(替代),这意味着XML处理器会用空格替代所有的空白字符(换行符, 制表符, 空格符, 回车符))

<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"的元素定义了一个约束。空白符设为"collapse"(消除),这意味着XML处理器会清除所有的空白字符(换行符, 制表符, 空格符以及回车符都被空格符代替。头尾空格会被清除,多个空格也会减少为一个)

<xs:element name="address">

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

  </xs:restriction>
</xs:simpleType>

</xs:element>

Restrictions on Length
对长度的约束

To limit the length of a value in an element, we would use the length, maxLength, and minLength constraints.
为了限制元素的长度值,我们会用length, maxLength, 和 minLength 约束。

This example defines an element called "password" with a restriction. The value must be exactly eight characters:
下面的例子给叫做"password"的元素定义了一个约束。值必须正好有8个字符:

<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"的元素定义了一个约束。值最少要有5个字符,最多有8个字符。

<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
对数据类型的约束
Constraint
约束     Description
说明
enumeration     Defines a list of acceptable values
定义了一系列的有效值
fractionDigits     Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero
指定了允许的小数位数的最多位数。必须大于等于0
length     Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero
指定了允许的字符或列表项的个数。必须大于等于0
maxExclusive     Specifies the upper bounds for numeric values (the value must be less than this value)
指定了数值的上限(数值要比这个值小)
maxInclusive     Specifies the upper bounds for numeric values (the value must be less than or equal to this value)
指定了数值上限(数值必须小于等于这个值)
maxLength     Specifies the maximum number of characters or list items allowed. Must be equal to or greater than zero
指定了所允许的字符或列表项的最多个数。必须大于等于0
minExclusive     Specifies the lower bounds for numeric values (the value must be greater than this value)
指定了数值的下限 (数值要比这个值小)
minInclusive     Specifies the lower bounds for numeric values (the value must be greater than or equal to this value)
指定了数值的下限(数值必须大于等于这个值)
minLength     Specifies the minimum number of characters or list items allowed. Must be equal to or greater than zero
指定了所允许的字符或列表的最少个数。必须等于大于0个
pattern     Defines the exact sequence of characters that are acceptable
定义了符合要求的字符的确切排列顺序
totalDigits     Specifies the exact number of digits allowed. Must be greater than zero
指定了所允许的字符的确切个数。必须大于0
whiteSpace     Specifies 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.
一个复合元素(Complex Elements)包含其他元素和/或属性
What is a Complex Element?
什么是复合元素(Complex Elements)?

A complex element is an XML element that contains other elements and/or attributes.
复合元素(Complex Elements)是含有其他元素和/或属性的XML元素

There are four kinds of complex elements:
有四种复合元素(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!
注意:这些元素中的每一个也许还含有属性!
Examples of Complex Elements
复合元素(Complex Elements)的例子

A complex XML element, "product", which is empty:
一个空的复合XML元素"product":

<product pid="1345"/>

A complex XML element, "employee", which contains only other elements:
只含有其他元素的复合XML元素, "employee"

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

A complex XML element, "food", which contains only text:
只含有文本的复合XML元素, "food":

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

A complex XML element, "description", which contains both elements and text:
含有元素和文本的复合XML元素, "description":

<description>

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

How to Define a Complex Element
怎样定义一个复合元素(Complex Elements)?

Look at this complex XML element, "employee", which contains only other elements:
看这个只含有其他元素的复合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里定义一个复合元素(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"元素才可以用指定的复合类型。注意子元素 "firstname" 和 "lastname",它们是被包围在<sequence>“指示器”元素里的。这意味着子元素必须以它们被声明的顺序出现。在XSD指示器这章里你可以学到关于指示器更多内容。

2. The "employee" element can have a type attribute that refers to the name of the complex type to use:
2. "employee"元素可以有个类型属性,其所指的是要用的复合类型的名称

<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:
如果你用上述方法,几个元素指的可以是相同的复合类型,就像这样:

<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:
你也可以在现存的复合元素(Complex Elements)上再加上一个复合元素(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 复合类型 - 纯元素

An empty complex element cannot have contents, only attributes.
一个空的复合元素不能含有内容,只能含有属性。
Complex Empty Elements
复合空元素(Complex Empty Elements)

An empty XML element:
一个空的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"元素完全不含内容。为定义不含内容的类型,我们必须定义一个内容中只允许出现元素的类型,但我们不需要声明任何元素,就像这样:

<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.
上述例子中,我们定义了一个有复合内容的复合类型。复合内容的元素表示了我们想要约束或扩充的复合类型的内容模式。对整数的约束声明了一个属性,但并没有介绍任何元素内容。

However, it is possible to declare the "product" element more compactly, like this:
但是,可以更加简洁地声明"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元素起个名称,并让"product"元素有个类型属性,而且类型属性引用的是complexType的名称(如果你用这个方法,几个元素可以引用相同的复合类型):

<xs:element name="product" type="prodtype"/>

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

XSD 复合类型 - 纯元素
w3pop.com / 2006-09-21
XSD Complex 空元素 XSD 复合文字 - 纯元素

An "elements-only" complex type contains an element that contains only other elements.
“只有元素(Elements-only)”复合类型含有一个只包含其他元素的元素
Complex Types Containing Elements Only
复合类型只含有元素

An XML element, "person", that contains only other elements:
一个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>标签。这表示所定义的元素("firstname" 和 "lastname")必须在"person"元素里以那样的次序出现。

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元素取个名字,让"person"元素有个类型属性,这个类型属性的名字可以参考使用complexType元素的名字(如果你用这个方法,几个元素可以同时参考使用相同的复合类型)。

<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 复合文字 - 纯元素
w3pop.com / 2006-09-21
XSD 复合类型 - 纯元素 XSD 混合内容的复合类型

A complex text-only element can contain text and attributes.
一个复合只含文本元素(Complex Text-Only Elements)可以含有文本和属性。
Complex Text-Only Elements
复合只含文本元素(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:
这种类型只含有简单内容(文本和属性),因此我们在内容周围添加一个simpleContent元素,当用到简单内容时,你必须在simpleContent元素里定义一个扩展或约束,就像这样:

<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元素扩展或限制元素的基本简单类型(base simple type)。

Here is an example of an XML element, "shoesize", that contains text-only:
这儿是只含有文本的一个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":
下面的例子声明了一个复合类型,"shoesize"元素。内容定义为整数值,"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元件起个名字,让"shoesize"元件有种类属性,种类属性的名字就是complexType元件的名字。(如果你用这种方法,几个元素指的可以是相同的复合类型)

<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 混合内容的复合类型
w3pop.com / 2006-09-21
XSD 复合文字 - 纯元素 XSD 指示器复合类型

A mixed complex type element can contain attributes, elements, and text.
混合内容的复合类型元素(XSD Complex Types Element With Mixed Content )可以含有属性,元素,和文本。
Complex Types with Mixed Content
混合内容的复合类型

An XML element, "letter", that contains both text and other elements:
一个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.
注意:为了使字符数据能出现在"letter"子元件之间,mixed属性必须设置为"true"。<xs:sequence>标签指出了已定义的元素(name, orderid 和shipdate)在"letter"元素里必须以指定的顺序出现

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):
我们可以给这个complexType元素一个名称,并且让"letter"元素有一个引用了complexType的名称的种类属性(如果你用了这个方法,几个元素可以同时使用相同的复合类型):

<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 指示器复合类型
w3pop.com / 2006-09-21
XSD 混合内容的复合类型 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:
出现次数指示器(Indicators):

    * maxOccurs
      最多出现次数
    * minOccurs
      最少出现次数

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)指明了子元件可以以任何次序出现,并且每个子元件只能出现一次:

<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)时你可以把<minOccurs>指示器(Indicators)设为0或1,< maxOccurs>指示器(Indicators)只能设为1(<minOccurs> 和 <maxOccurs> 我们后头再说)

Choice Indicator
选择指示器(Indicators)

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

<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)指定了子元素必须以一个指明的顺序出现:

<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
出现次数指示器(Indicators)

Occurrence indicators are used to define how often an element can occur.
出现次数指示器(Indicators)用于定义一个元素可以出现的次数

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.
注意:对所有的"Order"和"Group"指示器(Indicators)(any, all, choice, sequence,group name, 和 group reference)来说,maxOccurs 和 minOccurs的默认值都是1

maxOccurs Indicator
最多出现次数指示器(Indicators)

The <maxOccurs> indicator specifies the maximum number of times an element can occur:
最多出现次数指示器(Indicators)指明了一个元素可以出现的最多次数:

<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"元素里最少出现1次(minOccurs的默认值为1),最多出现10次

minOccurs Indicator
最少出现次数指示器(Indicators)

The <minOccurs> indicator specifies the minimum number of times an element can occur:
最少出现次数指示器(Indicators)指明了一个元素要出现的最小次数:

<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"元素里最少出现0次(minOccurs的默认值为1),最多出现10次

Tip: To allow an element to appear an unlimited number of times, use the maxOccurs="unbounded" statement:
提示:为使元件可以重复出现无数次,可以设置maxOccurs="unbounded"的状态

A working example:
实际作用例子:

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文件含有一个名为"persons"的根元素,这个根元素里面里我们已经定义了3个"person"元素。每个"person"元素必须含有一个"full_name"元素,而且最多可有5个"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.
组指示器(

抱歉!评论已关闭.