XML_DTD约束

XML_DTD约束

  • 框架的由来
    就是由多种设计模式配合形成的
    特定的框架处理特定问题
    底层是通过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="12345" parent="p2">
  <name>张三</name>
  <age>18</age>
  <contact>
   <phone>12345678</phone>
  </contact>
  <br/>
 </person>
 <person pid="p2">
  <name>张大明</name>
  <age>35</age>
  <contact>
   <email>24235435@qq.com</email>
  </contact>
 </person>
</persons>

二.在XML加入DTD声明

 <!DOCTYPE root[]>

三.元素定义的语法

 <!DOCTYPE root[
       <!ELEMENT element-name (type)>
       注:根标签也要定义!!!
       有多少个标签就声明多少个ELEMENT !
]>

四.元素的分类

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

五.元素的限制

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

六、属性定义的语法

<!ATTLIST 标签名 属性名1 属性类型 属性说明 >

属性类型可以是:
(1)CDATA:最普通的字符串;
(2)ENUMERATED (DTD没有此关键字),表示枚举,即(值1|值2|值3),需要括 号,只能在其中选择一个值
(3)ID:属性值需要以字母或下划线开头,取值不能重复;

属性说明可以是:
(1)#REQUIRED:必须设置;
(2)#IMPLED:可选值,表示该属性可有可无;
(3)#FIXED:固定值,通常语法为:#FIXED “固定值”
(4)直接值:表示属性的取值为该默认值

具体代码如下:

<?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
 >
]>
<!-- ctrl+shift+x/y -->
<persons>
 <person pid="p1" sex="男" qq="sdfsf" parent="p2">
  <name>张三</name>
  <age>18</age>
  <contact>
   <phone>1234567</phone>
  </contact>
  <br/>
 </person>
 <person pid="p2">
  <name>张大明</name>
  <age>35</age>
  <contact>
   <email>123456@qq.com</email>
  </contact>
 </person>
</persons>

七. XML中的特殊符号

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

DTD限制config.xml案例:

<?xml version="1.0" encoding="UTF-8"?>
 <!--
  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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值