xml详解二

xml 的约束:
    *为什么需要约束?
    例如:
    定义一个person的xml文件,只想要这个文件里面保存人的信息,“name,age”等
    但是如果在xml文件中写一个<猫>,也可以正常显示,因为符合语法规范。但是
    猫肯定不是人的信息,xml的标签是自定义的,需要技术来规定xml中只能出现的
    元素,这个时候需要约束。
    
    xml的约束分类: DTD约束 与 SCHEMA约束。
    
dtd的快速入门:
    创建一个文件 后缀名 .dtd
    
    步骤:
        1、看xml中有多少个元素,在dtd文件中写几个<!ELEMENT>
        2、判断元素是否为简单元素还是复杂元素
            -复杂元素:有子元素的元素
            <!ELEMENT 元素名称 (子元素)>
            -简单元素:没有子元素
            <!ELEMENT 元素名称 (#PCDATA)>
        3、需要在xml文件中引入dtd文件
            <!DOCTYPE 根元素名称 SYSTEM "dtd元素路径名称">
    *打开xml文件使用浏览器打开,浏览器只负责校验xml语法,不负责校验约束
    
    *如果想要校验xml的约束,需要使用集成工具(myeclipse,idear)
    
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">
        
使用dtd定义元素
    *语法:<!ELEMENT 元素姓名 约束>
        
    *简单元素:没有子元素的元素
        **<!ELEMENT name (#PCDATA)>
        **(#PCDATA):约束name时字符串类型
        **EMPTY :元素为空 (没有内容)
            <sex></sex>
        **ANY :任意值
    复杂元素: 
        <!ELEMENT person (name,age,sex)>
            -子元素只能出现一次
        *<!ELEMENT 元素名称 (子元素)>
                
        *表示子元素出现的次数:
            +:表示一次或多次
            ?:表示零次或一次
            *:表示零次或多次
        *子元素直接用逗号进行分割:
            **表示元素出现的顺序
        *子元素直接用| 进行分割:
            **表示元素只能出现其中的一个
                
使用dtd定义属性:
    *语法:<!ATTLIST 元素名称
            属性名称 属性类型 属性约束
    >
        
    属性类型:
        -CDATA:字符串
        -枚举:表示只能在一定范围内出现值,但每次只能出现其中的一个值
            **红绿灯效果
            **(aa|bb|cc)
        ID:值只能是字母或者下划线开头
            -<!ATTLIST name
                ID3 ID #REQUIRED
            >
    属性的约束
        -#REQUIRED :表示属性必须出现
        -#IMPLIED :表示属性可有可无
        -#FIXED :表示一个固定值
            *属性值必须是你提前设置好的
        -直接值 :
            *不写属性,使用直接值
            *写了属性,使用写的值
                -<!ATTLIST school
                    IDS CDATA "www"
                >
实体的定义:
    *语法:<!ENTITY 实体名称 “实体值”>
    **<!ELEMENT TEST "HAHAHAS">
    **使用实体 &实体名称; 例如:&TEST;
    
    **注意:
        *定义实体需要写在内部dtd里面,
        如果写在外部dtd里面,在某些浏览器,不容找不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶不起来的小白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值