当前位置:网站首页>xml dtd 记录
xml dtd 记录
2022-06-23 05:38:00 【小代码2016】
引入方式
内部DTD
将DTD与XML数据定义放在同一份文档中
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- 内部DTD -->
<!DOCTYPE books[
<!ELEMENT books (book)*>
<!ELEMENT book (name,autor,price,desc)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
]>
<!-- xml 文档 -->
<books>
<book>
<name>java</name>
<autor>laolang</autor>
<price>500</price>
<desc>java 书籍</desc>
</book>
<book>
<name>php</name>
<autor>php</autor>
<price>400</price>
<desc>php 书籍</desc>
</book>
</books>
外部DTD
dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (book)*>
<!ELEMENT book (name,autor,price,desc)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "one.dtd">
<books>
<book>
<name>java</name>
<autor>laolang</autor>
<price>500</price>
<desc>java 书籍</desc>
</book>
<book>
<name>php</name>
<autor>php</autor>
<price>400</price>
<desc>php 书籍</desc>
</book>
</books>
公用DTD
DTD 文档结构
第 1 行是DTD声明部分,与XML相同
0到多个注释,与XML相同
0到多个<!ELEMENT…>定义,每个<!ELEMENT…>定义一个XML元素
0到多个<!ATTLIST…>定义,每个<!ATTLIST…>为XML元素定义一个属性
0到多个<!ENTITY…>,每个<!ENTITY…>定义一个实体
0到多条<!NOTATION…>定义,每个<!NOTATION…>定义一个符号
这4个元素无须相互嵌套
ELEMENT
<!ELEMENT 元素名 元素类型描述>元素类型描述主要有如下5种:
- 任意类型
这种元素既可以是字符串,也可以包含其他子元素,还可以是空元素 - 字符串值
这种元素只能是字符串,不能包含其他子元素,也不可以是空元素 - 空元素
这种元素是能是空元素,既不可以包含子元素,也不可以包含字符串值 - 包含子元素
需要详细定义子元素之间的顺序和子元素出现的次数 - 混合类型
指定XML元素的值只能是几个确定的类型,混合类型比任意类型的约束更强
任意类型
语法 : <!ELEMENT 元素名 ANY>
例:
DTD
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books ANY>
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "one.dtd">
<books>
books
</books>
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "one.dtd">
<books/>
空元素
语法 : <!ELEMENT 元素名 EMPTY>
例:
DTD
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books EMPTY>
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "one.dtd">
<books/>
字符串
语法 : <!ELEMENT books (#PCDATA)>
例 :
DTD
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (#PCDATA)>
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "one.dtd">
<books>
books
</books>
混合内容
语法:<!ELEMENT 父元素名 (#PCDATA | 子元素1 | 子元素2 | 子元素3 ...)*>
指定了父元素的内容既可以是普通字符串,也可以是各子元素名所指定的子元素。值得指出的是,这里的子元素1、子元素2和子元素三之间的竖线不是表示互斥,而只是表示这些子元素能无序地重复出现,出现多少次不受限制。
dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT games (#PCDATA | game)*>
<!ELEMENT game (#PCDATA | name | type)*>
<!ELEMENT name (#PCDATA)>
<!ELEMENT type (#PCDATA)>
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE games SYSTEM "one.dtd">
<games>
游戏和编程是类似的,最是一种兴趣
<game>
<type>动作格斗</type>
<name>侍魂</name>
适合释放紧张的、沉闷的感觉
</game>
<game>
放松、舒缓心情的好游戏
<name>雷电</name>
<type>飞行射击</type>
</game>
<game>
<name>雷电</name>
</game>
<game>
<name>雷电</name>
<name>侍魂</name>
</game>
</games>
子元素
有序的子元素
如果使用英文逗号作为子元素之间的分隔符,则子元素之间必须遵守所定义的顺序
dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT games (game)*>
<!ELEMENT game (name,type)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT type (#PCDATA)>
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE games SYSTEM "one.dtd">
<games>
<game>
<name>侍魂</name>
<type>动作格斗</type>
</game>
<game>
<name>雷电</name>
<type>飞行射击</type>
</game>
</games>
互斥子元素
互斥的子元素表示一系列子元素之间只能出现其中之一。使用竖线分隔
dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT games (game)*>
<!ELEMENT game (name | type)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT type (#PCDATA)>
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE games SYSTEM "one.dtd">
<games>
<game>
<name>侍魂</name>
</game>
<game>
<type>飞行射击</type>
</game>
</games>
子元素频率
- +: 出现1次或多次
- *: 出现0次或多次
- ?: 出现0次或一次
- 没有指定频率: 只能出现且必须出现一次
组合子元素
使用括号将多个子元素括起来形成元素组,元素组内的各个子元素之间可用英文逗号分隔,以表示元素组之间各元素有序,也可以用数显表示互斥。可以使用表示频率的标记紧跟元素组,用以表示该元素出现的频率。
无序子元素
dtd没有专门定义无序子元素,不过可以借助元素组来实现
<!ELEMENT games (game)*>
<!ELEMENT game(name|autor|price|type)+>
<ELEMENT name (#PCDATA)>
<ELEMENT autor (#PCDATA)>
<ELEMENT price (#PCDATA)>
<ELEMENT type (#PCDATA)>
定义属性
<!ATTLIST 属性所属的元素 属性名 属性类型 [元素对属性的约束] [默认值]>
在没有指定“元素对属性的约束”时,必须为该属性指定默认值
当“元素对属性的约束”是 #REQUIRED时,不能指定默认值
当“元素对属性的约束”是 #IMPLIED时,不能指定默认值
当“元素对属性的约束”是 #FIXED时,必须指定默认值
#REQUIRED : 必须
#IMPLIED : 可有可无
#FIXED : 固定属性
属性类型
实体
符号
done
边栏推荐
- 将TensorFlow1.x改写为pytorch
- I heard you want to embed ppt on WordPress website?
- Verilog语法讲解
- Focusing on the smart city, Huawei cooperates with China Science and technology Xingtu to jointly develop a new digital blue ocean
- 项目_过滤器Filter解决中文乱码
- haas506 2.0开发教程-sntp(仅支持2.2以上版本)
- 嵌入式实时系统线程的副作用
- mysql如何将日期转为数字
- Skilled use of slicing operations
- haas506 2.0开发教程-高级组件库-modem.net(仅支持2.2以上版本)
猜你喜欢

Haas 506 2.0 Tutoriel de développement - bibliothèque de composants avancés - modem. SMS (ne prend en charge que les versions supérieures à 2,2)

Media industry under the epidemic situation, small program ecology driven digital transformation exploration

haas506 2.0開發教程-高級組件庫-modem.sms(僅支持2.2以上版本)

如何实现与FDA保持邮件通信安全加密?

C # database reports errors. Let's have a look

Data indicators and data analysis models that designers need to understand

C语言学习总结

C# wpf 通过绑定实现控件动态加载

Measurement principle and thickness measurement mode of spectral confocal

如何查看本机IP
随机推荐
Plot+seaborn+folium: a visual exploration of Abbey's rental housing data
idea的去除转义的复制粘贴
Machine learning artifact scikit learn minimalist tutorial
使用ts-node直接运行TypeScript代码
解读创客教育中的团结协作精神
system 权限程序不能访问sd卡问题
Functions and basic structure of CPU
Programmers' real ideas | daily anecdotes
Steam教育对国内大学生的影响力
Measurement principle and thickness measurement mode of spectral confocal
2020 smart power plant industry insight white paper
C# 获取DPI和真实分辨率的方式(可以解决一直是96的问题)
记一次GLIB2.14升级GLIB2.18的记录以及其中的步骤原理
C language stepping on the pit: document coding error, resulting in Base64 Chinese coding error
Docker practice - redis cluster deployment and micro service deployment project
Termux
Get to know webassembly quickly
Golang regular regexp package use -04- use regular replacement (replaceall(), replaceallliteral(), replaceallfunc())
SAP execution transaction code mrrl error -no message was found for partner 100065-
关于监督