XML约束

  在XML技术中,可以编写一个文档来约束一个xml文档的书写规范,这称之为XML约束
为什么需要XML约束?

  class.xml <stu><面积>?人怎么会有面积元素?

  xml 文件标签可以随便写,dtd可以对其有所要求按照合理的需求写

xml文件约束--dtd

  document type definition 文档类型定义
作用:

  定义xml标签约束,使开发者按照定义书写,也可以约束html文件

使用:
在项目中如需要一个xml文件,项目经理 可定义一个dtd文件,要求所有程序员按照此规范书写xml文件

掌握要求:
可根据别人提供的dtd文件,写出对应的xml文件即

备注:dtd文件也必须使用utf-8编码和文件保持一致
引入dtd
  格式:

  <!DOCTYPE 根元素名 SYSTEM "dtd路径">  本地使用SYSTEM
备注:默认情况下浏览器不检测处理dtd约束,需要自己写代码测试或借助工具

文件1
checkDTD.html
此只针对ie5 支持 别的浏览器不支持
<html>
<head>
<title>测试dtd</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<script language="javascript">
//创建一个xml解析器
var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
//开启校验功能
xmldoc.validateOnParse=true;
//指定对那个xml文件校验
xmldoc.load("class.xml");
//如果错误,输出错误信息
document.write("错误信息="+xmldoc.parseError.reason+"<br/>");
document.write("错误行号="+xmldoc.parseError.line);
</script>
</head>
</html>

class.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!--一定保证文件的保存编码方式为utf-8-->
<!DOCTYPE class SYSTEM "class.dtd">
<class>
<student ><!--优秀学生-->
<name>杜杰</name>
<sex>boy</sex>
<age>28</age>
<MT>12312</MT>
</student>
</class>

