XML---dtd 完整详细

目录

一.XML详解

        1.1 XML是什么

         1.2 为什么要学习XML(XML的作用)

         数据交换

        配置和设置

        数据分析

二.XML的约束定义 

   2.1 dtd

  2.2元素约束(定义)

  2.3 属性定义

        1.属性类型 type

        2.属性描述


一.XML详解

        1.1 XML是什么

          指可扩展标记语言(EXtensible Markup Language), 被设计用来数据交换存储数据。XML最常用于互联网上的数据交换,其中它被用作一种结构化的编码方式。


         1.2 为什么要学习XML(XML的作用)

  1.  数据交换:方便的实现数据交换,系统配置,内容管理,但是现在比较很少用XML来进行数据交互了,而是用JSON比较多了,因为JSON传输的体积要比XML小很多,更容易传输。

  2. 配置和设置:XML非常适合存储和管理配置和设置数据,例如应用程序的用户界面和选项

  3. 数据分析:XML语言允许处理结构化和半结构化的数据,并且可以使用XML解析器来解析XML并提取有用的信息。这在数据挖掘和大数据分析中非常有用。


二.XML的约束定义 

        注意:标准的XML的格式,有且只有一个根元素(节点),并且XML区分大小写

         说到XML的约束定义就要提到DTD,所以来简单介绍一下

   2.1 dtd

        文档类型定义(Document Type Definition)是一套关于标记符的语法规则。 这个文件主要的功能是验证XML文件编写的合法性,也就是一个约束,要求你只能按DTD定义的格式写。dtd是一种XML的约束,说白了就是我定义了dtd文件,下面的xml编写必须按照我的约束条件来写。

  2.2 元素约束(定义)

        1,首先需要在XML声明加入了DTD

<!DOCTYPE root []>

        2.元素的分类

<!DOCTYPE element-name EMPTY>       空元素

<!DOCTYPE element-name (#PCDATA)>       文本元素

<!DOCTYPE element-name (e1,e2)>       混合元素

        3.元素的限制

次数:     0或1 用 ” ? “代替

                0~N:0次到无数次  用 ” * “ 代替

                1~N:至少一次 或无数次  用 ” + “ 代替

                  |    : 或

示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 元素的约束 -->
<!DOCTYPE persons [
	<!-- 根节点下有的节点 -->
	<!ELEMENT persons (person*)>
	<!-- 节点下的元素 -->
	<!ELEMENT person (name,age,contact,br?)>
	<!-- 文本元素 -->
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT age (#PCDATA)>
	<!-- 元素中可有的子元素 -->
	<!ELEMENT contact (phone|email)>
	<!-- 文本元素 -->
	<!ELEMENT phone (#PCDATA)>
	<!ELEMENT email (#PCDATA)>
	<!-- 空元素 -->
	<!ELEMENT br EMPTY>
	
]>
<persons>
	<person>
		<name>张小明</name>
		<age>10</age>
		<contact>
			<phone>1234567</phone>
		</contact>
		<br/>
	</person>
	<person>
		<name>张大明</name>
		<age>35</age>
		<contact>
			<email>123@qq.com</email>
		</contact>
	</person>
</persons>

2.3 属性定义

语法:<!ATTLIST  element-name att_name  type  desc>

注意:属性的约束也是需要声明的,所有也是写在  <!DOCTYPE root []> 里面

        1.属性类型 type

  1. ID 
  2. (男|女)
  3. CDATA
  4. IDREF(reference)

        2.属性描述

  1. #REQUIRED  必填
  2. #IMPLIED   非必填
  3. 默认值,只有type为(男|女)类型或者单选时 desc才可以用默认值方式

示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 元素的约束 -->
<!DOCTYPE persons [
	<!-- 根节点下有的节点 -->
	<!ELEMENT persons (person*)>
	<!-- 节点下的元素 -->
	<!ELEMENT person (name,age,contact,br?)>
	<!-- 文本元素 -->
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT age (#PCDATA)>
	<!-- 元素中可有的子元素 -->
	<!ELEMENT contact (phone|email)>
	<!-- 文本元素 -->
	<!ELEMENT phone (#PCDATA)>
	<!ELEMENT email (#PCDATA)>
	<!-- 空元素 -->
	<!ELEMENT br EMPTY>
	
	<!-- 属性的约束 -->
	<!-- 给person设置属性 -->
	<!ATTLIST person
		pid ID #REQUIRED
		sex (男|女) "男"
		qq CDATA #IMPLIED
		parent IDREF #IMPLIED
	>
	
		
]>





<persons>
	<person pid="p1" sex="男" qq="aaa" parent="p2">
		<name>张小明</name>
		<age>10</age>
		<contact>
			<phone>1234567</phone>
		</contact>
		<br/>
	</person>
	<person pid="p2">
		<name>张大明</name>
		<age>35</age>
		<contact>
			<email>123@qq.com</email>
		</contact>
	</person>
</persons>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值