XML 知识量:7 - 28 - 99
DTD存在的问题主要有以下几个方面:
DTD有独立的语法,且语法规则较为复杂。
DTD本身不是标记语言,不符合XML标准。
DTD中数据类型过于简单,已经不能满足实际需要。
DTD不支持命名空间。
DTD对元素出现的次数控制不够精确。
XML Schema语言也称为XML Schema Definition(XSD),其作用与DTD一样,用于对XML文档进行约束。XML Schema本身是一个XML文档,符合XML语法规范,可以被XML处理器直接解析,也支持命名空间,是DTD更好的替代者。
XML Schema主要有以下特点:
使用XML语法,可以被XML处理器解析,便于学习和使用。
支持丰富的数据类型,例如整型、布尔型、日期型等,也可以方便的创建其他复杂数据类型。
支持命名空间,使XML文档具有更强的可扩展性。
初步了解一下XML Schema的结构,以下是一个简单的示例:
<?xml version="1.0" encoding="UTF-8"?> <a:schema xmlns:a="http://www.w3.org/2001/XMLSchema"> <a:element name="student_list"> <a:complexType> <a:sequence maxOccurs="unbounded"> <a:element name="student" type="student_info"/> </a:sequence> </a:complexType> </a:element> <a:complexType name="student_info"> <a:sequence> <a:element name="number" type="a:string"/> <a:element name="name" type="a:string"/> <a:element name="class" type="a:string"/> <a:element name="sex"> <a:simpleType> <a:restriction base="a:string"> <a:enumeration value="male"/> <a:enumeration value="female"/> </a:restriction> </a:simpleType> </a:element> </a:sequence> </a:complexType> </a:schema>
以上代码简单说明如下:
因为XML Schema文档本身是XML文档,因此第1行就是XML的声明语句。
第2行创建了根元素即声明命名空间,这里的根元素是schema,前缀a代表命名空间http://www.pnotes.cn。
Schema文档剩余部分就是元素的声明,定义了元素的名称name和数据类型type。
引用XML Schema文件的语法为:
<根元素 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="待引用的Schema文件路径">
其中,http://www.w3.org/2001/XMLSchema-instance是W3C规定的用于引用Schema文件的命名空间,前缀一般为xsi。noNamespaceSchemaLocation属性用于指明要引用的Schema文件的路径,绝对路径或相对路径都可以。下面的示例引用了上节的Schema文件:
<?xml version="1.0" encoding="UTF-8"?> <student_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student_list.xsd"> <student> <number>1</number> <name>Bob</name> <class>1-1</class> <sex>male</sex> </student> <student> <number>2</number> <name>Lily</name> <class>1-2</class> <sex>female</sex> </student> </student_list>
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6