zoukankan      html  css  js  c++  java
  • xml的dtd约束

    一.xml约束的简介

    Xml约束就是书写xml的要求、规则、束缚,在写xml文件之前先定义好的一套规则,然后在xml文件中引用这套规则,那么该xml文件的书写必须满足规则。

    xml约束的常用约束有:dtd约束、schema约束

    下面简单说一下dtd约束的定义和使用

    注意:下面所以的标签和元素都是指同一个东西,就是xml文件中自定义的标签

    二.dtd约束文件的定义

    1)dtd约束简介

    DTD(Document Type Definition),全称为文档类型定义。dtd约束的文件有其自己独特的语法结构:

    2)自定义dtd约束文件

    下面是自定义的一个dtd约束文件,dtd约束文件的后缀名是.dtd(下面dtd文件名是:my.dtd)

    <?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT wh0320 (student+,teacher+)>
    <!ELEMENT student (name,age,gender)>
    <!ELEMENT teacher (name,age,gender)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    <!ELEMENT gender (#PCDATA)>
    
    <!--
        ATTLIST 表示属性列表 
            student 当前属性写在哪个标签上
            id表示属性名称,可以任意命名,注意命名规范
            ID表示属性的类型
            #REQUIRED表示必填 属性如果是ID类型就必须设置为必填
    -->
    <!ATTLIST student id ID #REQUIRED>

    <?xml version="1.0" encoding="uft-8"?> 第一行是文档声明,version是xml文件的版本信息,encoding是xml文件的字符编码

    <!ELEMENT wh0320 (student+,teacher+)> 表示在wh0320标签下面可以有1到多个student和teacher子标签,注意()之前有个空格

    <!ELEMENT student (name,age,gender)> 表示在student这个标签下面还有name,age,gender这个三个子标签,默认只出现一次

    <!ELEMENT name (#PCDATA)> 表示在name标签中可以输入文本内容

    <!ATTLIST student id ID #REQUIRED> 表示在student标签下面有一个属性名为id的属性,值的类型是ID,#REQUIRED表示这个属性对student标签来说是必写的属性

    3)dtd约束的语法介绍【定义元素和属性】

    ①声明xml元素的语法:

    <!ELEMENT 元素名称 (子标签名称.....) >   表示在xml文件中这个标签下面有些子标签

    或者<!ELEMENT 元素名称 (#PCDATA)>   表示在xml文件中这个标签下面没有子标签,直接在该标签里面填写文本

    注意:上面的语法中元素名称和()之间必须要有一个空格,如果没有约束无效

    在子标签后面也可以使用下面符号:

    *:表示该子标签可以自这个标签中出现0次或多次

    +:表示该子标签可以在这个标签中出现一次或多次

    :表示该字标签可以在这个标签中出现0次或一次

    注意:标签名后面没有这些符号默认出现一次

    ②声明元素属性的语法:

    <!ATTLIST 元素名称 属性名1 属性类型 设置说明 ....>  表示在指定的元素中设置属性,可以在在一个标签中设置多个属性

    设置说明:
    #REQUIRED:必须设置该属性
    #IMPLIED:属性不是必需的,可以设置也可以不设置

    #FIXED:说明该属性的取值固定为一个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值 
    直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。

    常用属性值类型

    CDATA:表示属性值为普通文本字符串。
    ID:值为唯一的 id
    ENTITY(实体):值是一个实体

    三.dtd约束的使用

    dtd约束定义好了以后,可以在xml文件中引用这个dtd约束文件,引用以后,xml文件的标签的定义必须和dtd约束的规则一致

    下面是自定义的xml文件中,引用dtd文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE wh0320 SYSTEM "my.dtd">
    <wh0320>
        <student id="stu_01">
            <name>赵敏</name>
            <age>23</age>
            <gender></gender>
        </student>
        <teacher>
            <name>张三丰</name>
            <age>110</age>
            <gender></gender>
        </teacher>
    </wh0320>

    引用外部dtd文件的声明语法:<!DOCTYPE 根元素 SYSTEM "文件路径">

    注意:①引入文件的声明语句必须在xml文档声明的语句下面

               ②后面的文件路径,如果dtd约束文件和xml文件在同一个文件夹下,可以不写路径直接使用文件名

  • 相关阅读:
    SOAP webserivce 和 RESTful webservice 对比及区别(转载)
    JavaWeb工程中web.xml基本配置(转载学习)
    iframe 自适应
    SQL分组求每组最大值问题的解决方法收集 (转载)
    关于试用jquery的jsonp实现ajax跨域请求数据的问题
    解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问题。
    Hadoop编译源码(面试重点)
    Hadoop学习(二)自己编译Hadoop安装包
    代理模式实现方式及优缺点对比
    zookeeper
  • 原文地址:https://www.cnblogs.com/qiaoqiaoli/p/10845368.html
Copyright © 2011-2022 走看看