XML(6)_XML 约束_DTD定义元素

版权声明:如需转载,请注明出处 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 课件 (章节+)>
    ]>
    <课件>
    	<章节>		
    		<简介>水浒传是一部农民起义的故事</简介>
    		<标题>水浒传第三回景阳冈</标题>
    		<段落>武松来到景阳冈...</段落>
    		<说明>作者:施耐庵</说明>		
    	</章节>
    	<章节>	
    		<简介>水浒传是一部农民起义的故事</简介>
    		<标题>宋三郎怒杀阎婆惜</标题>
    		<段落>那日....</段落>
    		<表格></表格>
    	</章节>
    </课件>
    

如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/qq_36260974/article/details/89979011