DTD介绍
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
XML 简介
XML 被设计用来传输和存储数据。
HTML 被设计用来显示数据。
XML 指可扩展标记语言(eXtensible Markup Language)。
可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。
什么是 XML?
- XML 指可扩展标记语言(EXtensible Markup Language)。
- XML 是一种很像HTML的标记语言。
- XML 的设计宗旨是传输数据,而不是显示数据。
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准。
XML的能干什么?
数据交换:XML 可以作为一种中立的、通用的数据交换格式,用于各种系统之间的数据传输和数据交换,如 Web 服务、数据集成、数据接口和 ETL 工具等。
流程编排:XML 可以将复杂的业务流程进行描述和编排,包含流程的节点、条件、分支和合并等,与 BPM(Business Process Management)相关的工具和标准都使用了 XML,如 BPEL、BPMN、XPDL 等。
配置文件:XML 可以用于系统的配置文件,包括 Web 应用程序中的 web.xml、Hibernate 中的 hibernate.cfg.xml、Spring 中的 applicationContext.xml 等,XML 能够在系统运行时对配置进行解析和动态更新。
消息传递:XML 可以作为一种消息传递格式,如 SOAP 协议中用于消息传递的 XML、消息队列中使用的 XML 消息格式等。
数据存储:XML 可以作为一种本地数据存储格式,如 Eclipse 可以使用 XML 作为本地存储格式,也可以用于序列化和反序列化数据。
Web 标准:XML 作为 Web 发展的重要组成部分,产生了一系列标准和技术,如 XML、DTD、XML Schema、XSLT、XPath、XQuery、RSS、Atom 等,这些标准和技术对现代 Web 技术的发展有着深远的影响。
总之,XML 能够描述和处理各种形式的数据和信息,具有广泛的应用领域和重要的价值。
一.标准的xml格式
1.有且只有一个根元素
2.xml标签大小写正确区分
3.正确使用结束标签
4.正确嵌套标签
5.使用合法的标签名
6.定义有效的属性
XML 声明
XML 声明文件的可选部分,如果存在需要放在文档的第一行,如下所示:
<?xml version="1.0" encoding="utf-8"?>
二.元素的定义
2.1 什么是 XML 元素?
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
一个元素可以包含:
- 其他元素
- 文本
- 属性
- 或混合以上所有...
2.2 XML 命名规则
XML 元素必须遵循以下命名规则:
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母 xml(或者 XML、Xml 等等)开始
- 名称不能包含空格
可使用任何名称,没有保留的字词。
2.3 元素的分类
<!ELEMENT element-name EMPTY>//空元素
<!ELEMENT element-name(#PCDATA)>//文本元素
<!ELEMENT element-name(e1,e2)>//混合元素
2.4元素的限制
如果混合标签内有多个子标签用“ ,”隔开。
存在是非标签用“ | ”隔开(两个标签的情况下)。
允许标签出现零次或者一次用 “ ?”。
允许标签出现零次或者N次用 “ * ”。
允许标签出现一次或者N次用 “ + ”。
2.5元素注意事项
一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:
- 区分大小写,例如,<P>和<p>是两个不同的标记。
- 不能以数字或"_" (下划线)开头。
- 不能以xml(或XML、或Xml 等)开头。
- 不能包含空格。
- 名称中间不能包含冒号(:)
三.属性的定义
3.1属性语法:
<!ATTLIST element-name att_name type desc>
3.2属性类型type
ID : 它是用来指定唯一元素.
IDREF : 它是用来引用已命名为另一种元素的ID.
IDREFS : 这是用来表示一个元件的所有ID.
ENTITY : 表示该属性将代表文件中的外部实体.
ENTITIES : 它表示该属性表示文档中的外部实体.
NMTOKEN : 它类似于CDATA对哪些数据可以是属性的一部分的限制.
NMTOKENS : 它类似于CDATA对哪些数据可以是属性的一部分的限制.
3.3属性描述
#REQUIRED:表示该属性是必须的,即在该元素中必须定义该属性,并且不能省略。
#IMPLIED:表示该属性是可选的,即在该元素中可以定义该属性,也可以不定义。如果没有定义该属性,则使用DTD中规定的默认值。
3.4 避免 XML 属性的注意事项
因使用属性而引起的一些问题:
- 属性不能包含多个值(元素可以)
- 属性不能包含树结构(元素可以)
- 属性不容易扩展(为未来的变化)
属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。