XML-DTD约束

目录:
1、 什么是格式良好XML
2、 在XML加入DTD声明
3、 元素定义的语法
4. 元素的分类
5. 元素的限制
6. 属性定义的语法
7. XML中的特殊符号

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

dtd
是xml配置文件的约束技术中的一种
web.xml 配置tomcat的一些东西

schema --》xsd文件

xml的用途?
1、做配置
2、做数据传输

html与xml区别?
约束的差异性

html是超文本
xml是可拓展标记语言
xml能够通过字符串表示对象的结构

一、 什么是格式良好且有效的XML

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

代码演示:

<?xml version="1.0" encoding="UTF-8"?>
<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>

二、 在XML加入DTD声

<!DOCTYPE root[]>

三、元素定义的语法

 <!ELEMENT element-name (type)>

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

四、元素的分类

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

五、元素的限制

简单元素:没有子元素的元素 <!ELEMENT 元素名 约束> 如:<!ELEMENT name (#PCDATA)>
     约束: (#PCDATA): 约束name是字符串类型
         EMPTY : 元素为空(没有内容)
           ANY:任意类型
复杂元素:有子元素的元素 <!ELEMENT 元素名称 (子元素)> 如:<!ELEMENT person (name+,age?,sex*,school)>
        子元素后面的符号表示子元素出现的次数  + :表示一次或者多次
                          ? :表示零次或者一次
                          * :表示零次或者多次
                           无 :子元素只能出现一次
子元素直接使用逗号进行隔开 ,表示元素出现的顺序
          子元素直接使用|隔开,表示元素只能出现其中的任意一个

代码演示:

<!DOCTYPE persons [
	<!ELEMENT persons (person*) ><!-- +代表出现1~n次,*代表出现0~n次 -->
	<!ELEMENT person (name,age,contact,br?) > <!-- 混合元素     ?表示:0或1-->
	<!ELEMENT name (#PCDATA) >  <!-- #PCDATA表示文本元素 -->
	<!ELEMENT age (#PCDATA) >
	<!ELEMENT contact (phone|email) >  <!-- ,表示 :并且   |表示:或者 -->
	<!ELEMENT phone (#PCDATA) >
	<!ELEMENT br EMPTY >  <!-- EMPTY表示空元素 -->
	<!ELEMENT email (#PCDATA) >
]>

六、属性定义的语法

<!ATTLIST element-name att_name type >

语法: <!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
    属性类型: CDATA: 字符串 如:<!ATTLIST birthday ATT CDATA #REQUIRED>
           枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个 。如<!ATTLIST age ATT2 (AA|BB|CC) #REQUIRED>
           ID: 值只能是字母或者下划线开头 <!ATTLIST name ATT3 ID #REQUIRED>
      属性的约束:   #REQUIRED:属性必须存在
             #IMPLIED:属性可有可无
#FIXED: 表示一个固定值 <!ATTLIST sex ATT4 CDATA #FIXED "ABC">
             直接值: 不写属性,使用直接值,写了属性,使用设置那个值 <!ATTLIST school ATT5 CDATA "WWW">

注意:ATTLIST 是 attributeList 的缩写

图解:
在这里插入图片描述

代码演示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
<!ELEMENT persons (person*) ><!-- +代表出现1~n次,*代表出现0~n次 -->
<!ELEMENT person (name,age,contact,br?) > <!-- 混合元素     ?表示:0或1-->
<!ELEMENT name (#PCDATA) >  <!-- #PCDATA表示文本元素 -->
<!ELEMENT age (#PCDATA) >
<!ELEMENT contact (phone|email) >  <!-- ,表示 :并且   |表示:或者 -->
<!ELEMENT phone (#PCDATA) >
<!ELEMENT br EMPTY >  <!-- EMPTY表示空元素 -->
<!ELEMENT email (#PCDATA) >
<!ATTLIST person 
	pid ID #REQUIRED 
	sex (男|女) '男'
	qq  CDATA  #IMPLIED
	parent IDREF  引用
>
<!-- ATTLIST 缩写前:attributeList -->
<!-- IDREF 引用 -->
<!-- #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>

七、XML中的特殊符号

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

config.xml 案例:

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

<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>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值