XML DTD原理及使用

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 是一种可扩展的标记语言,用于存储和交换数据,它被设计成具有简单、易于理解的格式,并能够方便地在不同的系统和应用程序之间共享数据。XML的语法规则类似于HTML,但XML的目的不仅仅是用于显示数据,更是用于描述数据的结构和关系。与HTML相比,XML更加严格和规范,它需要通过或RELAX NG等方式定义文档的结构,同时还可以使用命名空间和XSLT等技术来处理和转换XML文档。独立于任何特定的操作系统、平台或开发环境。可以与许多不同的编程语言和应用程序进行交互。

 一、XML的概述

XML(Extensible Markup Language)是一种可扩展的标记语言,用于存储和交换数据,它被设计成具有简单、易于理解的格式,并能够方便地在不同的系统和应用程序之间共享数据。

XML的语法规则类似于HTML,但XML的目的不仅仅是用于显示数据,更是用于描述数据的结构和关系。与HTML相比,XML更加严格和规范,它需要通过DTD、XML SchemaRELAX NG等方式定义文档的结构,同时还可以使用命名空间和XSLT等技术来处理和转换XML文档。

XML最初的设计目的是为了解决不同系统之间的数据交换问题,因此它具有以下优点:

    1. 独立于任何特定的操作系统、平台或开发环境。
    2. 可以与许多不同的编程语言和应用程序进行交互。
    3. 具有良好的扩展性,可以根据需要创建新的自定义元素或标记。
    4. 支持多种字符集和编码格式。
    5. 数据和结构分离,使得数据交换更加灵活和方便。

    尽管XML并不是HTML的替代品,但是它在许多领域中都得到了广泛的应用,如Web服务、SOAP、RESTful API、配置文件、数据存储等。

    1、XML的作用

    XML(Extensible Markup Language)是一种可扩展的标记语言,其主要作用是用于数据交换和存储。下面是XML的主要作用:

      1. 数据交换:XML最初的设计目的就是为了解决不同系统之间的数据交换问题。XML可以作为一种通用格式,用于将数据从一个系统传递到另一个系统,因为XML可以表示和传输各种类型的数据,如文本、数字、日期、图像等。更重要的是,XML具有良好的扩展性,可以根据需要创建自定义元素或标记。
      2. 数据存储:XML也可以用于数据存储,可以将一些重要的数据存储在XML文件中,便于数据的读取、修改和传输。XML也可以被用来作为配置文件,例如在开发网络应用程序时,可以使用XML来定义应用程序的配置信息,并将这些信息保存在一个XML文件中。
      3. 数据显示:与HTML不同,XML并不是用于数据显示的,而是用于描述数据的结构和关系。但是,可以使用XSLT(Extensible Stylesheet Language Transformations)将XML转换成其他格式,例如HTML或PDF等,以达到数据可视化的目的。
      4. Web服务:XML也是Web服务的关键技术之一。Web服务使用一种XML格式的协议来交换数据,如SOAP(Simple Object Access Protocol)、REST(Representational State Transfer)等。

      总的来说,XML在数据交换、数据存储、配置文件、Web服务等方面都具有很重要的应用价值。

      2、XML的格式

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

        XML(Extensible Markup Language)的标准格式如下:

        <?xml version="1.0" encoding="UTF-8"?>
        <root>
             <element attribute="value">Content</element>
             <empty-element />
        </root>

        image.gif

        XML文档的第一行指定了文档的版本号和字符编码,常见的字符编码包括UTF-8、UTF-16等。

        接下来是XML文档的根元素,它拥有一个或多个子元素,子元素可以有属性和内容,也可以没有内容。另外,XML中还有一种只有标签没有内容的元素,叫做空元素。

        在XML中,除了根元素外,其他所有元素必须被正确地嵌套,不能有重复或交叉等错误。同时,也必须对所有的元素和属性赋予一个明确的名称,这是一个XML文档的基本要求。

        除了上述基本结构,XML还可以通过DTD、XML Schema或RELAX NG等方式定义文档的结构,并可以通过命名空间和XSLT等技术来处理和转换XML文档。

        二、DTD的概述

        在XML中,DTD是用于定义XML文档结构的一种语法规则,它类似于一份合同或者规范,规定了XML文档中哪些元素可以出现,元素之间的顺序和关系等。

        DTD(Document Type Definition)被指定为一种描述XML文档结构的标准语法规则,它可以定义XML文档中各个元素的属性名称、类型和顺序,以及元素之间的关系,并且可以指定XML文档的实体和属性的值域等。

        一个DTD通常包括以下几部分:

          1. 声明根元素及其子元素
          2. 定义元素的属性及属性值
          3. 定义元素包含的子元素
          4. 定义实体

          DTD可以嵌入到XML文档中,或者作为一个独立的文件来引用。在XML文档中,可以通过使用 DOCTYPE 声明来指定相应的 DTD。

          DTD除了作为XML文档结构定义的一个语法规则外,还可以用于验证XML文档的合法性。在解析XML文档时,解析器会根据DTD定义的规则来验证XML文档是否符合规范的结构,并且对错误的XML文档进行报错处理。这样可以确保XML文档的正确性和可靠性,避免出现不符合XML规范的情况。

          1、元素的定义

          XML元素是XML文档的主要组成部分,用于描述文档的内容和结构。在DTD和XSD中,元素定义用于规定元素的名称、类型、限制和语义等方面。

          1、元素的分类

          在DTD中,元素定义用来定义XML文档中的元素。以下是一些常用的元素定义:

          <!ELEMENT> 该声明用于定义元素的内容。可以指定元素是空元素还是具有内容的元素,以及元素内容中允许的子元素和它们的顺序


          <!ELEMENT element-name (sub-element1, sub-element2, ...) >
          <!ATTLIST> 该声明用于定义元素的属性。可以指定属性的名称、类型、默认值和属性值的约束规则等。


          <!ATTLIST element-name attribute-name attribute-type attribute-default-value attribute-value-constraint>
          <!ENTITY> 该声明用于定义实体,可以将一段文本或一段XML代码定义为一个实体,在XML文档中使用实体引用来代替实体本身。


          <!ENTITY entity-name "entity-value">
          <!NOTATION> 该声明用于定义一些非XML数据类型,如图像、音频、视频等。这些数据类型可以由特定的程序或协议进行处理。


          <!NOTATION notation-name SYSTEM "notation-value">
          <!DOCTYPE> 该声明用于指定DTD的文件名或直接在文档中内嵌DTD。同时,也可以指定XML文档的声明部分以及DTD中所使用的实体和符号。


          <!DOCTYPE root-element SYSTEM "dtd-file-name.dtd">

          除了上述常见的元素定义,DTD还包括其他类型的声明,如注释、处理指令等。在DTD中,元素定义可以根据需要来进行扩展和定制,以满足不同的需求。

          代码示例:

          image.gif编辑

          2、元素的限制

          在DTD中,元素的限制可以使用多种方式来进行约束,以确保XML文档的正确性和一致性。以下是常用的元素限制:

          元素数量限制 通过使用“+”、“*”或“?”等符号来定义元素在文档中出现的次数。例如,“+”表示一个或多个,”*“表示零个或多个,而”“表示零个或一个


          <!ELEMENT element-name (sub-element1, sub-element2+)>
          子元素顺序限制 通过使用逗号分隔子元素名称来指定子元素的顺序。例如,”(a, b, c)”表示a元素必须在b元素之前,b元素必须在c元素之前。


          <!ELEMENT element-name (sub-element1, sub-element2, sub-element3)>
          元素内容限制 通过使用字符串或正则表达式等方式来限制元素内容的类型和格式。例如,“#CDATA”表示元素内容是一个包含任意字符的字符串,而“#IMPLIED”表示元素属性的默认值是不确定的


          <!ELEMENT element-name (#CDATA)>
          元素内容限制 通过使用“|”符号来指定元素名称的可选值,其中任意一个都可以用于这个元素。例如,”(a|b|c)“表示元素名称可以是a、b或c之一。


          <!ELEMENT element-name (a|b|c)>

          以上限制方式可以单独或组合使用,以满足XML文档的各种需求。通过正确的元素限制,可以保证XML文档的语义正确性、数据完整性和一致性。

          3、代码示例

          image.gif编辑

          2、属性的定义

          XML属性是元素的一部分,用于提供关于元素的额外信息。在DTD和XSD中,属性定义用于规定属性的类型、取值范围及其与元素之间的关系等方面。

          1、属性类型

          在DTD中,属性定义用于定义XML元素的属性类型和取值范围,以及默认值等信息。以下是一些常用的属性定义类型:

          1. CDATA:表示该属性值是一个包含任意文本字符的字符串。这是属性定义最常用的类型。

          2. ENUMERATION:表示该属性值必须是一个指定的枚举常量值之一。ENUMERATION类型典型的示例是布尔值,只允许取truefalse

          3. ID:表示该属性值必须是一个唯一标识符,用于表示XML文档中的一个唯一实体。

          4. IDREF:表示该属性值必须是另一个XML元素的ID值,用于表示XML文档中两个元素之间的关系

          5. IDREFS:表示该属性值是一组ID值,用于表示XML文档中多个元素之间的关系。

          6. NMTOKEN:表示该属性值必须是一个不包含空格等特殊字符的名称,并且不能以数字或特殊符号开头

          7. NMTOKENS:表示该属性值是多个不包含空格等特殊字符的名称,用空格或逗号分隔

          通过使用这些属性定义类型,可以定义各种类型的属性并对其进行约束。其中,CDATA类型是最常用的属性定义类型,而其他类型则常用于在XML文档中表示元素之间的关系和语义分析等方面。

          2、属性的描述

            1. #REQUIRED:表示该属性是必需的元素必须具有该属性,否则文档不符合DTD规则。
            2. #IMPLIED:表示该属性是可选的,元素可以具有该属性,也可以没有该属性(可有可无)。如果该属性没有在文档中出现,则使用DTD中为该属性定义的默认值。
            3. #FIXED value:表示该属性的值是固定值;值必须与DTD中定义的值相同,否则将被视为错误。
            4. #CDATA:表示该属性值是一个包含任意文本字符的字符串,即可以输入任意值

            3、代码示例

            image.gif编辑


            相关文章
            |
            5月前
            |
            XML 开发框架 JSON
            J2EE基础XML(dtd)
            J2EE基础XML(dtd)
            42 0
            |
            6月前
            |
            XML 存储 Java
            XML之dtd
            XML之dtd
            70 0
            |
            1天前
            |
            XML 存储 数据格式
            探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
            DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
            4 0
            |
            2月前
            |
            XML JavaScript 数据格式
            SAP UI5 XML Preprocessor 的工作原理和 instructions 指令详解
            SAP UI5 XML Preprocessor 的工作原理和 instructions 指令详解
            28 0
            |
            4月前
            |
            XML 设计模式 数据格式
            XML中的DTD
            XML中的DTD
            23 0
            |
            4月前
            |
            XML 存储 设计模式
            XML以及DTD详解
            XML以及DTD详解
            62 0
            |
            5月前
            |
            XML 存储 数据格式
            XML之DTD
            XML之DTD
            51 0
            |
            5月前
            |
            XML 存储 NoSQL
            XML中DTD的基本使用
            XML中DTD的基本使用
            62 0
            |
            6月前
            |
            XML 数据格式
            XML基础入门:关于DTD知识点
            XML基础入门:关于DTD知识点
            36 0
            |
            6月前
            |
            XML 存储 消息中间件
            XML DTD介绍以及应用
            DTD介绍 文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。 DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
            20 0

            热门文章

            最新文章

          1. 1
            Serverless 应用引擎产品使用之在函数计算中,数据库访问失败如何解决
            9
          2. 2
            Serverless 应用引擎产品使用之在阿里云函数计算中发现没有NAC(Native Application Component)选项,且无法自己上传MOD(模块)如何解决
            10
          3. 3
            Serverless 应用引擎操作报错合集之在阿里云函数计算中,调用了FC函数但是没有执行或者报错,并且在FC函数后台也看不到调用记录日志如何解决
            10
          4. 4
            Serverless 应用引擎操作报错合集之在阿里函数计算中,sd部署启动报错CAExited 报错信息“operation not permitted”如何解决
            8
          5. 5
            Serverless 应用引擎操作报错合集之在阿里函数计算中,SD Controlnet Depth 运行过程中出现错误“urllib3 v2.0 only supports OpenSSL 1.1.1+”如何解决
            10
          6. 6
            Serverless 应用引擎操作报错合集之在阿里云函数计算中,laravel zip包使用示例的start.sh脚本启动时出现错误代码如何解决
            10
          7. 7
            Serverless 应用引擎操作报错合集之在阿里云函数计算中,服务器调用FC函数时出现 "[Errno -3] Temporary failure in name resolution)" 错误如何解决
            8
          8. 8
            Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,部署过程中遇到错误代码如何解决
            12
          9. 9
            Serverless 应用引擎操作报错合集之在 Serverless 应用引擎中,遇到“没法通过 head 传递灰度标识”如何解决
            12
          10. 10
            Serverless 应用引擎操作报错合集之在阿里函数计算中,函数执行超时,报错Function time out after如何解决
            12
          11. 相关课程

            更多