XML之DTD约束

一、文档声明

1.  内部DTD(在XML文档内部嵌入DTD,只对当前XML有效)

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <!DOCTYPE 根元素名称 [...//具体语法]>
    <根元素名称>
        ....
    </根元素名称>

2.  外部DTD-本地DTDDTD文档在本地系统上,公司内部自己项目使用

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE 根元素名称 SYSTEM "DTD文件路径">
    <根元素名称>
        ....
    </根元素名称>

3.  外部DTD-公共DTDDTD文档在网络上,一般都有框架提供

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文件的URL">
    <根元素名称>
        ...
    </根元素名称>

二、元素声明

定义元素语法:<!ELEMENT 元素名  元素描述>
         元素名:自定义
         元素描述包括:
            符号和数据类型
            常见符号: ?  *  +  ()  | ,
            常见数据类型: #PCDATA 表示内容是文本,不能是子标签        
符号符号类型描述示例
问号b表示该对象可以出现,但只能出现一次(篮球?)
*星号b表示该对象可以出现,可以出现任意次,也可以是零次(运动*)
+加号b表示该对象可以出现,最少出现一次,也可以出现多次(成员+)
()括号b表示用来给元素分组

(足球|羽毛球|乒乓球),

(铅球|篮球),网球

|竖条b表示在列出的对象中选择一个(乒乓球|篮球)
,逗号b表示对象必须按指定的顺序出现(乒乓球,篮球,羽毛球)

三、属性声明

    语法    : <!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">

四、实例

1.实例1

   	<stus>
   		<stu>
   			<name>mark</name>
   			<age>18</age>
   		</stu>
   	</stus>
   	<!-- xml文档里面直接嵌入DTD的约束法则 -->
   	<!DOCTYPE stus [
   		<!ELEMENT stus (stu)>
   		<!ELEMENT stu (name,age)>
   		<!ELEMENT name (#PCDATA)>
   		<!ELEMENT age (#PCDATA)>
   	]>

2.实例2

<?xml version="1.0" encoding="UTF-8"?>
<!--
	模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。
	格式如下:
	<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
-->
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>

<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>

<!ATTLIST web-app version CDATA #IMPLIED>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值