xml之dtd约束

DTD:Document Type Definition 文档定类型定义。

作用:是用来约束XML的书写规范。

写法:

内部声明:

假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 !DOCTYPE 声明中:<!DOCTYPE根元素 [元素声明]>

外部声明:

本地:

<!DOCTYPE 根元素 SYSTEM "dtd文件名">

外地(网上):

<!DOCTYPE 根元素 PUBLIC “dtd的名称” “dtd的路径”>

DTD语法:

<!ELEMENT 元素名称 使用规则>

使用规则:

  1. (#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
  2. EMPTY:用于指示元素的主体为空。比如<br/>
  3. ANY:用于指示元素的主体内容为任意类型。
  4. (子元素):指示元素中包含的子元素

定义子元素及描述它们的关系:

  1. 如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。

    如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)>

  2. 如果子元素用“|”分开,说明任选其一。

    如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)>

  3. 用+、*、?来表示元素出现的次数
    • 如果元素后面没有+*?:表示必须且只能出现一次
    • +:表示至少出现一次,一次或多次
    • *:表示可有可无,零次、一次或多次
    • ?:表示可以有也可以无,有的话只能有一次。零次或一次

如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

定义属性:在DTD文档中使用ATTLIST关键字来为一个元素声明属性。

语法:

<!ATTLIST 元素名
		属性名1 属性值类型 设置说明
		属性名2 属性值类型 设置说明
		…
>
如:
<!ATTLIST 商品
		类别 CDATA #REQUIRED
		颜色 CDATA #IMPLIED
>
对应的XML为:<商品 类别=“服装” 颜色=“***”/>

属性值类型:

设置说明:

CDATA:表示属性的取值为普通的文本字符串

ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)

ID:表示属性的取值不能重复

#REQUIRED:表示该属性必须出现

#IMPLIED:表示该属性可有可无

#FIXED:表示属性的取值为一个固定值。语法:#FIXED "固定值"

直接值:表示属性的取值为该默认值

定义实体:

为一段内容指定一个名称,使用时通过这个名称就可以引用其所代表的内容。

在DTD文档中使用ENTITY关键字来声明一个实体。

实体可分为:引用实体和参数实体,两者的语法不同

引用实体语法:<!ENTITY 实体名称 “实体内容”>

在XML中引用方式:&实体名称

参数实体语法:<!ENTITY % 实体名称 “实体内容”>

在DTD中引用方式:%实体名称

示例(网上搜的):

<?xmlversion="1.0"?>
<!DOCTYPE note[
<!ELEMENT note(to,from,heading,body)>
<!ELEMENT to(#PCDATA)>
<!ELEMENT from(#PCDATA)>
<!ELEMENT heading(#PCDATA)>
<!ELEMENT body(#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘tforgetmethisweekend</body>
</note>

!DOCTYPE note (第二行)定义此文档是 note 类型的文档。

!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"

!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型

!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型

!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型

!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型

时间: 2024-10-07 12:20:37

xml之dtd约束的相关文章

xml技术DTD约束定义

XML约束 在XML技术中,可以编写一个文档来约束一个xml文档的书写规范,这称之为XML约束为什么需要XML约束? class.xml <stu><面积>?人怎么会有面积元素? xml 文件标签可以随便写,dtd可以对其有所要求按照合理的需求写 xml文件约束--dtd document type definition 文档类型定义作用: 定义xml标签约束,使开发者按照定义书写,也可以约束html文件 使用: 在项目中如需要一个xml文件,项目经理 可定义一个dtd文件,要求所

XML内部DTD约束

<?xml version="1.0" encoding="UTF-8"?> <!-- 内部DTD --> <!-- XML:extensible markup language 可扩展标记语言 --> <!-- DTD约束:document type definition 文档类型定义 --> <!-- + 1~n * 0~n ? 0~1 --> <!-- The markup declaratio

XML的DTD约束

DTD约束:DTD的声明和引用 1.内部DTD文档 <!DOCTYPE 根元素 [定义内容]> 2.外部DTD文档 <!DOCTYPE 根元素 SYSTEM "DTD文件路径"> 或者 <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文件的URL">  3.DTD元素基本语法: <!ELEMENT 元素名称  类别> 或 <!ELEMENT 元素名称 (元素内容)> -

DTD约束XML

XML引用DTD约束: 1. 内部引用,内部定义DTD: <!DOCTYPE    根元素    [ 各种元素声明 ]> 2. 引用系统本地DTD: <!DOCTYPE    根元素    SYSTEM    "DTD文件的URL.dtd"> 3. 引用公共DTD <!DOCTYPE    根元素    PUBLIC    "DTD名称"    "DTD文件的URL"> 例子: 我们在创建XHTML时,就有这种

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

一.XML文件简介 关于XML的大多数人都知道一些,HTML->xhtml->xml,这个顺序本来应当是HTML发展的顺序. XML可以当做配置文件使用,还可以充当小型的数据库. version:文档符合xml1.0规范,我们学习的一般都是1.0encoding:文档字符编码,比如gb2312,一般使用utf-8standalone:文档定义是否独立使用standalone="yes",表名文档独立使用standalone="no":默认 XML文档有且

DTD约束

XML文档声明: <?xml version="1.0" encoding="UTF-8"> XMl约束: 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 常用的XML约束: 1.XML DTD 2.XML Schema DTD约束:(Document Type Definition) 引用DTD约束: 1.当引用在本地时,采用如下方式: <!DOCTYPE 文档根节点 SYSTEM "DTD文件的U

XML的DTD和Schema约束

为什么要使用约束? XML是自定义的标签,有时候标签太多,记不住,所以就需要有约束来告诉我能写哪些标签,哪些标签写错了不能识别 XML中有哪几种约束? 有很多约束,其中DTD和Schema约束最为常见. 约束本质上是什么? 约束本质上也是一种xml文件. DTD约束和Schema约束的区别 特点的区别: DTD约束较为古老,简单,一些老框架使用DTD作为约束:Struts2和Hibernate都使用DTD作为其XML配置文件的约束 Schema约束功能更为强大,用的更为广泛,Tomcat和Spr

【代码笔记】XML深入学习:DTD约束与DTD语法(1)

2015-12-27 文件名    student.xml 1 <?xml version="1.0" encoding="GB2312" standalone="no"?> 2 <!--大家好,我是注释--> 3 <!--2015.12.27--> 4 <!DOCTYPE students SYSTEM "student.dtd"> 5 <!--这里没写盘符,及表示当前目

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介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使