xml.dtd文件
<!ELEMENT class (student+)>
<!ELEMENT student(name,age,des)> 学生标签下可有 名字,年龄,介绍三个元素
<!ELEMENT name(#PCDATA)> 对名字进行说明
<!ELEMENT age(#PCDATA)>
<!ELEMENT des(#PCDATA)>

DTD文档声明和引用  等同于CSS
--内部DTD文档
  <!DOCTYPE 根元素 [定义内容]>
--外部DTD文档
  <!DOCTYPE 根元素 SYSTEM "DTD文件路径">
--内外部DTD文档结合
  <!DOCTYPE 根元素 SYSTEM "DTD文件路径"[定义内容]>

引用DTD约束
  XML文件应用DOCTYPE 声明语句来指明它所遵循的DTD文件,DOCTYPE声明语句有两种形式
@ 引用文件为本地
  <!DOCTYPE 文档根节点 SYSTEM "dtd文件路径">
@ 引用文件时一个公共的文件时
  <!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件url">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

DTD文件定义
<!ELEMENT NAME CONTENT>
<!ELEMENT des(#PCDATA)>
  ELEMENT 关键字
  NAME 元素名
  CONTENT 元素类型(大写)
CONTENT类型分析:
  EMPTY    该元素不能包含子元素和文本,但可以有属性(空元素)
  ANY      该元素可以包含任何在DTD中定义的元素内容
  #PCDATA   可以包含任何字符数据,但是不能在其中包含子标签 需用 ( ) 括起来

组合类型
  <!ELEMENT 家庭 (人+,家电*)>
  +    元素  一到多个
  *    元素  0到多个
       元素  0到1次
  |        元素  在列出的对象中选择一个 man|women 至少出现一个
  ()      元素  分组
  ,        对象必须按指定的顺序出现(name,age,sex) name,age,sex必须出现并且按定义顺序出现

<!ELEMENT 家庭 (人+,家电)>
  如果去掉* 则含义是定义时必须有家电

属性定义
  如果dtd文件没有定义属性 则在xml文件里加入属性时会报错
<!ATTLIST 元素名称
  属性名称 类型 属性特点
  属性名称 类型 属性特点...
>
类型分析:

  CDATA      属性值可以是任何字符(包括数字和中文)
  ID         这个属性的值必须是唯一的(对于同此类型的标签),并且以字母开头
  IDREF/IDREFS  id引用
  IDREF       属性值指向文档中其它地方声明的ID类型的值
  IDREFS同 IRREF 但可以具有由空格分开的多个引用
  Enumerated   枚举 在几个值里取值 性别

属性特点
  #REQUIRED   该属性必须有
  #IMPLIED    该属性可有可无
  #FIXED value    该属性的值必须为此固定值
  Defalut value     不给则取默认值

写法:  就近原则 对元素指定属性
<!ELEMENT class (student+)>
<!ATTLIST student
address CDATA #REQUIRED
>

<!ATTLIST person sex(boy|girl) #REQUIRED>


ENTITY/ENTITIES 实体定义

  用于为一段内容创建一个别名,以后再xml文档中就可以使用别名引用这段内容
在DTD定义中,一条<!ENTITY ...>语句用于定义一个实体
实体可以分为两种类型
  引用实体参数实体
引用实体
1.在DTD中定义
  <!ENTITY 实体名 内容>
    <!ENTITY sto "个人介绍">
2.在xml引用   &实体名
  &sto; 引用符号 & 和结束分号;必须有

参数实体
1.在DTD中定义参数实体
  <!ENTITY % 实体名称 "实体内容">

2.在DTD文件中自己使用
  %实体名;

DTD案例:
电视节目表 DTD
<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>
根据DTD写出相应的xml文档

xml技术DTD约束定义的更多相关文章

  1. 2.xml约束技术----------dtd约束

    1.xml的约束 (1)为什么需要定义约束了 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中写了一个元素<猫>,发 ...

  2. 【JAVA与XML、dtd约束、Schema约束】

    一.XML. (1)XML:Extensible Markup Language (2)XML是一种标记语言. (3)XML的设计宗旨是传输数据,而不是显示数据. (4)XML标签没有被预定义,即使用 ...

  3. XML的DTD约束

    DTD约束:DTD的声明和引用 1.内部DTD文档 <!DOCTYPE 根元素 [定义内容]> 2.外部DTD文档 <!DOCTYPE 根元素 SYSTEM "DTD文件路 ...

  4. XML内部DTD约束 Day24

    <?xml version="1.0" encoding="UTF-8"?> <!-- 内部DTD --> <!-- XML:ex ...

  5. XML、DTD约束

    XML的作用: xml现在主要用于配置文件 文档声明: 如果你使用记事本打开文档,此时如果记事本默认保存数据到硬盘根据的是"GB2312"编码,这个时候如果你在xml文档源码中en ...

  6. XML学习1 xml序言 dtd约束

  7. 【PHP XML与dtd概述【完整版】】

    一.XML文件简介 关于XML的大多数人都知道一些,HTML->xhtml->xml,这个顺序本来应当是HTML发展的顺序. XML可以当做配置文件使用,还可以充当小型的数据库. vers ...

  8. xml语法、DTD约束xml、Schema约束xml、DOM解析xml

    今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...

  9. XML约束——DTD约束

    参考: 方立勋老师的讲课视频.   什么是XML约束 •在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 为什么需要XML约束 常用的约束技术 •XML DTD • ...

随机推荐

  1. VM启用ISO共享

    在SCVMM中可以启用ISO共享,如下图: 如果不勾选共享镜像复选框,则vmm会把镜像文件通过网络复制到Hyper-v主机下的虚拟机配置文件夹中 配置步骤如下: 1.新建一个共享文件夹(存放ISO), ...

  2. 批处理:循环解压不同文件夹下的zip压缩包

    结构如下 A文件夹: A1文件.zip A2文件.zip A3文件.zip B文件夹: B1文件.zip B2文件.zip B3文件.zip ...... 批处理文件:rezip.bat如下 @ech ...

  3. cocos2d-x之CCMotionStreak类——2013-08-25 16

      在游戏的实现过程中,有时会需要在某个游戏对象上的运动轨迹上实现渐隐效果.这种感觉就好像是类似飞机拉线的拖尾巴,在视觉上感觉很好,比如子弹的运动轨迹等,如果不借助引擎的帮助,这种效果往往需要通过大量 ...

  4. 【转】三次握手与accept()函数

    1. 客户端发送SYN给服务器 2. 服务器发送SYN+ACK给客户端 3. 客户端发送ACK给服务器 4. 连接建立,调用accept()函数获取连接

  5. 判断app是否在后台

    1.通过RunningTaskInfo类判断(需要额外权限):(测试通过5.1可用,权限名称修改 <uses-permission android:name="android.perm ...

  6. Android应用程序所包含的四种组件和DDMS

    关注用户组件         Activity                               编辑文本 .玩游戏 后台进程               Service           ...

  7. Objective-C:runtime

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  8. 在AngularJS的controller外部直接获取$scope

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/5560843.html ...

  9. win8 64位操作系统 Microsoft Visual Studio 2010在IIS上调试 “此任务要求应用程序具有提升的权限”等问题

    很少在IIS上调试程序,因系统原因,所以不得不在IIS上预览项目和调试项目(因为只能在IIS上预览项目才能看到项目里的数据). 1.附加到进程(注意附加到进程前必须预览项目) 2.选择调试项 需要注意 ...

  10. Bootstrap--组件之下拉菜单

    用于显示链接列表的可切换.有上下文的菜单. 对齐 B默认情况下,下拉菜单自动沿着父元素的上沿和左侧被定位为 100% 宽度. 为 .dropdown-menu 添加 .dropdown-menu-ri ...