XML之DTD

目录

什么是XML

什么是dtd

标准的XML格式

如何在XML中加入DTD声明

XML中的三种元素

XML中元素的限制

具体的使用

属性类型:

属性的描述

接下来我们看看完整的代码吧


什么是XML

XML是可扩展标记语言(eXtensible Markup Language)的缩写,是一种用于存储和传输数据的标记语言。与HTML类似,XML也是用标记符号来描述数据和数据的结构,但XML的标记不是预定义的,而是由用户自定义的,因此XML可以适用于许多不同的领域和应用。例如,XML可用于表示个人联系信息、企业业务流程、科学数据集等。由于XML的通用性和灵活性,它在Web应用程序、数据交换、配置文件和文档管理等方面得到广泛应用。

什么是dtd

DTD是文档类型定义(Document Type Definition)的缩写,是一种定义XML或SGML文档的结构和规范的语法。DTD规定了文档中允许出现的元素、属性以及它们之间的关系和顺序等约束和限制,使得文档有一个统一的结构和语法,以便于在不同的系统中进行互操作性。通过使用DTD,可以为XML或SGML文档创建一个标准的模板和验证工具,使得文档的结构和内容得到规范和约束,避免了出现语法错误和不一致性等问题。

标准的XML格式

  • 1、有且只有一个根元素
  • 2、XML标签大小正确区分
  • 3、正确使用结束标签
  • 4、正确使用嵌套标签
  • 5、使用了合法的标签名字
  • 6、定义有效的属性

如何在XML中加入DTD声明

<!DOCTYPE root[]>

XML中的三种元素

  • 1、文本标签 <!ELEMENT element-name EMPTY>//空元素
  • 2、空标签    <!ELEMENT element-name (#PCDATA)//文本元素
  • 3、混合标签 <!ELEMENT element-name (e1,e2)//混合元素

XML中元素的限制

    次数

  • 0或者1:?
  • 0或者n次:*
  • 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 (email+|phone+)>
<!ELEMENT br EMPTY>
<!ELEMENT email (#PCDATA)>
<!ELEMENT phone (#PCDATA)>


]
>
<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>

我们在代码中还看到了每一个标签元素中还有一些属性,这些属性同样也收到dtd定义的规则约束

 元素属性的规范定义

语法:<ATTLIST element-name att_name type desc> //只有在type为男女类型的时候,desc才可以使用默认的方式

属性类型:

  • ID  id类型
  • (男|女|未知) "男"  这里的意思是默认就是男  选择类型
  • CDATA 文本类型
  • IDREF id的依赖

属性的描述

  • #REQUIRED :必填
  • #IMPLIED: 非必填

接下来我们看看完整的代码吧

<?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 (email+|phone+)>
<!ELEMENT br EMPTY>
<!ELEMENT email (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ATTLIST person 
     pid ID #REQUIRED 
	sex (男|女|未知) "男"
	qq CDATA #IMPLIED
	parent IDREF #IMPLIED
 >

]
>

<!-- DTD标签约束 
三种元素类型
1、文本标签 <!ELEMENT element-name EMPTY>//空元素
2、空标签	<!ELEMENT element-name (#PCDATA)//文本元素
3、混合标签 <!ELEMENT element-name (e1,e2)//混合元素

元素的限制

次数
0或者1:?
0或者n次:*
1到n次:+

//元素属性的定义
语法:<ATTLIST element-name att_name type desc>

属性类型:
ID  id类型
(男|女|未知) "男"  这里的意思是默认就是男  选择类型
CDATA 文本类型
IDREF id的依赖
reference 关联类型



属性的描述
#REQUIRED :必填
#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>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值