版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_36260974/article/details/89979011
XML
XML 约束_定义元素
● DTD 定义元素
-
定义元素的语法
使用 ELEMENT 声明元素:<!ELEMENT 元素名 内容类型或内容>
例如:
<!ELEMENT name (#PCDATA)> <!-- 表示 name 元素的内容为文本数据-->
-
元素类型
元素类型可以是 ANY 或 EMPTY<!ELEMENT stu ANY> <!-- 表示 stu 元素的内容可以是任意元素,也可以是文本数据,也可以是文本数据+子元素,反正就是任意-->
<!ELEMENT stu EMPTY> <!--表示 stu 不能有任何内容(包括空格),即空元素-->
-
元素内容
元素内容可以是文本数据,也可以是子元素<!ELEMENT stu (#PCDATA)> <!--表示 stu 元素内容为文本-->
<!ELEMENT stu (name)> <!--表示 stu 元素内容为 name 子元素,但要注意,如果 <name> 元素没有声明,那么就会出错-->
-
子元素出现次数
可以使用 “?”、“*”、“+” 来指定子元素的出现次数<!ELEMENT stu (name?)> <!--表示 stu 元素可以有 0~1 个 name 子元素,即 name 子元素可有可无--> <!ELEMENT stu(name*)> <!--表示 stu 元素可以有 0~n 个 name 子元素--> <!ELEMENT stu(name+)> <!--表示 stu 元素可以有 1~n 个 name 子元素-->
-
多个子元素
<!ELEMENT stu (name,age,sex) <!--表示 stu 必须有三个子元素,分别是 name、age、sex,并且子元素出现的顺序也要与声明的顺序一致-->
-
枚举子元素
<!ELEMENT stu (name | age | sex) <!--表示 stu 只有一个子元素,可以是 name、age、sex 中的任意一个-->
-
复合声明 1
<!ELEMENT stu (name | age | sex)?> <!--表示 stu 元素可以有 0~1 个(name | age | sex),而(name | age | sex)表示 name、age、sex 其中的一个-->
-
复合声明 2
<!ELEMENT stu (name | age | sex)*> <!--表示 stu 元素可以有 0~n 个(name | age | sex),而(name | age | sex)表示 name、age、sex 其中的一个-->
-
复合声明 3
<!ELEMENT stu (name | age | sex)+> <!--表示 stu 元素可以有 1~n 个(name | age | sex),而(name | age | sex)表示 name、age、sex 其中的一个-->
-
练习
根据上面 DTD 写 xml 文档<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 课件 [ <!ELEMENT 章节 (简介,(标题,(段落 | 图片 | 表格 | 说明)+)+)> <!ELEMENT 简介 (#PCDATA)> <!ELEMENT 标题 (#PCDATA)> <!ELEMENT 段落 (#PCDATA)> <!ELEMENT 图片 (#PCDATA)> <!ELEMENT 表格 (#PCDATA)> <!ELEMENT 说明 (#PCDATA)> <!ELEMENT 课件 (章节+)> ]> <课件> <章节> <简介>水浒传是一部农民起义的故事</简介> <标题>水浒传第三回景阳冈</标题> <段落>武松来到景阳冈...</段落> <说明>作者:施耐庵</说明> </章节> <章节> <简介>水浒传是一部农民起义的故事</简介> <标题>宋三郎怒杀阎婆惜</标题> <段落>那日....</段落> <表格></表格> </章节> </课件>
如有错误,欢迎指正!