XML之DTD

简介: XML之DTD

XML之DTD详解

1.什么是XML

1.1 概念:

  • XML是一种标记语言,全称是可扩展标记语言(Extensible Markup Language),用于描述、存储和传输数据。XML被设计成具有自我描述性、通用性和可扩展性,它可以用于创建各种类型的文档和数据格式。 XML基于标记(tag),标记是由尖括号包围的元素名称和相关内容组成,就像这样:content。通过定义自定义标记和命名空间,XML可以支持任何语言或应用程序的数据表示和交换。许多应用程序使用XML来表示和交换数据,例如RSS订阅、SOAP协议、配置文件等。
  • xml用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。Xml是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

1.2 XML的特性和优势:

  • 自我描述性:XML文档包含自我描述的标记,可以帮助人们理解和识别标记的用途和含义。
  • 灵活性和可扩展性:XML可以根据需要定义自定义标记和命名空间,以适应不同的应用程序和需求。
  • 可移植性:XML文档可以在不同的平台和应用程序之间传输和共享,例如在Web浏览器中显示或在服务器之间传输。
  • 支持关系数据:XML还可以在文档中存储结构化数据,可以表示关系、层次结构以及其他结构。

总之,XML是一种强大的数据交换格式,可以帮助不同应用程序和平台之间实现数据的无缝交互。

2. XML的文档约束:

2.1 Schema

Schema是对XML文档结构的定义和描述,其主要的作用是用来约束XML文件,并验证XML文件有效性。

示例:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="note">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="to" type="xs:string"/>
        <xs:element name="from" type="xs:string"/>
        <xs:element name="heading" type="xs:string"/>
        <xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

2.2 DTD

DTD是定义XML的合法构建模块,它使用一系列的合法元素来定义文档结构。

示例:

