天天看点

xml的约束技术一-----dtd

一.示例用xml代码

<?xml version="1.0" encoding="GBK"?>
<person>
	<name>xiaoming</name>
	<age>23</age>
</person>
           

二. 限制元素时的格式(有几个元素,就创建几个Element标签)

<!ELEMENT 元素名 约束条件>
           

△ 约束条件(分为简单元素与复杂元素):

<1>元素分类:复杂元素指的是含有子元素的元素,反之不含子元素则为简单元素

<2>若为简单元素:

  • (#PCDATA) 该元素的内容为字符串型
  • EMPTY 该元素不含内容
  • ANY 该元素内容不做限定(为空或者字符串型)

<3>若为复杂元素格式:<!ELEMENT 元素名 (子元素名)>

  • 子元素之间用 , 隔开,表示元素出现顺序严格按照该顺序出现
  • 子元素之间用 | 隔开,表示这些元素中任选其一(类似枚举)
  • , 以及 | 可以同时使用,但是用 | 隔开的元素外要加上 () 代表分组
<!-- 表示Person元素中有两个简单元素name和age,name一定要出现,age和sex任选其一出现 -->
<!ELEMENT person (name,(age|sex))>   
           

<4>限制元素出现的次数(利用通配符,通配符写在元素名后)

  • 当没有使用通配符限制次数时,默认是必须且只出现一次(==1)
  • ?通配符:该元素出现0次或1次(==0 || ==1)
  • *通配符:该元素出现次数随机(>=0)
  • +通配符:该元素至少出现1次(>=1)

三.限制属性时的格式

<!ATTLIST 元素名
  属性名 属性类型 属性约束条件
  >
           
  • 属性类型:
    1. CDATA 该属性值为字符串类型
    2. 枚举形式 该属性值为其中任选其一 (中间用 | 隔开) eg: (true|false)
    3. ID 设置属性类型为ID的每个元素该属性值都不能相同(唯一)
  • 属性约束条件:
    1. #REQUIRED : 该属性必须存在
    2. #IMPLIED : 该属性可有可无
    3. #FIXED : 代表属性具有固定值,不能更改(值就跟在之后)
    4. 直接给一个值 :代表属性的默认值

四.实体 (注意:实体必须通过内部导入的dtd文件中设置)

1.创建实体

<!ENTITY 实体名 实体值>
           

举例:

<!-- 设置一个实体 -->
<!ENTITY test entity>
           

2.调用实体

&实体名;
           

举例:

<!-- 调用实体 -->
&test;
           

五.导入dtd文件的三种方法(注意:只能导入一个dtd文件!!!)

  1. 通过外部导入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
           
  1. 通过内部导入dtd文件
<!DOCTYPE 根元素名称 [dtd代码]>
           
  1. 通过网络文件导入dtd文件
<!DOCTYPE 根元素名称 PUBLIC "dtd名称" "dtd的URL路径">