PHP--XML---DTD

dtd是在开发中,对文件格式进行约束的文件。有一些公开的dtd,比如html开头会声明使用哪一个dtd规范。


一般在项目中,项目经理会提供dtd,要求开发人员按要求编写,所以需要能读懂dtd文件。


dtd=====文档类型定义
其实在之前html 的<!Doctype> 这个就是使用的dtd
dtd就是一个文档规范,可以作用于html xml xhtml等
它的主要用途是约束文件(xml\html\xhtml等)
约束技术主要有2种==》dtd和schema
<!DOCTYPE 根元素名 SYSTEM "写dtd的路径"/>
在默认情况下,浏览器不去检测,我们需要自己写代码测试(js)
创建xml文档解析器对象
var xmldoc=new Active XObject("Microsoft.XMLDOM");
开启xml校验
xmldoc.validateOnParse="true";
装载xml文档
xmldoc.load("book.xml");
获取错误信息,错误的原因。错误的行号
xmldoc.parseError.reason;
xmldoc.parseError.line


外部dtd               <!DOCTYPE 班级 SYSTEM "01.dtd">  SYSTEM本地的文件路径           PUBLIC dtd的url公开的
内部dtd  内部的写法是<!DOCTYPE 班级 [外部dtd代码]>
通常 外部用的较多,内部偶尔用,内外部dtd用得少
语法<!ELEMENT   NAME      CONTENT> 
      关键字  元素名称     元素类型(大写)
#pcdata 代表的数据类型,有ANY EMPTY #PCDATA
EMPTY----该元素不能包含子元素和文本,但可以有属性(空元素)
ANY--------该元素可以包含任何在   dtd中定义的元素内容
#PCDATA-----可以包含任何字符数据,但是不能在其中包含子元素其他类型(组合)


dtd修饰符             用途                     示例                                                             示例说明
()-------用来给元素分组----------(古龙|金庸|梁羽生),(王朔|余杰),毛毛-----------分成3组
|-------在列出的对象中选择一个---(男人|女人)-----------------------------------表示女人或者男人,两者至少要选一个
+ ----该对象最少出现一次,可多次--(成员+)--------------------------------------表示成员最少有一个,可以是多个
*-----该对象出现0次到任意多次-----(爱好*)--------------------------------------爱好可以是0次到多次
?-----该对象可以出现0或1次--------(菜鸟?)-------------------------------------菜鸟可以出现或不出现,出现的话只能一次
,-----对象必须按指定的顺序出现----(西瓜、苹果、香蕉)---------------------------表示西瓜苹果香蕉必须出现,并且按这个顺序出现




元素属性列表说明
基本语法
<!ATTLIST 元素名字
属性名 类型 属性特点>
类型有:CDATA(表示属性值可以是字符或数字,中文) ID(表示属性值是唯一的,且以字母开头) IDRFF/IDRFFS(id 引用) ENUMERATED(枚举,属性值枚举类型) ENTITY/ENTITIES(实体)
属性特点:#REQUIRED 必须有
#IMPLIED 可有可无
#FIXED value 属性值是固定的
#Default value 如果不给值,默认值是什么


 IDRFF/IDRFFS 这个表示他的值是从别的属性(文本中存在的,包括自己)引用过来的,IDRFF/IDRFFS的区别是一个是只能是单值,一个可以是引用多个值
 ENTITY/ENTITIES(实体) 用于为一段内容创建一个别名,以后在xml中就可以使用别名应用这段内容了
 感觉有点像程序中 $str="abcd"
 在dtd中,一条<!ENTITY....>用于定义一个实体。实体分为2种类型,引用实体和参数实体。


 在dtd中定义一个引用实体<!ENTITY 实体名 "内容">   ,在xml文件中使用引用实体 &实体名;   现在的浏览器大部分不支持引用实体


参数实体  <!ENTITY % 实体名 "内容">  在dtd中定义,在dtd中引用  % 实体名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值