XML DTD Schema

本文详细介绍了XML、DTD(Document Type Definition)和Schema,包括格式良好XML的定义、XML加入DTD声明的方式、元素和属性的定义语法、特殊符号转义以及DTD的外部引用。通过多个案例展示了如何使用DTD来限制XML文档的结构和属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 数据库--约束

1. 什么是格式良好XML
  1.1 有且只有一个根元素
  1.2 XML标签大小写正确区分
  1.3 正确使用结束标签
  1.4 正确嵌套标签
  1.5 使用了合法的标签名(A-Za-z0-9_-)
  1.6 定义有效的属性
 


  注1:什么是有效的XML
       

2. 在XML加入DTD声明
   <!DOCTYPE 根元素[]>


3. 元素定义的语法
   <!ELEMENT element-name (type)>
                          

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


5. 元素的限制
   ,        顺序
   |        或
   次数: +  1~n
         *  0~n
         ?  0~1
       没有 1次
     


6. 属性定义的语法
   <!ATTLIST element-name 
     att_name type
   >
         
   ID            
   (男|女) "男"  枚举
   CDATA        
   IDREF

   #REQUIRED/#IMPLIED

7. XML中的特殊符号
   &(逻辑与)  &amp;        
   <(小于)    &lt;        
   >(大于)    &gt;        
   "(双引号)  &quot;      
   '(单引号)  &apos;


   &变量名;

8. 外部DTD
   *.dtd
   SYSTEM
   PUBLIC

案例一 合法的XML

案例二 DTD对元素限制

案例三 web.xml文件中servlet标签出错分析

案例四 DTD对属性限制

 

 写一个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 (false|true) "false"
      >
]>


<!--
        config标签:可以包含0~N个action标签
    -->
<config>
    <!--
        action标签:可以饱含0~N个forward标签
        path:以/开头的字符串,并且值必须唯一 非空
        type:字符串,非空
    -->
    <action path="/regAction" type="test.RegAction">
        <!--
            forward标签:没有子标签; 
            name:字符串,同一action标签下的forward标签name值不能相同 ;
            path:以/开头的字符串
            redirect:只能是false|true,允许空,默认值为false
        -->
        <forward name="failed" path="/reg.jsp" redirect="false" />
        <forward name="success" path="/login.jsp" redirect="true" />
    </action>

    <action path="/loginAction" type="test.LoginAction">
        <forward name="failed" path="/login.jsp" redirect="false" />
        <forward name="success" path="/main.jsp" redirect="true" />
    </action>
</config>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值