• 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文件在同一个文件夹下,可以不写路径直接使用文件名

  • 相关阅读:
    linux一切皆文件之tcp socket描述符(三)
    linux一切皆文件之Unix domain socket描述符(二)
    linux一切皆文件之文件描述符(一)
    k8s之使用secret获取私有仓库镜像
    https、ssl、tls协议学习
    k8s网络之calico学习
    泛型的原理、应用、约束、缓存
    C#中Unity对象的注册方式与生命周期解析
    监听EF执行的sql语句及状态
    递归一个List<T>,可自己根据需要改造为通用型。
  • 原文地址:https://www.cnblogs.com/qiaoqiaoli/p/10845368.html
Copyright © 2020-2023  润新知