Schema的事例文档:
1 | <? xml version = "1.0" encoding = "utf-8" ?> |
2 | < xs:schema id = "unionDemo" |
3 | elementFormDefault = "qualified" |
4 | xmlns = "http://tempuri.org/ test.xsd" |
5 | xmlns:mstns = "http://tempuri.org/test.xsd" |
6 | xmlns:xs = "http://www.w3.org/2001/XMLSchema" |
7 | > |
8 | |
9 | </ xs:schema > |
一步步分析:
1 | xmlns:xs="http://www.w3.org/2001/XMLSchema" |
指明了在schema中使用的元素和数据种类来自http://www.w3.org/2001/XMLSchema名称空间(namespace)。它也指定了来自"http://www.w3.org/2001/XMLSchema"名称空间(namespace)的元素和数据种类必须带前缀“xs:”
1 | targetNamespace="http://tempuri.org/test.xsd" |
暗示了由这份schema定义的元素来自"http://tempuri.org/unionDemo.xsd"名称空间,
1 | xmlns="http://tempuri.org/test.xsd" |
指明了默认名称空间
1 | elementFormDefault="qualified" |
指明了由这份schema声明的XML实例文档里用到的任何元素,都必须是有效的名称空间;
XML的事例文档:
1 | <? xml version = "1.0" encoding = "utf-8" ?> |
的确是这样,新建的XML文件就是这么简单朴素,让我们来一步步健全她吧!!
首先根据相应的Schema文档写根元素,然后指定XML Schema Instance的名称空间;
1 | xmlns:ns="http://www.w3.org/2001/XMLSchema-instance" |
一旦你有了可以利用的XML Schema Instance的名称空间,你就可以使用schemaLcation属性了,
1 | ns:schemaLocation ="http://tempuri.org/test.xsd test.xsd" |
这个属性有两个值。第一个值是要用到的名称空间(一般认为是Schema文件里的targetNamespace的值)。第二个值是为名称空间(前一个参数)指定了需要使用的XML schema的位置。
1 | xmlns="http://tempuri.org/test.xsd" |
指定了默认的名称空间(default namespace)声明。这个声明告诉schema-检验器:这份XML文档里用到的所有元素都在http://tempuri.org/test.xsd的名称空间(namespace)中声明过(也就是Schema文件的targetNamespace的值);
经过以上几步,这份XML就算是与Schema关联上了,得到的结果:
1 | <? xml version = "1.0" encoding = "utf-8" ?> |
2 | <Person xmlns:ns="http://www.w3.org/2001/XMLSchema-instance" |
1 | ns:schemaLocation ="http://tempuri.org/test.xsd test.xsd" |
接下来的输入你必须按照schema的描述来完成XML,否则就会报错,