XML_DTD约束

XML_DTD约束

  1. 设计模式
    它是用来解决现实中出现的一类问题,固定的解决方案,
    Java的解决方案23种,被统称为23种设计模式
  2. 框架的由来
    就是由多种设计模式配合形成的
    特定的框架处理特定问题
    底层是通过Java的反射机制来完成
  3. dtd
    是xml配置文件的约束技术中的一种(还有另一种:schema—>(对应) xsd文件)
    web.xml 配置tomcat的一些东西(例如:servlet,监听器,过滤器)
  4. xml的用途?
    ①配置文件(几乎99%的框架都有配置文件)
    ②数据传输

html与xml区别?
如图:
在这里插入图片描述
如图可以看出在html里可以自定义标签而在web中不可以自定义
结论:约束的差异性
html是超文本
xml是可拓展标记语言,xml能够通过字符串表示对象的结构

什么是良好格式的XML
  1. 有且只有一个根元素
  2. XML标签大小写正确区分
  3. 正确使用结束标签
  4. 正确嵌套标签
  5. 使用了合法的标签名
  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 element-name EMPTY>//空元素(IMPLIED不是必须) <!ELEMENT element-name (#PCDATA)>//文本元素 <!ELEMENT element-name (e1,e2)>//混合元素

元素的限制
,(顺序)、|(或,多选一)、?(0或1次),(10=0,0次或多次), +(1+0=1,1次或多次)
示例:

<?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 email (#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>

属性定义语法(DTD对属性的限制)
基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
属性类型:ID/CDATA/ENUM (男|女) “男”
设置说明:#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 email (#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>

特殊符号转义
&(逻辑与) --> &
>(大于) --> >
<(小于) --> <
‘(单引号) --> '
“(双引号) --> "

work:

<?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 CDATA #REQUIRED
>
]>
	<!--
		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、付费专栏及课程。

余额充值