本文主要是介绍xml学习总结(二)——dtd,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、简单的dtd文件
- 1.代码
- 2.内容说明
- 二、定义标签
- 三、定义标签属性
- 1.语法
- 2.属性类型
- 3.属性约束
- 四、实体
一、简单的dtd文件
1.代码
dtd文件:
<!ELEMENT person (name, age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person SYSTEM "./demo1.dtd">
<person><name>zhangsan</name><age>18</age>
</person>
2.内容说明
- 标签(元素)
-
复杂元素:有子标签的元素,例如
<!ELEMENT 标签名称 (子标签)>person
-
简单元素:无子标签的元素,例如:
<!ELEMENT 标签名称 约束>name
,age
-
- xml中引入dtd文件
语法:<!DOCTYPE 根标签名称 SYSTEM “dtd文件的路径”>
注
:
- dtd文件可以写在xml文件内部:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person [<!ELEMENT person (name,age)><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)>]>
<person><name>zhangsan</name><age>18</age>
</person>
- xml文件中子标签顺序要严格按照dtd中规定的写。
<!ELEMENT person (name,age)> <!-- name标签在age前面 -->
3.将,
改为|
时,标签只能出现其中一个。
<!ELEMENT person (name|age)> <!-- person的子标签只能存在name或者age -->
二、定义标签
- 简单标签:<!ELEMENT name (#PCDATA)>
- 语法:<!ELEMENT 标签名称 约束>
- 约束,如下表格:
约束 | 含义 |
---|---|
(#PCDATA) | <name>内容</name>,内容是字符数据 |
EMPTY | <name></name>,不存在内容 |
ANY | <name>内容</name>,可以存在内容 |
- 复杂标签:<!ELEMENT person (name,age)>
如上示例,name,age标签均只能出现一次,但子表签出现次数可以设置,如下:
符号 | 次数 |
---|---|
? | 出现零次或一次(<!ELEMENT person (name?,age)>) |
+ | 出现一次或多次(<!ELEMENT person (name+,age)>) |
* | 出现零次或多次(<!ELEMENT person (name*,age)>) |
三、定义标签属性
1.语法
<!ATTLIST 标签名 属性名 属性类型 约束>2.属性类型
属性类型 | 含义 | 示例 |
---|---|---|
CDATA | 属性值为字符串 | <!ATTLIST name id CDATA 约束> |
枚举 | 属性值为枚举范围中的一个 | <!ATTLIST name id (a|b|c) 约束> |
ID | 属性值只能是字母 或下划线 开头 | <!ATTLIST name id ID 约束> |
3.属性约束
属性约束 | 含义 | 示例 |
---|---|---|
#REQUIRED | 必须存在属性 | <!ATTLIST name id 属性类型 #REQUIRED> |
#IMPLIED | 可以存在属性 | <!ATTLIST name id 属性类型 #IMPLIED> |
#FIXED | 属性值固定,无法更改 | <!ATTLIST name id 属性类型 #FIXED "AAA"> |
属性值 | 默认属性值,如果未设置,则使用默认值 | <!ATTLIST name id 属性类型 "AAA"> |
四、实体
内部实体
- 语法:<!ENTITY 实体名称 "实体的值">
- 示例:
<!-- dtd中定义实体 -->
<!DOCTYPE person [<!ELEMENT person (name, age)><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)><!ENTITY entity "abc">]>
<!-- 在xml中引用实体 -->
<person><name>&entity;</name><age >18</age>
</person>
注
:实体写在内部dtd中,写在外部可能浏览器获取不到。
这篇关于xml学习总结(二)——dtd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!