XML Schema与XML DTD相比的一个最显著的特征,就是其对数据类型的支持了。这完全是因为XML DTD提供的数据类型只有CDATA 、Enumerated、NMTOKEN 、NMTOKENS等十种内置(built-in)数据类型。这样少的数据类型通常无法满足文档的可理解性和数据交换的需要。XML Schema则不同,它内置了三十七种数据类型,如long,int,short,double等常用的数据类型,并通过将数据类型表示为由value space、lexical space和facet三部分组成的三元组而获得更大的灵活性。但是, XML Schema数据类型的真正灵活性来自于其对用户自定义类型的支持。XML Schema提供两种方式来实现数据类型的定义。
本人用的myeclipse,xml使用schema约束的xsd文件生成的,具体如新建一个XML(Basic Tepplates),然后下一步,在下一步,create XML from
an XML schema file,下面的点击选择哪个xsd文件就是对应生成的xml文件,这样子可以省很多事,附带了一个schema的例子。
demo.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.xww.org/demo"
xmlns:tns="http://www.xww.org/demo"
elementFormDefault="qualified">
<element name="书架">
<complexType>
<sequence maxOccurs="unbounded">
<element name="书">
<complexType>
<sequence>
<element name="书名" type="string"></element>
<element name="作者" type="string"></element>
<element name="售价" type="string"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
Newfile.xml
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns="http://www.xww.org/demo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xww.org/demo demo.xsd ">
<书>
<书名>书名</书名>
<作者>作者</作者>
<售价>售价</售价>
</书>
</书架>