DTD元素定义和属性定义

说起DTD首先介绍一下xml文件的作用:

1.数据交互

2.做配置

一个标准的xml文件的格式一定要满足一下几点:

1.有且只有一个根元素

2.xml文件一定要区分大小写

3.正确使用结束标签

4.正确嵌套标签

5.使用合法的标签名(?,@这些符号是不合法的)

6.定义有效属性

了解以上后再来说说元素的定义吧!

1.xml文件元素的定义

首先,要定义xml文件元素必须加入DTD声明(<!DOCTYPE 根节点名称[ ]>),

然后在[]中定义元素,例如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app [
<!ELEMENT web-app (servlet+,servlet-mapping+)>
<!ELEMENT servlet (servlet-name+,servlet-class+)>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+)> 
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
]>
<web-app>
  <servlet>
  	<servlet-name>jrebelServlet</servlet-name>
  	<servlet-class>com.zking.xml.JrebelServlet</servlet-class>
  </servlet>
  <servlet>
  	<servlet-name>jrebelServlet2</servlet-name>
  	<servlet-class>com.zking.xml.JrebelServlet2</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>jrebelServlet</servlet-name>
  	<url-pattern>/jrebelServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>jrebelServlet2</servlet-name>
  	<url-pattern>/jrebelServlet2</url-pattern>
  	<url-pattern>/jrebelServlet3</url-pattern>
  </servlet-mapping>
</web-app>

2.xml文件元素的分类

1. EMPTY 空元素 例如:</br>

2.#PCDATA  文本元素  例如:<div>哈哈哈</div>

3.(e1,e2)混合元素  也就是元素里面包含其他元素 一个或多个

3.元素的限制

1.与(,)或(|)

2.次数 

2.1 (?)表示0或1次

2.2( * )表示0-N次

2.3 (+)表示1-N次

注意:元素分类时要用大写要用括号括起来(empty除外)

如果某个元素是混合元素,在括号内写元素时一定要按顺序,否则编译报错,如果某元素内有同一个元素出现两次,建议把它们移到一起,否则容易报错

写完约束后不能在xml文件内加入标签和内容,否则编译错误

4.xml文件元素属性的定义

语法:<!ATTLIST 元素名 属性>

属性类型

1.ID  表示唯一

2.(男|女)‘男’  二选一,有默认值

3.CDATA 文本类型

4.IDREF 依赖  引用已经出现过的类型

属性描述

1.#REQUIRED 必填

2.#IMPLIED  非必填

3.‘默认值’ 只有type为上面属性类型第二点的时候才能用

具体操作看以下代码:

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

注意:ID类型的内容不能包含 ‘/’ 符号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值