• DTD和XSD的区别


    在结构化文档中,定义文档类型有两种技术:DTD和XSD。今天来讨论什么是DTD,什么又是XSD,以及他们之间的区别。

    虽然DTD(Document Type Definition)和XSD(XML Schema Definition)都与标记语言,称为XML(可扩展标记语言)相关,但它们在很多方面都有所不同。

    DTD和XSD之间的主要区别是DTD对XML的控制较少,而XSD提供了对XML的更好控制。DTD是一种用于定义XML结构的文档类型,XSD是用于描述XML结构和内容的方法。

    1. 什么是DTD?

    DTD是文档类型定义的缩写,是一种用于定义XML文件结构的文档类型。XML语言的属性由DTD精确定义。它主要用于检查XML文件结构的语法和有效性。
    DTD可以进一步分为两部分,即外部DTD和内部DTD。在XML文件中声明的DTD元素称为内部DTD,而在一些其他文件中宣布的DTD元素则称为外部DTD。

    DTD源自SGML(标准通用标记语言)语法。它不支持命名空间和数据类型,对XML的控制较少。DTD也不可扩展。

    使用DTD的人不能在其中使用强类型(即:不支持数据类型)。然而,它有时确实充当XML的扩展版本。DTD学习起来并不简单。DTD正是定义SGML文档类型的声明。

    DTD属于第一代技术。

    DTD例子:

     
         
         
         
         
         
         
         
         
         
    ]>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. 什么是XSD?

    XSD是XML Schema定义,是一种用于描述XML文档及其内容的方法。XML文档的所有属性和元素的规则都由XSD精确定义。它主要用于检查XML文件的词汇和结构的正确性。

    XSD文件有两种类型,即简单类型和复杂类型。允许具有基于文本的元素、包含较少属性和子元素且不能为空的类型称为简单类型XSD。允许保存多个属性和元素、包含子元素且不能为空的类型称为复杂类型XSD。

    XML用于编写XSD。它支持元素和属性的命名空间和数据类型。XSD是可扩展的,使我们能够更好地控制XML文档。

    XSD被精确地用于描述XML文档中的元素。学习XSD相对来说比DTD更容易,因为在这里,我们不需要学习新的语言。

    XSD属于第二代技术。

    XSD例子:

    
    
    
      
        
          
          
          
          
        
      
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3. DTD和XSD之间的主要区别

    1. DTD代表文档类型定义,而XSD代表XML Schema定义。
    2. DTD主要用于定义XML文件的结构,而XSD主要用于描述XML文件的内容和结构。
    3. DTD是不可扩展的,而XSD是可扩展的。
    4. DTD源自SGML(标准通用标记语言)语法,而XSD是用XML编写的。
    5. DTD不支持命名空间,而XSD支持命名空间。
    6. DTD不支持数据类型,而XSD支持元素和属性的数据类型。
    7. DTD对XML的控制较少,而XSD对XML提供了更多的控制。
    8. DTD比XSD更难学习,而XSD很容易学习,因为这里我们不需要学习新语言。

    4. 参考资料

    • https://dl.acm.org/doi/abs/10.1145/1017074.1017095
    • https://www.650.org/en/what-is/what-is-the-difference-between-dtd-and-xsd
    • https://blog.metapercept.com/what-is-the-difference-between-a-schema-and-a-dtd
  • 相关阅读:
    【BOOST C++ 19 应用库】(5)序列数据封装和优化
    WordPress批量修改数据库内文章内容文字关键字标题
    【数据库系统概论】触发器
    vue + springboot前后端分离图片无法实现上传
    企业微信hook接口协议,ipad协议http,发送大视频文件
    MaxKey单点登录认证系统v3.5.10GA发布
    Java基础知识点汇总
    ATFX汇市:美国5月PCE数据来袭,EURUSD或迎剧烈波动
    27、Flink 的SQL之SELECT (Pattern Recognition 模式检测)介绍及详细示例(7)
    前端 - 嵌套函数跳出外部函数
  • 原文地址:https://blog.csdn.net/long_jj/article/details/128108464