• DTD建模


    目录

    一、什么是XML?

    二、XML的作用?

    三、标准的XML格式

    四、元素定义

    在XML加入DTD声明

    元素的分类

    元素的限制

    🔶元素限制的符号

    🔶元素出现的次数

     五、属性定义

    语法

    属性类型type

    属性描述

    如果xml文件报错怎么办?


    一、什么是XML?

    XML,Extensible Markup Language,扩展性标识语言。文件的后缀名为:.xml。就像HTML的作用是显示数据,XML的作用是传输和存储数据。

    二、XML的作用?

    为了便于不同应用、不同平台之间的数据共享和通信。

     

    具体点的作用为:

    (1)可作为一种简单的数据库,存储并检索数据;

    (2)传输约定格式的文件;

    (3)做软件的配置文件。【配置文件:保存软件设置的文件】

    三、标准的XML格式

    1. 有且只有一个根元素
    2. XML标签大小写正确区分
    3. 正确使用结束标签
    4. 正确嵌套标签
    5. 使用了合法的标签名
    6. 定义有效的属性

    四、元素定义

    • 在XML加入DTD声明

    <!DOCTYPE root[]>
    • 元素的分类

    1. <!ELEMENT element-name EMPTY>//空元素
    2. <!ELEMENT element-name (#PCDATA)>//文本元素
    3. <!ELEMENT element-name (e1,e2)>//混合元素
    • 元素的限制

    🔶元素限制的符号

    1. 与:(,)
    2. 非:(|)

    🔶元素出现的次数

         0或1次: ?

         0~N次: *

         1~N次: +

    示例:

      建立xml约束,首先得分析xml结构。
        1、根标签persons有子标签
        2、persons有子标签    混合标签(有子标签)
        3、person有子标签:name、age、contact、br、混合标签(有子标签)
        4、name,age没有子标签 混合标签(有子标签)
        5、contact有子标签 混合标签(有子标签)
        6、phone没有子标签,有内容,文本标签

        7、email没有子标签,有内容,文本标签
        8、br既没有子标签也没有文本内容 空标签

     代码如下:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE persons[
    3. <!ELEMENT persons (person+)>
    4. <!ELEMENT person (name,age,contact,br?)>
    5. <!ELEMENT name (#PCDATA)>
    6. <!ELEMENT age (#PCDATA)>
    7. <!ELEMENT contact (phone|email)>
    8. <!ELEMENT phone (#PCDATA)>
    9. <!ELEMENT email (#PCDATA)>
    10. <!ELEMENT br EMPTY>
    11. ]>
    12. <persons>
    13. <person>
    14. <name>张小明</name>
    15. <age>10</age>
    16. <contact>
    17. <phone>1234567</phone>
    18. </contact>
    19. <br/>
    20. </person>
    21. <person>
    22. <name>张大明</name>
    23. <age>35</age>
    24. <contact>
    25. <email>123@qq.com</email>
    26. </contact>
    27. </person>
    28. </persons>

     五、属性定义

    • 语法

    <!ATTLIST element-name att_name type desc>
    • 属性类型type

    ID

    (男|女)

    CDATA(文本)

    IDREF(引用)

    reference

    • 属性描述

    #REQUIRED:必填

    #IMPLIED:非必填

    ‘默认值’

    注意:只有type为 (男|女)类型时,desc才可以用默认的方式

     示例

    属性约束

    pid 属性类型为ID 必填

    sex 属性类型为男女的选择 可设置默认值

    qq 属性类型为文本 非必填

    parent (引用某个id)属性类型为文本 非必填

     代码如下:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE persons[
    3. <!ELEMENT persons (person+)>
    4. <!ELEMENT person (name,age,contact,br*)>
    5. <!ELEMENT name (#PCDATA)>
    6. <!ELEMENT age (#PCDATA)>
    7. <!ELEMENT contact (phone|email)>
    8. <!ELEMENT phone (#PCDATA)>
    9. <!ELEMENT email (#PCDATA)>
    10. <!ELEMENT br EMPTY>
    11. <!ATTLIST person
    12. pid ID #REQUIRED
    13. sex (男|女) '男'
    14. qq CDATA #IMPLIED
    15. parent IDREF #IMPLIED
    16. >
    17. ]>
    18. <persons>
    19. <person pid="p1" sex="男" qq="aaa" parent="p2">
    20. <name>张小明</name>
    21. <age>10</age>
    22. <contact>
    23. <phone>1234567</phone>
    24. </contact>
    25. <br/>
    26. </person>
    27. <person pid="p2">
    28. <name>张大明</name>
    29. <age>35</age>
    30. <contact>
    31. <email>123@qq.com</email>
    32. </contact>
    33. </person>
    34. </persons>

    当我们不按约束填写时 就会造成报错 如下图

    注意:元素名称与属性名称之间要有空格!!!

    如果xml文件报错怎么办?

    Window ==> Preferences ==>Validation 然后根据如下图所示勾选(默认是全选),最后应用关闭。注意:设置完成后后重启一下eclipse

  • 相关阅读:
    简单搭建redis cluster集群
    毕业设计-基于机器视觉深度学习船只船舶检测
    灵活用工小程序开发制作功能介绍
    深度学习--实战 LeNet5
    盘点JAVA中延时任务的几种实现方式
    什么是未来数据中心?
    【kafka】kafka介绍
    [Linux]----文件操作(重定向+缓冲区)
    【python爬虫】——历史天气信息爬取
    Linux下安装MySQL你又踩过多少坑【宇宙最全教程】
  • 原文地址:https://blog.csdn.net/weixin_62270300/article/details/125525582