一、什么是schema?
描述XML 文档结构,同DTD的功能是一样的。
基于XML的DTD替代者。
简称XSD(XML SchemaData)。
二、与DTD 异同
Schema :自身是一种xml 文件。处理统一,替代 了DTD。
DTD :自身不是XML文件,无法通过统一方式进行处理。
Schema 优势:
针对未来需求进行扩展。
功能更完善,强大。
基于XML 编写。
三、构成
Schema 使用XML 语法,构成和DTD一样,同样有元素和属性。
元素
<xs:element name="note" type="xs:string"/>
在此处,note指属性名称,xs:string 则规定属性的数据类型。XML Schema 拥有很多内建的数据类型。
<xs:attributename="xxx" type="yyy"/>
在此处,xxx指属性名称,yyy 则规定属性的数据类型。XML Schema 拥有很多内建的数据类型。
四、使用——对比DTD
一个简单的 XML 文档:
请看这个名为"note.xml" 的 XML 文档:
<?xmlversion="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don'tforget the meeting!</body>
</note>
DTD 和Schema 分别对上面那个 XML 文档的元素进行了定义:
DTD 文件
<!ELEMENTnote (to,from,heading,body)>
<!ELEMENTto (#PCDATA)>
<!ELEMENTfrom (#PCDATA)>
<!ELEMENTheading (#PCDATA)>
<!ELEMENTbody (#PCDATA)>
第1 行定义 note 元素有四个子元素:"to,body"。
第2-5 行定义了 to,body 元素的类型是 "#PCDATA"。
XML Schema
<?xmlversion="1.0"?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:elementname="note">
<xs:complexType>
<xs:sequence>
<xs:elementname="to" type="xs:string"/>
<xs:elementname="from" type="xs:string"/>
<xs:elementname="heading" type="xs:string"/>
<xs:elementname="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
note元素是一个复合类型,因为它包含其他的子元素。其他元素 (to,body) 是简易类型,因为它们没有包含其他元素。
对 DTD 的引用
<?xmlversion="1.0"?>
<!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don'tforget the meeting!</body>
</note>
对 XML Schema 的引用
<?xmlversion="1.0"?>
<note
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cnnote.xsd">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don'tforget the meeting!</body>
</note>
五、验证
通过专用工具,一般检查不出来,只是检查XML 是不是合理的。