前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XMLDTD语法详解

XMLDTD语法详解

作者头像
MonroeCode
发布2018-01-12 18:01:54
6560
发布2018-01-12 18:01:54
举报
文章被收录于专栏:Java技术分享Java技术分享

本文详细介绍DTD,包括其对元素的定义,属性的定义,以及实体的定义。

元素的定义

DTD中的修饰符号:

  这部分符号可以联系正则表达式的符号来记忆。

属性的定义

属性类型——CDATA

  比如:

代码语言:javascript
复制
<!ATTLIST title name CDATA #REQUIRED>

  定义了一个属性,是属于title元素的,属性名叫name,类型是字符串(包括数字和中文),并且是一个必须要有的属性。

属性类型——NMTOKEN/NMTOKENS

  左边图中因为加了空格而出错。

属性类型——ID

  类型为ID的属性取值必须是唯一的。

  从这个例子还可以看到同一个元素可以一次定义多个属性,多个属性之间用空格分隔即可。

属性类型——IDREF/IDREFS

                                        (“儿子”后面漏掉了一个斜线)

属性类型——Enumerated

  实现定义好一些值,属性的值必须在所列出的值的范围内。

属性的特点

#REQUIRED

  元素的所有实例都必须有该属性的值(NOT NULL)。

  语法:

代码语言:javascript
复制
<!ATTLIST 元素名 属性名 属性类型 #REQUIRED>

  DTD示例:

代码语言:javascript
复制
<!ATTLIST person number CDATA #REQUIRED>

  XML示例:

代码语言:javascript
复制
<person number="6788"/>

#IMPLIED

  元素的实例中可以忽略该属性(NULL)。

  语法:

代码语言:javascript
复制
<!ATTLIST 元素名 属性名 属性类型 #IMPLIED>

  DTD示例:

代码语言:javascript
复制
<!ATTLIST contact fax CDATA #IMPLIED>

  XML示例:

代码语言:javascript
复制
<contact fax="888-228833"/>

  没有这个属性也是对的。

#FIXED value

  元素实例中该属性的值必须为指定的固定值。

  语法:

代码语言:javascript
复制
<!ATTLIST 元素名 属性名 属性类型 #FIXED "value">

  DTD示例:

代码语言:javascript
复制
<!ATTLIST sender company CDATA #FIXED "Microsoft">

  XML示例:

代码语言:javascript
复制
<sender company="Microsoft"/>

Default value

  为属性提供一个默认的值。

  语法:

代码语言:javascript
复制
<!ATTLIST 元素名 属性名 属性类型 "value">

  DTD示例:

代码语言:javascript
复制
<!ATTLIST hello paymenttype CDATA "check">

  XML示例:

代码语言:javascript
复制
<hello paymenttype="check"/>

定义实体

一般

  语法:

代码语言:javascript
复制
<!ENTITY 实体名 "实体值">

  DTD示例:

代码语言:javascript
复制
<!ENTITY writer "Donald Duck">

<!ENTITY copyright "Copyright W3Schools">

  XML示例:

代码语言:javascript
复制
<author>&writer;&copyright;</author>

外部实体:

  语法:

代码语言:javascript
复制
<!ENTITY 实体名 SYSTEM "URI/URL">

  DTD示例:

代码语言:javascript
复制
<!ENTITY writer SYSTEM "http://www.baidu.com/index.php?tn=coralqq">

<!ENTITY copyright SYSTEM "http://www.baidu.com/index.php?tn=coralqq">

  XML示例:

代码语言:javascript
复制
<author>&writer;&copyright;</author>

  与上面的区别就是加上了SYSTEM关键字。

  这样就不是使用网址的字符串来代替,而是用网址的文档本身内容。

实体类型

  前面所讲的都是普通实体,分为内部实体和外部实体。

  所谓参数实体,该实体实际上不是在具体实例化文档中使用,而是在DTD文档内部被使用。

  我们可以定义一个实体,然后在DTD内部来引用它。

  如下:

代码语言:javascript
复制
<!ENTITY %地址 "街道,城市,邮编,国家">

<!ELEMENT 联系人 (人名,电话,%地址;)>

总结如下:

普通实体:DTD中定义,XML中使用,使用格式: &名;

参数实体:DTD中定义,定义的时候要用%,DTD中使用,使用格式: %名;

  普通实体和参数实体都分为内部实体外部实体两种,外部实体定义需要加上SYSTEM关键字,其内容是URL所指向的外部文件实际的内容。

  如果不加SYSTEM关键字,则为内部实体,表示实体指代内容为字符串。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 元素的定义
  • 属性的定义
  • 属性的特点
  • 定义实体
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档