schema.xsd
<?xml version="1.0" encoding="UTF-8"?>
<!-- xmlns:默认命名空间 xmlns:xs:当前的文档的标记来自命名空间 前缀:xs elementFormDefault:当前文档使用的标记必须是使用命名空间的 targetNamespace:目标文档使用的命名空间 根节点: xs:schema --> <xs:schema targetNamespace="" xmlns:xs="" xmlns="" elementFormDefault="qualified"> <!--建立根元素--> <xs:element name="company"> <xs:complexType> <xs:sequence> <xs:element ref="employee" maxOccurs="unbounded"/> </xs:sequence> <!--复合类型 minOccurs:最小出现次数 maxOccurs:最大出现次数 unbounded :无穷大 --> </xs:complexType> </xs:element> <xs:element name="employee"> <xs:complexType> <xs:all> <xs:element ref="id"/> <xs:element ref="workerName"/> <xs:element ref="job"/> <xs:element ref="sal"/> <xs:element ref="age"/> <xs:element ref="telephone"/> <xs:element ref="hiredate"/> </xs:all> <xs:attribute name="id" type="xs:string"/> <xs:attribute name="tilte" type="xs:string"/> <xs:attribute name="description" type="xs:string"/> </xs:complexType> </xs:element> <!-- 简单元素定义 --> <!-- 工号 --> <xs:element name="id"> <xs:simpleType> <xs:restriction base="xs:int"> <xs:minInclusive value="1"/> </xs:restriction> </xs:simpleType> </xs:element> <!-- 名字 --> <xs:element name="workerName" type="xs:string"/> <xs:element name="job"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="锅炉工"/> <xs:enumeration value="文职人员"/> <xs:enumeration value="修理工"/> <xs:enumeration value="大堂经理"/> <xs:enumeration value="后勤人员"/> </xs:restriction> </xs:simpleType> </xs:element> <!-- 年 龄 --> <xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:positiveInteger"> <xs:maxInclusive value="150"/> </xs:restriction> <!-- 简单元素--> </xs:simpleType> </xs:element> <!-- 年薪 --> <xs:element name="sal"> <xs:simpleType> <xs:restriction base="xs:decimal"> <xs:fractionDigits value="2"/> </xs:restriction> </xs:simpleType> </xs:element> <!-- 电话 --> <xs:element name="telephone" > <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="7"/> <xs:maxLength value="11"/> </xs:restriction> </xs:simpleType> </xs:element> <!-- 雇佣日期 --> <xs:element name="hiredate"> <xs:simpleType> <xs:restriction base="xs:dateTime"> <xs:pattern value="((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))T(([01][0-9])| (2[0-3]))(:[0-5][0-9]){2}(\.[0-9]{2}[037])?" /> <xs:maxInclusive value="9999-12-31T23:59:59.997" /> <xs:minInclusive value="1753-01-01T00:00:00.000" /> </xs:restriction> </xs:simpleType> </xs:element> </xs:schema>
schematest.xml
<?xml version="1.0" encoding="gb2312"?>
<!-- xmlns:默认命名空间 xmlns:xsi: xsi:schemaLocation:导入xsd文档 --> <company xmlns="" xmlns:xsi="" xsi:schemaLocation=" shemaText.xsd"> <employee> <id>001</id> <workerName>张三</workerName> <job>修理工</job> <sal>569.21</sal> <telephone>13687307305</telephone> <age>25</age> <hiredate>2007-11-27T10:19:28</hiredate> </employee> </company>DTDTest.xml(内嵌)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE company[ <!ELEMENT company (employee)+ > <!ELEMENT employee (Id,name,job,age,sal,telephone+,hiredate)> <!ELEMENT Id (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT job (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sal (#PCDATA)> <!ELEMENT telephone (#PCDATA)> <!ELEMENT hiredate (#PCDATA)> <!--属性约束 <!ATTLIST > 标记名 属性名 类型 #约束值 --> ]><company>
<employee> <Id>0002</Id> <name>李四</name> <job>锅炉工</job> <age>23</age> <sal>4586.6</sal> <telephone>1234567</telephone> <telephone>123333567</telephone> <hiredate>1989-5-12</hiredate> </employee> <employee> <Id>0001</Id> <name>王五</name> <job>文职人员</job> <age>25</age> <sal>963.3</sal> <telephone>1234567</telephone> <hiredate>1989-5-12</hiredate></employee>
</company>