2011-09-27

 

Dtd的分类

Ø        内部DTD  所谓内部DTD是指DTD与XML数据定义放在同

Ø      一份文档中,即将DTD定义在XML文档内部。内

Ø      部DTD紧跟在XML声明和处理指令之间。

Ø        文档类型声明以“<!DOCTYPE>” 开始,以“]>

Ø      结束。在XML处理指令和根元素之间定义。

Ø      如下:

Ø      < ? xml version=”1.0” encoding=”GB2312” standalone=”yes” ?>

Ø      <! DOCTYPE 根元素名称 [

Ø         <! ELEMENT  子元素名称 (#PDATA)>

Ø      ]>

Ø       

Ø      外部DTD  外部文件类型定义存在于独立文件中,文件扩

Ø      展名为“.dtd”。外部DTD的好处是:可以方便地

Ø      被多个XML文档共享,只需要定义一份DTD文

Ø      档,即可为多个XML文档定义语义约束。

Ø     <!DOCTYPE  根元素名  SYSTEM " DTD-URL ">

Ø      公用DTD  有一种外部DTD,是由某个权威机构制定,供

Ø      特定行业或公司,这种DTD又被称为公用DTD。

Ø     <!DOCTYPE  根元素名  PUBLIC  " DTD-NAME “  “DTD-URL”>

公用DTD与外部DTD区别在于:公用DTD使用PUBLIC代替了原来的SYSTEM,并增加了DTD标识名。

Ø      注意:0到多个<!ELEMENT….>定义,每个<!ELEMENT….>定义一个XML元素

Ø      0到多个<!ATTLIST….>定义,每个<!ATTLIST….>定义一个XML元素定义了一个属性

Ø      0到多个<!ENTITY….>定义,每个<!ENTITY….>定义一个实体

Ø      0到多个<!NOTATION….>定义,每个<!NOTATION….>定义一个符号

Ø       

DTD对元素声明【重点掌握】

使用ELEMENT声明XML元素的语法,语法格式如下:

<!ELEMENT    元素名   元素内容>

Ø        元素声明以“<!”开始,以“>”结束

Ø      元素声明指令“ELEMENT”为关键字,必须大写

Ø      元素名:为当前元素指定的元素名称

Ø      元素内容: 元素名后面的内容用来指定元素的内容类型,它可以分为EMPTY(空)、子元素类型,混合型、ANY(任意)和#PCDATA 5种类型。

定义空元素类型—EMPTY

<!ELEMENT     元素名     EMPTY>

定义任意类型的元素

<!ELEMENT   元素名   ANY>

定义字符串内容的元素

<!ELEMENT   元素名   #PCDATA>

定义混合内容元素

      <!ELEMENT 父元素名 (#PCDATA|子元素1|子元素2|子元素3…..)*>

注意:

Ø      #PCDATA必须放在最前面

Ø      #PCDATA和各子元素之间只能用竖线(|)分割

Ø      子元素1,子元素2和子元素3之间的竖线(|)并不是表示互斥,而只是表  示这些元素能无序的重复出现,而且次数不受限制

Ø      不要试图在各个子元素之后添加?,*。+等表示频率的修饰符

Ø    定义子元素

Ø      有序的子元素

Ø      互斥的子元素

Ø    无序的子元素

 

有序的子元素

用英文逗号(,)作为子元素之间的分隔符,则子

元素之间必须遵守所定义的顺序。

互斥的子元素

      互斥的子元素表明一系列子元素之间只能出现

其中一次。互斥子元素使用竖线(|)分隔,以竖

线(|)分隔的多个元素只能出现其中之一

实例

      <?xml version="1.0" encoding="GB2312"?>

<!ELEMENT 书籍列表 (计算机书籍)*>

<!ELEMENT 计算机书籍 (书名|作者|价格|简要介绍)>

<!ELEMENT 书名 (#PCDATA)>

<!ELEMENT 作者 (#PCDATA)>

<!ELEMENT 价格 (#PCDATA)>

<!ELEMENT 简要介绍 (#PCDATA)>

 

DTD对属性声明【重点掌握】

在 DTD 中,属性通过 ATTLIST 声明来进行声明。一个属性声明可以声明一个元素的多个属性。

<! ATTLIST 元素名 属性名 属性类型  [属性限定条件] [默认值]>

“属性限定条件”和“默认值‘两部分是可选的吗,有下面几种情况

Ø      在没有指定“元素对属性的约束”时,必须为该属性指定“默认值”;

Ø      当“元素对属性的约束”是#REQUIRED时,不能为该属性指定“默认值”;

Ø      当“元素对属性的约束”是“IMPLIED”时,不能为该属性指定“默认值”;

Ø      当“元素对属性的约束”是“FIXED”时,必须为该属性指定“默认值”;

对属性的限定条件

v     #REQUIRED: 必须的属性,意味着必须为该元素提供该属性

v     #IMPLIED: 该属性是可有可无的

v     #FIXED: 该属性的值是固定的,定义是必须制定固定值。使用该元素时无需为其分配该属性,XML处理器会自动为给属性增加固定值

属性类型

含义

CDATA

值为字符串数据

(en1|en2|..)

此值是枚举列表中的一个值

ID

该属性值必须是有效地标识符,在XML文档时唯一的

IDREF

值为另外一个元素的 id属性值

IDREFS

值必须引用自多个已经有的ID属性值,多个ID属性值用空格隔开

NMTOKEN

值为合法的 XML 名称

NMTOKENS

值为多个合法的 XML 名称的列表

ENTITY

值是一个外部实体,如图片支持

ENTITIES

值是一个实体列表,多个实体之间以空格隔开

NOTATION

该属性值是在DTD中声明过的符号,这个是过期的,不要使用

枚举类型

声明了属性的备选值列表,属性必须从该列表

中选择一个值作为属性值。

<?xml version="1.0" encoding="GB2312"?>

<!ELEMENT 购物车 (肉* , 水果*)>

<!ELEMENT 肉 EMPTY>

<!ELEMENT 水果 EMPTY>

<!ATTLIST 肉 类型 (鸡肉|牛肉|猪肉|鱼肉) #REQUIRED>

<!ATTLIST 水果 类型 (苹果|梨|桔子) #REQUIRED>

改正以下mysql语句:CREATE TABLE employees ( EmployeeID int NOT NULL AUTO_INCREMENT COMMENT '工号', Name varchar(20) NOT NULL COMMENT '姓名', sex char(2) DEFAULT NULL COMMENT '性别', BirthDate date DEFAULT NULL COMMENT '出生日期', Phone varchar(24) DEFAULT NULL COMMENT '电话', HireDate date DEFAULT NULL COMMENT '入职日期', Address varchar(15) DEFAULT NULL COMMENT '工作地点', Title varchar(30) DEFAULT NULL COMMENT '职位', ReportsTo int(11) DEFAULT NULL COMMENT '上级工号', PRIMARY KEY (EmployeeID), KEY FK_Employees_Employees (ReportsTo), KEY Name (Name), CONSTRAINT FK_Employees_Employees FOREIGN KEY (ReportsTo) REFERENCES employees (EmployeeID), CONSTRAINT employees_chk_1 CHECK (((sex = '男') or (sex = '女'))) ) ENGINE=InnoDB AUTO_INCREMENT=11; insert into employees(EmployeeID,Name,sex,BirthDate,Phone,HireDate,Address,Title,ReportsTo) values (1,'蔡小叶','女','1983-11-10','15651718131','2014-01-02','海南省三亚市','销售员',NULL), (2,'陈会玲','女','1983-12-24','15651792676','2011-09-10','河南省焦作市','总经理',NULL), (3,'陈荣','女','1984-03-14','18052098320','2014-09-26','江苏省南京市','销售员',NULL), (4,'江小利','女','1983-12-10','15651793136','2012-09-07','四川省蒲江市','销售员',NULL), (5,'吕倩','女','1980-10-28','15651036060','2014-08-27','浙江省宁波市','销售经理',NULL), (6,'于小飞','男','1984-02-19','15605167963','2013-12-16','湖北省宜昌市','销售员',NULL), (7,'袁卫华','男','1983-09-23','18761666129','2014-01-09','江苏省溧阳县','销售员',NULL), (8,'张家瑞','男','1983-05-26','18652204573','2012-09-05','四川省宜宾市','销售经理',NULL), (9,'张玉','男','1984-02-15','18914785173','2013-04-21','安徽省安庆市','销售员',NULL), (10,'赵恒','男','1983-03-10','18761662284','2012-10-30','深圳',NULL,NULL); 停止 复制
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值