博客
关于我
【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/

你可能感兴趣的文章
openshift搭建Istio企业级实战
查看>>
Openstack企业级云计算实战第二、三期培训即将开始
查看>>
OpenStack安装部署实战
查看>>
OpenStack的基本概念与架构详解
查看>>
openstack虚拟机迁移live-migration中libvirt配置
查看>>
ORACEL学习--理解over()函数
查看>>
Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
查看>>
Oracle GoldenGate Director安装和配置(无图)
查看>>
oracle script
查看>>
Oracle SOA Suit Adapter
查看>>
Oracle Spatial空间数据库建立
查看>>
UML— 活动图
查看>>
Oracle 写存储过程的一个模板还有一些基本的知识点
查看>>
oracle 创建字段自增长——两种实现方式汇总
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
oracle 可传输的表空间:rman
查看>>
oracle 学习
查看>>
ORACLE 客户端工具连接oracle 12504
查看>>
oracle 行转列
查看>>
Oracle 表
查看>>