04_XML_04_XMLDTD语法
【DTD语法约束细节】
* 元素定义
* 属性定义
* 实体定义
【1.元素定义】
在DTD文档中使用ELEMENT声明一个XML元素,语法格式如下所示:
<!ELEMENT 元素名称 元素类型 >
元素类型可以是元素内容、或类型
1. 若是元素内容,需要使用 ( ) 括起来,如下:


1.1.元素内容可以使用如下方式,描述内容的组成关系
* 用逗号分隔,表示内容的出现顺序必须与声明时一致。表示<书></书>节点内只能有<书名><作者><售价>等节点

* 用 | 分隔,表示任选其一,即多个只能出现一个。表示<书></书>节点内只能有一个<书名>、<作者>、<售价>节点

1.2.在元素内容中也可以使用+、*、?等符号表示元素出现的次数。
+ :1次或 多次,如 ( 书+ )

? : 0次或 1次,如:( 书? )

* : 0次或 多次,如: ( 书* )

1.3.也可以使用圆括号批量设置,例如:

表示<书></书>节点中出现((书名*,作者?,邮箱)*)或者出现<评论>0次或1一次。
2.若是元素类型,则直接书写,DTD规范定义了如下几种类型:
* EMPTY : 用于定义空元素,例如<br/> <hr/>
* ANY:表示元素内容为任意类型,如下表示<书架></书架>节点内可以放置任意节点

【属性定义】
XML文档中的标签属性需通过ATTLIST为其设置属性。
1.语法格式:
<!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
.....
>
属性声明举例:

对应的XML文件:


2. 设置说明
#REQUIRED:必须设置该属性
#IMPLIED:可以设置也可以不设置
#FIXED:说明该属性的取值固定为一个值,在XML文件中不能为该属性设置其他值,但需要为该属性提供这个值。
#直接使用默认值:在XML中可以设置该值也可以不设置该值。没有任何设置就用默认值。
举例如下:
DTD文件为:

3. 常用属性值类型
CDATA:普通文本字符串
ENUMERATED:枚举
ID:即id类型
ENTITY:实体
*例子1

*例子2:ID属性
ID类型的属性值表示 属性的设置值为一个唯一值。
ID属性的的值只能由字母、下划线开始,不能为空字符。

*例子三 实体
实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别的别名应用这段内容例了。
在DTD定义中,一条<!ENTITY ..>语句就用于定义一个实体。
实体分为两种类型:引用实体和参数实体。
1.引用实体:
引用实体主要在XML文档中被应用
语法格式:<!ENTITY 实体名称 "实体内容" > :直接转变成实体内容
引用方式: &实体名称
举例如下:
在DTD文件中实体如下:

对应的XML文件中引用如下:

2.参数实体
参数实体被DTD文件自身引用
语法格式:<!ENTITY % 实体名称 "实体内容">
引用方式:%实体名称
举例1:
在user1.dtd中:

在user2.dtd中:

举例2
在user1.dtd中

在user2.dtd中

04_XML_04_XMLDTD语法的更多相关文章
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- 探索C#之6.0语法糖剖析
阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...
- [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性
回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...
- Velocity初探小结--velocity使用语法详解
做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...
- C#语法糖大汇总
首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...
- 值得注意的ibatis动态sql语法格式
一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...
- Flex 布局教程:语法篇
作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...
随机推荐
- vim中不能使用“+y拷贝
新的机器上安装vim后可以使用yy复执,但是”+y拷贝到系统剪切板不行.按下面操作解决: 1.首先要检查你的vim版本是否支持+clipboard,命令是:version 或者可以输入:reg 查看是 ...
- scala学习笔记(四)样本类与模式匹配
访问修饰符 格式:private[x]或protected[x],x指某个所属包.类或单例对象,表示被修饰的类(或方法.单例对象),在X域中公开,在x域范围内都可以访问: private[包名]:在该 ...
- Android camera采集视频 X264编码
参考 http://blog.csdn.net/zblue78/article/details/6058147 感谢 ExperiencesOfCode 硬件平台:CPU Intel G630 @2. ...
- poj 2325 Persistent Numbers (贪心+高精度)
把输入数字每次从9-2除,能整除则记录该数字,最后从小到大输出. 应该算是水题,不过窝第一次写高精度除法,虽然1A,不过中间改了好多次. /****************************** ...
- ASP.Net IE10 _doPostBack 未定义错误【转】
--昨天发现IE10下面ReportViewer执行报表会报错,发现为Js报_doPostBack 未定义错误,查找相关资料发现问题为 当前framework不能识别IE10版本,把该浏览器做降级处理 ...
- MySql中启用InnoDB数据引擎的方法
1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ...
- hdoj 1702 ACboy needs your help again!【数组模拟+STL实现】
ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 一步一步学android控件(之十六)—— CheckBox
根据使用场景不同,有时候使用系统默认的CheckBox样式就可以了,但是有时候就需要自定义CheckBox的样式.今天主要学习如何自定义CheckBox样式.在CheckBox状态改变时有时需要做一些 ...
- 你真的知道C#的TryParse吗?
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:你真的知道C#的TryParse吗?.
- 使用ajax代替iframe
相信大多数程序员都跟iframe打过交道,iframe简单,好用.在我用的过程中比较苦逼的是关于iframe高度的设置. 由于子页面内容不确定,页面高度也不确定.于是开始网上的各种搜索,一般有两种:一 ...