XML约束之DTD

本文介绍了XML的特点,强调其作为传输数据的语言和自我描述性。重点讲解了XML中的约束,包括DTD(文档类型定义)和Schema约束。阐述了DTD的作用,如何在XML文档中声明,元素定义语法,元素分类及限制,属性定义语法,并举例说明了不同类型的元素和属性限制。同时,提到了XML中的特殊符号和几个DTD约束的实战案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML的UML视图

在这里插入图片描述
XML的特点:

  1. XML 指可扩展标记语言(EXtensible Markup Language)
  2. XML 是一种标记语言,很类似 HTML
  3. XML 的设计宗旨是传输数据,而非显示数据
  4. XML 标签没有被预定义,需要自行定义标签
  5. XML 被设计为具有自我描述性
  6. XML 是 W3C 的推荐标准

XML中的约束(DTD约束和Schema约束)

什么是格式良好XML
1.1 有且只有一个根元素
1.2 XML标签大小写正确区分
1.3 正确使用结束标签
1.4 正确嵌套标签
1.5 使用了合法的标签名
1.6 定义有效的属性

DTD约束:
1.文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

2.DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

Schema约束:
1.XML Schema 是基于 XML 的 DTD 替代者。

2.XML Schema 描述 XML 文档的结构。

3.XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。

DTD约束

1.在XML加入DTD声明

格式:
在这里插入图片描述
2.元素定义的语法

<!ELEMENT element-name (type)>

3.元素的分类(type)

3.1 空元素

<!ELEMENT element-name EMPTY>

3.2 文本元素

<!ELEMENT element-name (#PCDATA)>

3.3 混合元素

<!ELEMENT element-name (e1,e2)>

4.元素的限制

元素约束:子元素的列表,将可以包含的子元素用小括号括起来子元素之间使用逗号“,”进行分割:子元素必须按照顺序出现 使用竖线“|”进行分割,子元素只能出现其中的一个 #PCDATA 表明包含标签体

次数:
1.+,表示出现1~n次;
2.*,表示出现0~n次;
3.?,表示0次或1次(如果不写?号,默认出现一次)

例:<!ELEMENT element-name (type*)>

5.属性定义的语法
格式:

<!ATTLIST element-name att_name type >

ATT是attribute的缩写,LIST是集合的意思

类型(type):

1.ID - 该属性的值必须是唯一的。 不能在文档中使用的其他元素或属性中重复使用。
2.IDREF – 此属性引用文档中属于 ID 类型的另一个属性值。
3.CDATA – 此属性将只包含字符数据。

6. XML中的特殊符号
在这里插入图片描述

7.代码演示:

案例1(DTD对元素限制):

<?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 email (#PCDATA)>
	<!ELEMENT phone (#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(DTD对属性限制):

<?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 email (#PCDATA)>
	<!ELEMENT phone (#PCDATA)>
	<!ELEMENT br EMPTY>
	
	<!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>

案例3(DTD对config.xml限制):

<?xml version="1.0" encoding="UTF-8"?>
	<!--
		config标签:可以包含0~N个action标签
		action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径
		type:字符串,非空,子控制器的完整类名
	-->
<!DOCTYPE config[
	<!ELEMENT config (action*)>
	<!ELEMENT action (forward*)>
	<!ELEMENT forward EMPTY>
	
	<!ATTLIST action
		path CDATA #REQUIRED
		type CDATA #REQUIRED
	>
	<!ATTLIST forward
		name CDATA #REQUIRED
		path CDATA #REQUIRED
		redirect (false|true) "false"
	>
]>

<config>
	<action path="/registerAction" type="test.action.RegisterAction">
		<forward name="success" path="/index.jsp" redirect="true" />
		<forward name="failed" path="/register.jsp" redirect="false" />
	</action>
	<action path="/loginAction" type="test.action.LoginAction">
		<forward name="a" path="/index.jsp" redirect="false" />
		<forward name="b" path="/welcome.jsp" redirect="true" />
	</action>
</config>
内容概要:本文档详细介绍了基于Google Earth Engine (GEE) 构建的阿比让绿地分析仪表盘的设计与实现。首先,定义了研究区域的几何图形并将其可视化。接着,通过云掩膜函数和裁剪操作预处理Sentinel-2遥感影像,筛选出高质量的数据用于后续分析。然后,计算中值图像并提取NDVI(归一化差异植被指数),进而识别绿地及其面积。此外,还实现了多个高级分析功能,如多年变化趋势分析、人口-绿地交叉分析、城市热岛效应分析、生物多样性评估、交通可达性分析、城市扩张分析以及自动生成优化建议等。最后,提供了数据导出、移动端适配和报告生成功能,确保系统的实用性和便捷性。 适合人群:具备一定地理信息系统(GIS)和遥感基础知识的专业人士,如城市规划师、环境科学家、生态学家等。 使用场景及目标:①评估城市绿地分布及其变化趋势;②分析绿地与人口的关系,为城市规划提供依据;③研究城市热岛效应及生物多样性,支持环境保护决策;④评估交通可达性,优化城市交通网络;⑤监测城市扩张情况,辅助土地利用管理。 其他说明:该系统不仅提供了丰富的可视化工具,还集成了多种空间分析方法,能够帮助用户深入理解城市绿地的空间特征及其对环境和社会的影响。同时,系统支持移动端适配,方便随时随地进行分析。用户可以根据实际需求选择不同的分析模块,生成定制化的报告,为城市管理提供科学依据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值