Web学习日记_06:XML约束之DTD约束

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31539817/article/details/83870345

1,为什么需要XML约束;


比如我们定义一个人的XML文件,里面包括人的元素姓名、年龄、性别等,但是如果你
写入猫这个元素的时候,运行XML可以正常显示。但是猫不是属于人所属的元素,不符合
人的现实关。所以这时候就需要XML约束来约束文档人的元素。

2,XML约束技术:DTD约束和schema约束

3,DTD约束


(1):实现DTD约束
        a:创建一个后缀名为.dtd的文件
        b:看XML文档中有几个元素,DTD文档就写几个<!ELEMENT>
        c;判断元素是简单元素还是复杂元素,简单元素没有子元素,复杂元素有子元素或者孙元素。
            -简单元素:<!ELEMENT (#PCDATA)>
            -复杂元素:<!ELEMENT 元素名称 (子元素名称一,子元素名称二)>

            注:元素名称和冒号间有空格
        d:引用dtd文件:<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
        注;在浏览器打开是是看不出来约束的,浏览器只是负责校验XML但是不能校验DTD,
                所以这是需要工具eclipse。


                
4、dtd的三种引入方式


    (1)引入外部的dtd文件
        <!DOCTYPE 根元素名称 SYSTEM "dtd路径">
    (2)使用内部的dtd文件
        - <!DOCTYPE 根元素名称 [
            <!ELEMENT person (name,age)>
            <!ELEMENT name (#PCDATA)>
            <!ELEMENT age (#PCDATA)>
        ]>

    (3)使用外部的dtd文件(网络上的dtd文件)
        <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
        - 后面学到框架 struts2 使用配置文件 使用 外部的dtd文件
        - <!DOCTYPE struts PUBLIC   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    
           "http://struts.apache.org/dtds/struts-2.0.dtd">

5、使用dtd定义元素


    * 语法: <!ELEMENT 元素名 约束>

    * 简单元素:没有子元素的元素
        <!ELEMENT name (#PCDATA)>
        *** (#PCDATA): 约束name是字符串类型
        *** EMPTY : 元素为空(没有内容)
            - <sex></sex>
        *** ANY:任意
    * 复杂元素:
        <!ELEMENT person (name,age,sex,school)>
            - 子元素只能出现一次
        * <!ELEMENT 元素名称 (子元素)>

        * 表示子元素出现的次数
            + : 表示一次或者多次
            ? :表示零次或者一次
            * :表示零次或者多次
        
        * 子元素直接使用逗号进行隔开 ,
            ** 表示元素出现的顺序

        * 子元素直接使用|隔开
            ** 表示元素只能出现其中的任意一个


    
6、使用dtd定义属性


    * 语法: <!ATTLIST 元素名称
            属性名称 属性类型 属性的约束
         >
    
    * 属性类型
        - CDATA: 字符串
            -     <!ATTLIST birthday
                ID1 CDATA #REQUIRED
            >

        - 枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个
            ** 红绿灯效果
            ** (aa|bb|cc)
            - <!ATTLIST age
                ID2 (AA|BB|CC)  #REQUIRED
            >

        - ID: 值只能是字母或者下划线开头
            - <!ATTLIST name 
                ID3 ID   #REQUIRED
            >
    
    * 属性的约束
        - #REQUIRED:属性必须存在

        - #IMPLIED:属性可有可无

        - #FIXED: 表示一个固定值 #FIXED "AAA"
            - 属性的值必须是设置的这个固定值
            - <!ATTLIST sex
                ID4 CDATA #FIXED "ABC"
            >
        - 直接值
            * 不写属性,使用直接值
            * 写了属性,使用设置那个值
            - <!ATTLIST school
                ID5 CDATA "WWW"
            >
 

7:,定义实体

<!ENTITY 实体 “内容”>

XML引用:&实体

实体的定义要定义在dtd文件内,如果不定义在dtd文件内

,有些浏览器不显示;

猜你喜欢

转载自blog.csdn.net/qq_31539817/article/details/83870345