DTD约束

文章目录

  1. 什么是格式良好XML

  2. 在XML加入DTD声明

  3. 元素定义的语法

  4. 元素的分类

  5. 元素的限制

  6. 属性定义的语法

  7. XML中的特殊符号
    8.合法的XML
    9.DTD对config.xml限制

  8. 什么是格式良好XML

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

  1. 在XML加入DTD声明

1
3. 元素定义的语法

<!ELEMENT element-name (type)>

注:根标签也要定义!!!

  1. 元素的分类
<!ELEMENT element-name EMPTY>//空元素 <!ELEMENT element-name (#PCDATA)>//文本元素 <!ELEMENT element-name (e1,e2)>//混合元素
  1. 元素的限制
    , :顺序
    | :或
    次数: +(1~n次)
    *(0~n次)
    ?(0或1次)
    没有

6.属性定义的语法

att_name:属性名

<!ATTLIST element-name att_name type >

attribute

  1. 属性定义的语法

att_name:属性名

<!ATTLIST element-name att_name type >

attribute
类型:
ID :唯一
(男|女) :列表
“值” :默认值
CDATA :文本
IDREF :外键
#REQUIRED :不为空
#IMPLIED :允许为空
empty :空

  1. XML中的特殊符号

.&(逻辑与) & <(小于) <
(大于) >
"(双引号) "
'(单引号) ’

8.合法的XML

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

9.DTD对config.xml限制

<?xml version="1.0" encoding="UTF-8"?>
<!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 (true|false) "true"

	>	
]>

	<!--
		config标签:可以包含0~N个action标签
	-->
<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值