javaXML之DTD

本文主要介绍了XML中的DTD(Document Type Definition),包括DTD的基本概念、作用,以及XML和HTML的区别。文中详细阐述了DTD的写法,元素定义方法,如元素的限定和属性定义,并通过一个Config案例说明了DTD的实际应用。

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

xml文件之DTD约束

1.什么是DTD?

DTD全称为,Document Type Definition,中文翻译为文档类型定义,是一套为了进行程序间的数据交换而建立的关于标记符的语法规则

2.什么是框架?

就是由多种设计模式配合形成的
特定的框架处理特定问题
底层是通过Java的反射机制来完成

3.关于XML

1.什么是XML?
XML 指可扩展标记语言(EXtensible Markup Language)
2.XML的作用?
做配置(几乎百分之九十九的框架都有配置文件,也就是XML文件)
做数据传输
3.XML和HTML的区别?

  1. 约束的差异性
  2. html是超文本
  3. xml是可拓展标记语言
  4. xml能够通过字符串表示对象的结构

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

<?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 br EMPTY>
 <!ELEMENT email (#PCDATA)>
]>
<persons>
	<person >
		<name>老国王</name>
		<age>100</age>
		<contact>
			<phone>123456789</phone>
		</contact>
		<br/>
	</person>
	<person>
		<name>国王</name>
		<age>35</age>
		<contact>
			<email>1234567851@qq.com</email>
		</contact>
	</person>
</persons>

5.XML中的特殊符号

   &(逻辑与)  &amp;        
   <(小于)    &lt;        
   >(大于)    &gt;        
   "(双引号)  &quot;      
   '(单引号)  &apos;

4.关于DTD

4.1 DTD的写法:

<!ELEMENT 元素名 (元素描述)>

4.2 关于元素的定义方法也有不同

   <!ELEMENT element-name EMPTY>//空元素
   <!ELEMENT element-name (#PCDATA)>//文本元素
   <!ELEMENT element-name (e1,e2)>//混合元素

4.3 关于元素的限定
, 代表并且
| 代表或者
次数:
+, 代表1~n
*, 代表0~n
?, 代表0或1
没有,代表空
例如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
 <!ELEMENT persons (person*)><!-- 定义根标签,内容为0-N个person -->
 <!ELEMENT person (name,age,contact,br?)><!-- 定义元素person,内容为包含name,age,contact,br一个或者没有 -->
 <!ELEMENT name (#PCDATA)><!-- 定义元素name,内容为文本元素 -->
 <!ELEMENT age (#PCDATA)><!-- 定义元素age,内容为文本元素 -->
 <!ELEMENT contact (phone|email)><!-- 定义元素contact,内容为包含phone元素或者包含email元素 -->
 <!ELEMENT phone (#PCDATA)><!-- 定义元素phone,内容为文本元素 -->
 <!ELEMENT br EMPTY><!-- 定义元素br,内容为空 -->
 <!ELEMENT email (#PCDATA)><!-- 定义元素email,内容为文本元素 -->
]>

4.4 DTD元素还可以定义属性

   <!ATTLIST element-name 
     att_name type
   >

type类型如下:
attribute
ID
(男|女)
CDATA
IDREF
reference
#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 (phone|email)>
 <!ELEMENT phone (#PCDATA)>
 <!ELEMENT br EMPTY>
 <!ELEMENT email (#PCDATA)>
 <!ATTLIST person
   pid ID #REQUIRED
   sex (男|女) '男'
   qq CDATA #IMPLIED
   parent IDREF #IMPLIED
 >
]>
<persons>
	<person pid="p1" sex="男" qq="aaa" parent="p2">
		<name>老国王</name>
		<age>100</age>
		<contact>
			<phone>123456789</phone>
		</contact>
		<br/>
	</person>
	<person pid="p2">
		<name>国王</name>
		<age>35</age>
		<contact>
			<email>1234567851@qq.com</email>
		</contact>
	</person>
</persons>

5.Config案例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config [
 <!ELEMENT config (action*)><!-- 定义根元素,内容是可以包含0-N个action标签 -->
<!ELEMENT action (forward*)><!-- 定义根元素,内容是可以包含0-N个foward标签 -->
 <!ATTLIST action
   path CDATA #REQUIRED
   type CDATA #REQUIRED
 >
 <!ATTLIST forward
   name CDATA #REQUIRED
   path CDATA #REQUIRED
   redirect (true|false) 'false'
 >
 <!--
		path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径
		type:字符串,非空,子控制器的完整类名
	-->
]>
<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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值