XML基础 (2)

精简的记一下DTD

Tips:

DTD的所有关键字必须大写

DTD有外部和内部两种

1 内部DTD

由 <! 开始 接着 是DOCTYPE 然后是在 [ ] 里的标记声明块 最后由 > 结束

2 外部DTD

用关键字 SYSTEM 或者PUBLIC 来指出DTD文件的位置

SYSTEM 表示是私有DTD文件 使用SYSTEM时 格式如下

<! DOCTYPE根元素的名字SYSTEM"外部DTD的URL" >

URL可以是相对或者绝对路径

PUBLIC 是公共的DTD 并且还要包含一个DTD的名称 格式如下:

<! DOCTYPE根元素的名字PUBLIC"DTD的名字""外部DTD的URL" >

DTD的结构

1 元素类型声明

<! ELEMENT元素名称元素内容说明 >

内容说明的形式:

(1) #PCDATA 说明包含字符数据

(2) 子元素

* 表示零或者多个

| 表示或者

, 表示按顺序出现

+ 表示有一个或者多个

? 表示零个或者一个

一个典型例子

<! DOCTYPE简历(名字,性别,年龄,(固话|手机),家庭住址?,兴趣爱好*,教育经历+,工作经验*) >

(3)混合内容 前两者的结合或者任意组合

(4) EMPTY 表示什么都不含有的 空元素

(5) ANY 任何字符数据和子元素

2 实体声明 用来在DTD或者XML中引用定义好的内容 避免重复带来的麻烦 主要有一般实体和参数实体

比如xml中可能有一个公告 要在很多地方引用

<? xmlversion="1.0" ?>
<! DOCTYPE公告[

<!ELEMENT公告(时间,内容)
>
<! ELEMENT时间(#PCDATA) >
<! ELEMENT内容(#PCDATA) >
<! ENTITY时间"1999年1月1日" >
<! ENTITY内容"今天是新年的第一天" >
]>


< 公告 >
< 时间 > &时间; </ 时间 >
< 内容 > &内容; </ 内容 >
</ 公告 >

以上时一般实体 参数实体的不同就是 只能在DTD内部使用

<? xmlversion="1.0" ?>
<! DOCTYPE公告[

<!ELEMENT公告(时间,内容)
>
<! ELEMENT时间(#PCDATA) >
<! ELEMENT内容(#PCDATA) >
<! ENTITY%时间"1999年1月1日" >
<! ENTITY内容"今天是新年的第一天%时间;" >
]>


< 公告 >
< 时间 > 1999年1月1日 </ 时间 >
< 内容 > &内容; </ 内容 >
</ 公告 >

此外还有内部实体和外部实体之分

3 属性表声明

<! ATTLIST元素名属性名属性类型默认声明 >

(1) 默认声明

#REQUIRED 元素必须提供该属性

#IMPLIED 可以包含该属性 也可以不包含该属性

<! ATTLISTpropertynameCDATA#REQUIRED >

#FIXED+默认值 这个值是不能被修改的 如果没有写 系统会给出默认的值

只有默认值 如果没有写就会给出默认值 如果写了就是修改后的值

属性类型含有以下值:



Value值 Explanation解释

CDATA

The value is character data
字符数据值

(en1|en2|..)

The value must be one from an enumerated list
必须是来自列表中的一个值

ID

The value is a unique id
唯一独立的id值

IDREF

The value is the id of another element
其它元素的id值

IDREFS

The value is a list of other ids
其它id的列表值

NMTOKEN

The value is a valid XML name
其值为一个有效的XML名称

NMTOKENS

The value is a list of valid XML names
其值为一组有效的XML名称列表值

ENTITY

The value is an entity
其值为一个实体

ENTITIES

The value is a list of entities
其值为一组实体的列表

NOTATION

The value is a name of a notation
其值为一个符号的名称

xml:

The value is a predefined xml value
预定的XML值

具体解释一下

ID 必须以字母 下划线 冒号中的一个开头 可以包含字母 下划线 数字等其他XML标准允许的字符 不能带有空格 只能有一个 只能设置为 #IMPLIED 或者#REQUIRED

IDREF 必须是已经有了的ID 就是XML中出现过了的

IDREFS 必须是已经存在的多个ID 以空格分隔

ENTITY 把外部的二进制数据连接到文档

4 记号声明 有些 声音 图像等 要用外部路径或者程序时 用来指定一个外部程序

MIME类型

<! NOTATIONgifSYSTEM"image/gif" >

URI 路径

<! NOTATIONgifSYSTEM"iexplore.exe" >

你可能感兴趣的:(xml)