我们学习使用schema文档来取代DTD文档配合XML文档,就是要因为schema文档功能强大,而且与XML文档定义方法类似。一个schema文档,就是开头声明时略加麻烦一点,但是这是必不可少的声明。
Schema文档声明主要有四个目的。都是为了名字空间而设。用属性的方法,给名字空间预留内存空间。
第一个属性,为schema留一个空间,这个名字空间是所有以schema为根的名字空间。我们定义的是xs为名字空间。以schema为根。
如:<xs:schema xmlns:xs=“http://www.w3.org/2001/xmlschema”>
第二个属性是为运行XML文档的目标环境,开辟一个名字空间,用于装载schema文档。这个区域空间也用属性的办法在schema为根内开辟。
如:<xs:schema targetNamespace=“http://www.w3.cschools.com”>
第三个属性是定义一个没有取名字的名字空间,与目标名字空间在一个区域。
如:<xs:schema xmlns=“http://www.w3.cschools.com”>
第四个属性是生命XML文档必须使用名字空间
如:<xs:schema elementFormDefault=“qualified”>
把以上四个属性写在一个标记内即可。
完成了上面的schema文档声明后,就可以定义元素标记了。见下面例子如下:
Schema文档的文件名为:note.xsd
<?XML version=“1.0”encoding=“UTF-8”?>
<xs:schema xmlns:xs=“http://www.w3.org/2001/xmlschema”
targetNamespace=“http://www.w3.cschools.com”
xmls=“http://www.w3cschools.com”
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>
定义元素(element)标记的方法,比DTD简单,与写XML文档格式一样。我们看看上变官网note标记的定义方法。
第一步:定义note元素。例如:
开始标记:<xs:element name = "note">
结束标记:</xs:element>
第二步,因为note标记是根标记,还有子标记,所以这个note标记是一个复杂标记,需要在note标记定义之中加一个表示复杂标记的嵌套。例如:
开始标记: <xs:complexType>结束标记:</xs:complexType>
第三步,要求子标记按顺序出现。也象写复杂标记的方法,在嵌套一层,用于声明。例如:
开始标记: <xs:sequence>
结束标记: </xs:sequence>
完成了note复杂标记的要求之后,就可以直接定义元素了,例如:
<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"/>
格式非常简单:用属性的方法定义。type 和string是内部命令。type为类型的意思。sting为数据类型。schema强大地方就是可以定义内部数据类型,例如:string为字符串类象。与编程一样的数理类象。这个DTD是没有的。
定义元素(element)的格式归结为:
<xs:element name="子元素名" type="xs:数据类型名"/>
Schema文档的数据类型内部定义的有:字符串(string),日期(date),数值(numberic)以及布尔、二进制,浮点数,网址数据等。而且还允许自己定义数据类型。Schema文档继承了XML文档的所有优点,允许使用者根据XML规则自己扩展功能。
北荒客
2020.3.1