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>