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的优势
(1)XSD支持数据类型;
易于描述许可的文档组成;
易于校验数据的合法性;
易于使用数据库中的数据;
易于定义数据的约束;
易于定义数据的模式;
易于在不同数据类型间进行格式转换
(2)XSD使用XML语法;
(3)XSD使数据交换更安全,因为它描述了数据的格式,避免了歧义;
(4)XSD可以扩展,支持类型的扩展和结构的扩展。
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 简单元素描述
简单元素指只包含text的XML元素,它没有任何子元素或属性,如:<sex>男</sex>。简单元素可以附加地定义其缺省值或固定值。XSD定义简单元素的格式是:<xs:element name="xxx" type="ttt" [default="defval"] [fixed="fixedval"]>。其中ttt使用XSD标准定义的基本类型,即:xs:string、xs:decimal、xs:integer、xs:boolean、xs: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>