`
applepieone
  • 浏览: 11579 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

XML Schema Definition,XSD

 
阅读更多

XML Schema是基于XML的DTD替代者

XML Schema 可描述XML文档的结构

 

XML Schema使用XML语法,好处:

  • 可使用 XML 编辑器来编辑 Schema 文件
  • 可使用 XML 解析器来解析 Schema 文件
  • 可通过 XML DOM 来处理 Schema
  • 可通过 XSLT 来转换 Schema(把数据转换成另外一种格式来表达)

XML Schema

 

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace ="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
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>

代码解释:

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

 显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema" 。同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs

targetNamespace="http://www.w3school.com.cn"

 显示被此 schema 定义的元素 (note, to, from, heading, body) 来自命名空间: "http://www.w3school.com.cn"。

 

xmlns="http://www.w3school.com.cn"

 指出默认的命名空间是 "http://www.w3school.com.cn"。

elementFormDefault="qualified"

 指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。

 

一个XML文件对 XML Schema 的引用

<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation=" http://www.w3school.com.cn note.xsd ">

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
 

代码解释:

xmlns="http://www.w3school.com.cn"

 规定了默认命名空间的声明。此声明会告知 schema 验证器 ,在此 XML 文档中使用的所有元素都被声明于 "http://www.w3school.com.cn" 这个命名空间。

一旦您拥有了可用的 XML Schema 实例命名空间:

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

 您就可以使用 schemaLocation 属性了 。此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置:

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

XSD 简易元素

    这是一些XML元素:

<lastname>Smith</lastname>
<age>28</age>
<dateborn>1980-03-27</dateborn>

   这是相应的建议元素定义:

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

 

  XSD 属性

     这是带有属性的 XML 元素:

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

     这是对应的属性定义:

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

属性的默认值和固定值和属性必选

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

对一组值的限定

如需把 XML 元素的内容限制为一组可接受的值,我们要使用枚举约束(enumeration constraint)

下面的例子定义 了带有一个限定的名为 "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>

 上面的例子也可以被写为:

<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>

注释 在这种情况下,类型 "carType" 可被其他元素使用,因为它不是 "car" 元素的组成部分。

 

一个 XSD 实例

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 >George Bush</orderperson>
<shipto >
<name>John Adams</name>
<address>Oxford Street</address>
<city>London</city>
<country>UK</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>

创建一个 XML Schema

这是这个名为 "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>
  

分割 Schema

接下来介绍的设计方法基于首先对所有元素和属性的定义,然后再使用 ref 属性来引用它们。

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

<!-- 简易元素的定义 -->
<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"/>

<!-- 属性的定义 -->
<xs:attribute name="orderid" type="xs:string"/>

<!-- 复合元素的定义 -->
<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>
 

使用指定的类型(Named Types)

 第三种设计方法定义了类或者类型,这样使我们有能力重复使用元素的定义。具体的方式是:首先对简易元素和复合元素进行命名,然后通过元素的 type 属性来指向它们。

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

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    XML Schema xsd XML Schema xsd

    &lt;note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://example.com/note.xsd"&gt; &lt;to&gt;George &lt;from&gt;John &lt;heading&gt;Reminder &lt;body&gt;Don't forget the meeting! ``` 对应的 ...

    XML Schema简明教程-W3C.rar

    XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强大,以及如何在您的应用程序中使用 XML ...

    XML Schema(XSD)简明教程高清pdf

    - **XML Schema 定义**:即XML Schema Definition (XSD),是一组规则,用于定义XML文档的合法结构。这些规则包括定义哪些元素可以出现、它们的位置关系以及数据类型等。 #### 第2讲:如何使用 - **XML文档与Schema...

    XSD(XML Schemas Definition)

    XML Schema语言也就是XML Schema Definition (XSD)。 XML Schema描述了XML文档的结构。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档...

    XML文件XML Schema.docXML Schema.doc

    XML Schema语言也被称为XML Schema Definition(XSD)。XML Schema的作用是定义一份XML文档的合法组件群,就像DTD的作用一样。 XML Schema的主要功能包括: 1. 定义可以出现在文档里的元素 2. 定义可以出现在文档...

    java根据xml生成schema_xsd_生成javabean2

    在Java开发中,XML(可扩展标记语言)常用于数据交换和配置文件,而XSD(XML Schema Definition)则是用于定义XML文档结构的规范。JavaBean是Java编程中的一种面向对象的设计模式,常用于封装数据并提供易于使用的...

    XmlSchema-1.4.7.jar

    XML Schema(XSD)标准是用来定义XML文档的结构和数据类型的,它比早期的DTD(Document Type Definition)提供了更强大的功能,例如支持复杂数据类型、命名空间和更复杂的约束。XmlSchema库则为Java开发者提供了处理...

    java根据xml生成schema_xsd_生成javabean

    XSD(XML Schema Definition)是XML的一个规范,用于定义XML文档的结构和数据类型,为XML提供了一种形式化的约束。JavaBean是一种特殊的Java类,遵循特定的命名规则和设计模式,用于封装数据和业务逻辑,常在Java...

    xml文件转xsd文件

    XSD(XML Schema Definition)文件则是一种规范,用于定义XML文档的结构和数据类型,为XML提供了形式化的语法规则。将XML文件转换为XSD文件,主要是为了更好地管理和验证XML文档的结构,确保数据的一致性和准确性,...

    XmlSchema标准参考手册.chm

    XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义). -------------------------------------------------------------------------------- What You Should Already Know 你应该已经掌握的...

    XMLSchema经典例题

    XML Schema,全称为XML Schema Definition (XSD),是一种用于描述XML文档结构和数据类型的规范,它是W3C(World Wide Web Consortium)所制定的标准。XML Schema的出现是为了替代早期的DTD(Document Type ...

    XML Schema 教程(word版本)

    XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强大,以及如何在您的应用程序中使用 XML ...

    xmlschema-1.4.5.jar.zip

    "xmlschema-1.4.5.jar.zip"是一个包含XML Schema相关实现的Java类库,主要用于处理和验证XML文档是否符合特定的XSD规范。 在Java环境中,`xmlschema-1.4.5.jar`是一个关键组件,它提供了一系列API供开发者使用,...

    XML Schema

    XML Schema是以XML语言为基础的,它用于可替代DTD。 一份XML schema文件描述了XML文档的结构。 XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义).

    xml Schema 例子(C#写的验证程序)

    1. **XmlSchema**: 这是XML Schema的根对象,用于表示整个XML Schema文档。 2. **XmlSchemaSet**: 用于存储和加载多个XML Schema,并进行验证。可以使用Add方法添加新的XML Schema。 3. **XmlSchemaValidator**: ...

    XSD根据xml生成schema文件

    XSD(XML Schema Definition)则是用来定义XML文档结构和数据类型的规范,它为XML提供了严格的语法规则,确保了数据的一致性和有效性。本篇文章将深入探讨如何根据XML文件生成对应的XSD schema文件,以便更好地管理...

    xml schema complete reference

    XML Schema,全称为XML Schema Definition (XSD),是XML(可扩展标记语言)的一个关键组成部分,用于定义XML文档的结构和数据类型。2002年出版的《Addison Wesley - The XML Schema Complete Reference》是对XML ...

Global site tag (gtag.js) - Google Analytics