W3C XML Schema 教程 (二)

来源:互联网 发布:网页音频下载软件 编辑:程序博客网 时间:2024/05/17 22:11

1          格式良好文档

满足下列要求的XML文档,称为格式良好的文档(Well-Formed Document

1       使用XML定义打头,如:<?xml version="1.0" encoding="UTF-8"?>

2       文档仅包含一个唯一的根元素

3       起始标记(<xxx>)必须与结束标记(</xxx>)匹配

4       大小写敏感

5       所有元素是闭合的(<必须与>配套)

6       所有元素嵌套是正确的

7       所有属性使用""’’

8       entities must be used for special characters

应注意到,满足上述要求的文档只能算是有效的文档,但不能算是合法的文档。例如,业务标准要求文档中必须包含5<SEG>元素,如果文档中仅包含了4个,它仍是格式良好的文档,但不满足业务标准要求,是一个非法的文档

2          XSD应用的场合

1       定义文档中可以出现的元素

2       定义文档中可以出现的属性

3       定义元素包含哪些子元素

4       定义元素出现的顺序

5       定义元素出现的次数

6       定义哪些元素是空或可以包含text

7       定义元素与属性的数据类型

8       定义元素与属性的缺省值或固定值或值范围、值列表

3          XSD相对于 DTD的优势

1XSD支持数据类型

         易于描述许可的文档组成

         易于校验数据的合法性;

         易于使用数据库中的数据

         易于定义数据的约束

         易于定义数据的模式

         易于在不同数据类型间进行格式转

2XSD使用XML语法

3XSD使数据交换更安全,因为它描述了数据的格式,避免了歧义

4XSD可以扩展,支持类型的扩展和结构的扩展

4          文档引用

XSD支持名空间(NameSpace)和文档引用。通过名空间,可以避免文档引用中可能导致的名称重复问题。W3C规定XSD的名空间使用URI作为名称。以前面的XML为例

<note xmlns="http://www.w3schools.com"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.w3schools.com note.xsd">

         xmlns="http://www.w3schools.com" 指示本文档缺省的名空间,即没有前缀的所有的元素应在该空间中定义

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 指示本文档要引用http://www.w3.org/2001/XMLSchema-instance名空间定义的名称,其前缀是xsi

         xsi:schemaLocation="http://www.w3schools.com note.xsd" 指示本文档要引用的http://www.w3schools.com 名空间的XSD文档是note.xsd。如果要引用多个名空间的XSD文档,则使用空格分隔多个‘Namespace xsd’对。例如:http://www.acom.com a.xsd http://www.bcom.com b.xsd...。如果XSD文档没有使用名空间,则使用xsi:noNamespaceSchemaLocation="note.xsd"代替xsi:schemaLocation

5   简单元素描述
简单元素指只包含textXML元素,它没有任何子元素或属性,如:<sex></sex>。简单元素可以附加地定义其缺省值或固定值。XSD定义简单元素的格式是:<xs:element name="xxx" type="ttt" [default="defval"] [fixed="fixedval"]>。其中ttt使用XSD标准定义的基本类型,即:xs:stringxs:decimalxs:integerxs:booleanxs:date xs:time等。例如:<xs:element name=sex type=xs:string default=>

使用上述方式定义的简单元素只能限定元素的数据类型、缺省值、固定值。如果希望限定该简单元素的取值范围等约束,则应使用简单类型定义,并在简单类型中嵌套值约束子元素。如

  <xs:element name="sex">  <xs:simpleType>          <xs:restriction base="xs:string">  <xs:enumeration value="男"/>  <xs:enumeration value="女"/>  </xs:restriction>  </xs:simpleType>  </xs:element>



原创粉丝点击