学习了schema,记录下来,供日后翻看和大家学习交流。
schema文件是约束xml文件格式的约束文档,后缀为.xsd;以schema文件约束的.xml文件为实例文档。
这里先贴上一个例子:
book.xsd:一个schame约束文档
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn"
elementFormDefault="qualified">
<xs:element name='书架' ><!--定义一个标签:书架-->
<xs:complexType><!--复合类型-->
<xs:sequence maxOccurs='unbounded'><!--序列,数量没有上限,表示标签书的数量没有上限-->
<xs:element name='书' > <!--定义一个标签:书-->
<xs:complexType><!--复合类型-->
<xs:sequence><!--序列-->
<!--类型定义为String,有很多类型int,date...-->
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
book.xml实例文档:以book.xsd为约束的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns="http://www.itcast.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://www.itcast.cn book.xsd">
<书>
<书名>JavaScript网页开发</书名>
<作者>redarmy</作者>
<售价>28.00元</售价>
</书>
</书架>
标签我就不详细说明了,网上太多;主要记录几个重要的属性,这里主要说的是schema规范。
1.对于任何xml文件,都应该有schema文件对其定义;
2.在schame文件中,所有的标签都是w3c定义的;
1.属性targetNamespace:
所有的schema文件都应该有一个id,也就是namespace,用属性targetNamespace来定义,是个url,一般不存在这个url。
2.属性elementFormDefault:
是一个枚举值,qualified所有标签有约束;unqualified只有根标签有约束。
3.属性xmlns:
3.1.用来引入一个schema约束文档;
如果sachema是w3c定义的,属性值固定:http://www.w3.org/2001/XMLSchema;
如果不是w3c定义的,必须指定schema文件的位置,对应的schema文件的namespace值;
3.2.所以,对于book.xsd来说,其schema约束文档时w3c定义的,所以属性值为http://www.w3.org/2001/XMLSchema;
而对于book.xml来说,其schema约束文档是book.xsd文档,所以属性值为book.xsd文档的namespace:http://www.itcast.cn;
3.3.如果xmlns后面跟了别名,比如book.xsd文档的xmlns:xs,则这个xmlns引入的schema文档约束的所有标签都要加这个别名
4.属性schemaLocation:
用来指定schema文件的位置,一般是schema文件的namespace schema约束文件名(注意有个空格)。
5.还需要xmlns引入一个约束属性schemaLocation的文件,地址固定:
http://www.w3.org/2001/XMLSchema-instance
如果这里把xmlns加一个别名,那么book.xml的写法为:
<?xml version="1.0" encoding="UTF-8"?>
<itcast:书架 xmlns:itcast="http://www.itcast.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://www.itcast.cn book.xsd">
<itcast:书>
<itcast:书名>JavaScript网页开发</itcast:书名>
<itcast:作者>redarmy</itcast:作者>
<itcast:售价>28.00元</itcast:售价>
</itcast:书>
</itcast:书架>