博客
关于我
【PHP XML与dtd概述【完整版】】
阅读量:441 次
发布时间:2019-03-06

本文共 1772 字,大约阅读时间需要 5 分钟。

XML文件简介

对于XML,这是一个不陌生的话题。HTML→xhtml→XML,这是HTML发展的历史轨迹。XML不仅仅是简单的标记语言,它还可以作为配置文件或小型数据库来使用。这使得它在各种应用场景中都有其独特的价值。

XML文档的基本特性

  • 版本:文档必须符合XML1.0规范。
  • 编码:默认使用UTF-8编码。
  • standalone:可以选择standalone="yes",表示文档独立使用DTD约束。
  • 根元素:每个XML文档必须有且仅有一个根元素。
    • 根元素的标签必须放在所有其他元素的标签之前。
    • 根元素的结束标签必须放在所有其他元素的结束标签之后。

XML文件的命名规范

  • 标签区分大小写。
  • 元素名称不能以数字或下划线开头。
  • 元素名称中不能包含空格或冒号。
  • 元素名称中不能包含特殊字符,除非使用实体引用。

XML文件的注释和属性值

  • XML文件使用HTML文件的注释方式。
  • 属性值必须用双引号包裹。

DTD文件概述

DTD的概念

DTD(Document Type Definition,文档类型定义)是XML技术中用来约束XML文档书写规范的一种机制。它可以确保XML文档的结构和内容符合预期。

DTD在PHP中的应用

在编程中,DTD可以提供以下约束:

  • 元素的存在性和顺序。
  • 元素的内容类型(如是否可以包含子元素、文本或其他内容)。
  • 属性的定义和约束。

DTD的必要性

举例:如果XML文件中定义了<person>元素,里面包含<name>、<age>等元素,但还包含<除毛净重>和<面积>,这显然不合理。DTD可以帮助避免这样的错误。

DTD文档的语法

元素定义
  • NAME是元素名称。
  • CONTENT表示元素的内容类型,可能包括:
    • EMPTY:该元素不能包含子元素或文本。
    • ANY:该元素可以包含任何定义的元素内容。
    • #PCDATA:允许包含任何字符数据,但不能包含子元素。
简单DTD示例
组合示例
  • ?表示该元素可以出现0次或1次。
  • *表示该元素可以出现0次或多次。
  • +表示该元素必须出现至少一次。
通配符
  • +:表示1-n个(必须至少出现一次)。
  • *:表示0-n个(可以出现0次或多次)。
  • ?:表示0或1次。
属性定义
属性类型
  • CDATA:属性值可以是任意字符。
  • ID:属性值必须是唯一的,且以字母开头。
  • IDREF/IDREFS:属性值必须在XML文档中有定义。
  • Emumerated:属性值来自预定义的枚举列表。
  • ENTITY/ENTITIES:属性值可以引用已定义的实体。
属性特点
  • #REQUIRED:属性必须存在。
  • #IMPLIED:属性可以存在或不存在。
  • #FIXED value:属性值是固定的。
  • DEFAULT value:属性值的默认值。

引入DTD约束

内部DTD和外部DTD

  • 内部DTD:将DTD定义写在XML文件中。
  • 外部DTD:将DTD单独写在一个文件中,并通过引用方式引入XML文件。

引入DTD的语法

  • 内部DTD示例:
  • 外部DTD示例:

内外部DTD结合使用


JS验证XML规范性的案例

DTD控制.dtd文件内容

Person.xml文件内容

张三
16
男
张燕
17
女
赵六
20
男

JS验证代码


XML与DTD的实际应用

产品目录DTD示例


总结

通过上述内容,我们可以看到XML与DTD的重要性。DTD为XML文件提供了结构和内容上的约束,从而确保XML文档的规范性和一致性。在实际开发中,合理设计DTD可以显著提升项目的可维护性和稳定性。虽然对于普通开发人员来说,编写DTD可能不是每天都需要的事情,但理解其原理和用法是非常有帮助的。

转载地址:http://vwcyz.baihongyu.com/

你可能感兴趣的文章
Python单元测试unittest实战
查看>>
Python单元测试-模拟VS补丁
查看>>
python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
查看>>
Python十进制&;包提供错误的结果
查看>>
Python化身“安全老中医”:一键搞定工控系统漏洞,从零基础到精通,收藏这篇就够了!
查看>>
Python加速运行技巧
查看>>
python办公自动化基础遍历文件夹
查看>>
python办公自动化基础输出文件和文件夹
查看>>
python办公自动化基础搜索文件
查看>>
python知识:@classmethod和@staticmethod的异同
查看>>
python前端之css
查看>>
Python制作进度条,原来有这么多方法
查看>>
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>