<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to (#PCDATA)>
  <!ELEMENT from (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
]>

3. XML编写格式要求

  1. XML文件必须是一个完整的文档,必须包含根元素(root element),并且所有元素必须闭合。
  2. XML元素、属性、命名空间等名称必须符合XML命名规则。元素名和属性名必须以字母或下划线开始,后跟任意字母、数字、横线、句点和冒号。元素名和属性名不能以xml或XML开头,不能包含空格和其他无效字符。
  3. XML标记必须使用小于号(“<”)和大于号(“>”)进行包裹,例如:
<element>content</element>`
  1. XML元素必须有一个唯一的元素标识符(Element Identifier),可以是标记名或命名空间URL和标记名的组合。
  2. XML属性必须被包含在元素的开始标记中,属性值必须以单引号或双引号包围。
  3. XML元素的属性值必须符合XML规范,不能包含未转义的字符和元素闭合标记,否则会导致解析错误。
  4. XML中的空元素必须使用自闭合标记表示,例如:
<br/>
  1. XML注释以“”结束。
  2. XML文件可以使用UTF-8、UTF-16或ISO-8859-1等编码方式进行编码。

**总结:**XML编写格式要求符合XML命名规范,必须包含根元素,元素必须闭合、属性值必须用引号包装等。遵循良好的编码习惯可以使XML文件易于阅读、修改和维护。

5. XML的特殊字符

5.1 特殊字符

特殊字符 XML转义序列
& &amp
< &It
> &gt
" &quot
&apos

5.2 特殊字符的处理方法

  • 采用<![CDATA[ ]]>特殊标签,将包含特殊字符的字符串封装起来。
  • 使用XML转义序列表示这些特殊的字符,这5个特殊字符所对应XML转义序列

6. 什么是DTD

4.1 概念:

DTD是一种文档类型定义(Document Type Definition),用于定义XML文档结构和规则。它描述了XML文档应该包含哪些元素、属性和实体,以及它们之间的关系和约束条件。DTD定义了XML文档的结构和模式,提供了一种用于验证XML文档格式是否正确的方式。DTD通常作为一种单独的XML文档存在,通过DOCTYPE声明包含在XML文档中。

4.2 DTD元素和规则:

  • 元素(Element):描述XML文档中所允许的元素名称、元素类型和元素内容。
  • 属性(Attribute):描述XML文档中所允许的属性名称、属性类型和属性值。
  • 实体(Entity):定义在XML文档中使用的实体、实体引用和其他符号。
  • 实体(Entity):定义在XML文档中使用的实体、实体引用和其他符号。

总结:

DTD可以帮助开发者规范XML文档格式,并确保XML文档的结构和内容符合指定的模式和规则。在实际开发中,DTD常被用作验证XML文档格式是否正确的工具。

7. DTD的使用

7.1 在XMl中加入DTD声明

  • 内部的DOCTYPE声明

格式:

<!DOCTYPE 根元素 [元素声明]>
  • 外部文档声明

格式:

<!DOCTYPE 根元素 SYSTEM "文件名">

7.2 元素定义语法

格式:

<!ELEMENT 元素名称 元素类型>

7.3 元素分类

1. 空元素

格式:

<!ELEMENT 元素名称 EMPTY>
2. 文本元素

格式:

<!ELEMENT 元素名称 (#PCDATA)>
3. 混合元素

格式:

<!ELEMENT 元素名称 (子元素名称1,子元素名称2,...)>

7.4 元素的限制

限制 说明
表示内容的出现顺序必须与声明一致
| 表示两者或多个时只能出现一个
+ 表示元素出现1次或多次
* 表示元素出现0次或多次
表示元素出现1次或1次

7.5 属性定义语法

7.5.1 基本语法

格式:

<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
7.5.2 属性类型
类型 描述
CDATA 值为字符数据 (character data)
(en1|en2|…) 此值是枚举列表中的一个值
ID 值为唯一的 id
IDREF 值为另外一个元素的 id
IDREFS 值为其他 id 的列表
NMTOKEN 值为合法的 XML 名称
NMTOKENS 值为合法的 XML 名称的列表
ENTITY 值是一个实体
ENTITIES 值是一个实体列表
NOTATION 此值是符号的名称
xml: 值是一个预定义的 XML 值
7.5.3 设置说明
解释
属性的默认值
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性值是固定的

8. 综合案例

<?xml version="1.0" encoding="UTF-8"?>
<!-- config标签:可以包含0~N个action标签 -->
<!DOCTYPE config [
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ATTLIST action 
    path CDATA #REQUIRED
    type CDATA #REQUIRED
>
<!ATTLIST forward 
    name CDATA #REQUIRED
    path CDATA #REQUIRED
    redirect (true|false) 'true'
>
]>
<config>
  <!-- action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径 type:字符串,非空,子控制器的完整类名 -->
  <action path="/registerAction" type="test.action.RegisterAction">
    <forward name="success" path="/index.jsp" redirect="true" />
    <forward name="failed" path="/register.jsp" redirect="false" />
  </action>
  <action path="/loginAction" type="test.action.LoginAction">
    <forward name="a" path="/index.jsp" redirect="false" />
    <forward name="b" path="/welcome.jsp" redirect="true" />
  </action>
</config>
目录
相关文章
|
XML 存储 数据可视化
XML DTD原理及使用
是一种可扩展的标记语言,用于存储和交换数据,它被设计成具有简单、易于理解的格式,并能够方便地在不同的系统和应用程序之间共享数据。XML的语法规则类似于HTML,但XML的目的不仅仅是用于显示数据,更是用于描述数据的结构和关系。与HTML相比,XML更加严格和规范,它需要通过或RELAX NG等方式定义文档的结构,同时还可以使用命名空间和XSLT等技术来处理和转换XML文档。独立于任何特定的操作系统、平台或开发环境。可以与许多不同的编程语言和应用程序进行交互。
|
12月前
|
XML 开发框架 JSON
J2EE基础XML(dtd)
J2EE基础XML(dtd)
59 0
|
XML 存储 Java
XML之dtd
XML之dtd
109 0
|
XML 存储 开发框架
J2EE之XML(dtd篇超详细)
J2EE之XML(dtd篇超详细)
56 0
|
XML JSON 数据格式
XML之DTD
XML之DTD
58 0
|
3月前
|
XML 数据格式
DTD和XML Schema之间的区别?
【8月更文挑战第22天】
57 0
|
6月前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
109 0
|
XML 数据管理 数据处理
XML入门,之dtd属性与元素详解
XML入门,之dtd属性与元素详解
54 1
|
6月前
|
XML 设计模式 数据格式
XML中的DTD
XML中的DTD
38 0
|
11月前
|
XML 存储 设计模式
XML以及DTD详解
XML以及DTD详解
158 0