• XML配置文件(DTD详细讲解)


    目录

    一.XML介绍

    1.什么是XML文件?

    2.XML文件的作用

    3.XML格式

    二.元素定义

    1.什么是DTD

    2.DTD声明语句

    3.元素的分类

    3.4.元素限制 

    三.属性定义 

    1.语法

    2.属性类型

    四.XML所存在问题


    一.XML介绍

    1.什么是XML文件?

    Extensible Markup Language(可扩展标记语言),简称XML,类似于HTML,用来传输和存储数据。

    可扩展标记语言是什么?

    • 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。例如:table标签,浏览器解析以后,生成一个表格。

    2.XML文件的作用

    • 用来保存数据,而且这些数据具有自我描述性
    • 可以作为项目或者模板的配置文件
    • 可以用来做网络传输数据的数据(但是现在用的不多,目前都是使用JSON为主)
    • XML里面的DTD可以定义规范,作用相当于接口,即只有使用这个规范才可以实现XML的功能
    • 为了便于不同应用、不同平台之间的数据共享和通信。

    3.XML格式

    • 有一个根元素(根元素就像HTML中的<html></html>标签一样,所有的其他标签都是写在该标签中的,所有该标签只能有一个)

    • XML标签是严格区分大小写的
    • 正确使用结束标签,有始有终(<html></html>就像是这样子有始有终)
    • 正确嵌套标签
    • 使用合法的标签名
    • 定义有效的属性

    二.元素定义

    1.什么是DTD

    • DTD的全称为Document Type Definition,是一种文件定义格式。
    • DTD规定了XML文件结构为XML文件提供了语法与规则。
    • 在DTD中定义XML文件的结构,然后按照DTD的声明来编写XML文件。就好像编程语言中的函数定义,在使用函数时要根据函数声明的格式进行来引用。

    PS:简而言之,DTD就是用来约束XML文档的,使其在一定的规范下使用,除了DTD技术外,还有Schema技术,也是用于约束XML文档的。


    2.DTD声明语句

      在XML中加入DTD声明 <!DOCTYPE root[]>,root---->根元素

    例如:

    该代码中的根元素为<persons></persons>,那么我们语句改为<!DOCTYPE persons[]>。

    然后我们定义规范时的代码都是写在DTD声明语句中的。

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE persons[]>
    3. <persons>
    4. <person pid="p1" sex="男" qq="aaa" parent="p2">
    5. <name>张小明</name>
    6. <age>10</age>
    7. <contact>
    8. <phone>1234567</phone>
    9. </contact>
    10. <br/>
    11. </person>
    12. <person pid="p2">
    13. <name>张大明</name>
    14. <age>35</age>
    15. <contact>
    16. <email>123@qq.com</email>
    17. </contact>
    18. </person>
    19. </persons>

    3.元素的分类

    3.1 <ELEMENT 元素名称 EMPTY>空元素

        什么是为空元素?

    •  没有内容的标签就被称为空元素。
    •  由于HTML元素的内容是开始标签与结束标签之间的内容。而某些 HTML 元素具有空内容。(empty content),那些含有空内容的HTML元素,就是空元素。空元素是在开始标签中关闭的。

     ps:我随便定义一个标签<abc/>这就是一个空元素,我们常见的html的一些标签也是空元素,例如<br><hr><input>这些都是空元素。

    3.2 <ELEMENT 元素名称 (#PCDATA)> 文本元素

    所谓文本元素,就是在该标签体中可以放入文本型的数据

    例如:

    <name>张小明</name>

      3.3 <ELEMENT 元素名称 (e1,e2)> 混合元素

    混合元素指的是该元素下面还有别的子元素

    例如:

     <persons><contact>元素下面就有很多子元素

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE persons[
    3. ]>
    4. <persons>
    5. <person pid="p1" sex="男" qq="aaa" parent="p2">
    6. <name>张小明</name>
    7. <age>10</age>
    8. <contact>
    9. <phone>1234567</phone>
    10. </contact>
    11. <br/>
    12. </person>
    13. <person pid="p2">
    14. <name>张大明</name>
    15. <age>35</age>
    16. <contact>
    17. <email>123@qq.com</email>
    18. </contact>
    19. </person>
    20. </persons>

    3.4.元素限制 

    • 元素符号

          1.与( ,)

          2.非( | )

    • 元素出现次数

          1.  0或1:?

          2.  0-N: * 

          3.  1-N:+

    元素定义代码实操:

    打好了详细的备注啦,都是上面刚刚所涉及到的内容

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE persons[
    3. <!ELEMENT persons (person+)> <!--persons有1-N个person元素-->
    4. <!ELEMENT person (name,age,contact,br*)> <!--person元素下有name,age,contact,br这些子元素-->
    5. <!ELEMENT name (#PCDATA)> <!--name为文本元素-->
    6. <!ELEMENT age (#PCDATA)> <!--age为文本元素-->
    7. <!ELEMENT contact (phone|email*)> <!--contact下面可以有phone元素或者email元素-->
    8. <!ELEMENT phone (#PCDATA)> <!--phone为文本元素-->
    9. <!ELEMENT email (#PCDATA)> <!--email为文本元素-->
    10. <!ELEMENT br EMPTY> <!--br为空元素-->
    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>

    三.属性定义 

    1.语法

     <!ATTLIST 元素名字 属性名称  类型 描述>

    2.属性类型

    •  ID :给节点赋一个id号,id号不可以重复
    • CDATA :文本型
    • IDREF: 引用类型,输入需要引用的元素的ID
    • (男|女):要么是男要么是女,也可以设置别的,比如1|2,要么为1要么为2

    3.属性描述

    • #REQUIRED:必填
    • #IMPLED:非必填
    • "默认值",只有像(男|女)类型时,描述才可以用默认值的方式。

    属性定义代码实操

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE persons[
    3. <!ELEMENT persons (person+)> <!--persons有1-N个person元素-->
    4. <!ELEMENT person (name,age,contact,br*)> <!--person元素下有name,age,contact,br这些子元素-->
    5. <!ELEMENT name (#PCDATA)> <!--name为文本元素-->
    6. <!ELEMENT age (#PCDATA)> <!--age为文本元素-->
    7. <!ELEMENT contact (phone|email*)> <!--contact下面可以有phone元素或者email元素-->
    8. <!ELEMENT phone (#PCDATA)> <!--phone为文本元素-->
    9. <!ELEMENT email (#PCDATA)> <!--email为文本元素-->
    10. <!ELEMENT br EMPTY> <!--br为空元素-->
    11. <!--属性描述代码实操-->
    12. <!ATTLIST person
    13. pid ID #REQUIRED
    14. sex (男|女) "男"
    15. qq CDATA #IMPLIED
    16. parent IDREF #IMPLIED
    17. >
    18. ]>
    19. <persons>
    20. <person pid="p1" sex="男" qq="193968" parent="p2">
    21. <name>张小明</name>
    22. <age>10</age>
    23. <contact>
    24. <phone>1234567</phone>
    25. </contact>
    26. <br/>
    27. </person>
    28. <person pid="p2">
    29. <name>张大明</name>
    30. <age>35</age>
    31. <contact>
    32. <email>123@qq.com</email>
    33. </contact>
    34. </person>
    35. </persons>

    四.XML所存在问题

    我们设置规范就是为了让我们没有按照规范写时,立马提示我们有问题,但是如果怎么写都没有问题的话,大家按照下面步骤来设置。

    先打开Window ==> Preferences ==>Validation,然后勾选图片所选中的。在点击应用,然后重启eclipse。

     今天的学习就到这里啦。

  • 相关阅读:
    djangoday16
    [watevrCTF 2019]Baby RLWE
    .NET静态代码织入——肉夹馍(Rougamo) 发布1.2.0
    Hello Vue!
    thinkphp:数据库查询二,嵌套别的表的查询(别的表做子查询)
    ES6知识总结
    佩戴最稳固的蓝牙运动耳机、好用的运动耳机推荐
    室内温度控制仿真(Simulink+PLC)
    1010 Radix
    温故而知新
  • 原文地址:https://blog.csdn.net/m0_65725031/article/details/125574886