DTD的编写

简介: DTD的编写

DTD文档格式


内部的 DOCTYPE 声明格式:

<?xmlversion="1.0"?>
<!DOCTYPEroot [
  <!ELEMENTroot (sonOne,sonTwo)>
  <!ELEMENTsonOne (#PCDATA)>
  <!ELEMENTsonTwo (grandsonOne,grandsonTwo)>
  <!ELEMENTgrandsonOne (#PCDATA)>
  <!ELEMENTgrandsonTwo (#PCDATA)>
]>
<root>
  <sonOne>第一个子元素</sonOne>
  <sonTwo>
    <grandsonOne>第一个孙元素</grandsonOne>
    <grandsonTwo>第二个孙元素</grandsonTwo>
  </sonTwo>
</root>

(注:内部引入没有测试出提示,不建议使用)


外部文档声明


假如 DTD 位于 XML 源文件的外部,需要在XML顶部引入DTD文件,引入格式:

<!DOCTYPE 根元素 SYSTEM"文件名">
<?xmlversion="1.0"?>
  <!ELEMENTroot (sonOne,sonTwo)>
  <!ELEMENTsonOne (#PCDATA)>
  <!ELEMENTsonTwo (grandsonOne,grandsonTwo)>
  <!ELEMENTgrandsonOne (#PCDATA)>
  <!ELEMENTgrandsonTwo (#PCDATA)>


使用外部的dtd文件(网络上的dtd文件)


<!DOCTYPE 根元素 PUBLIC"DTD名称""DTD文档的URL">


DTD 构建模块


  • 元素:元素可包含文本、其他元素或者是空的。
  • 属性:属性可提供有关元素的额外信息
    属性总是被置于某元素的开始标签中。属性总是以名称/值的形式成对出现的。
  • 实体:实体引用字符


实体引用

字符

实体引用

字符

&lt;

<

&gt;

>

&amp;

&

&quot; "

&apos;

’  



  • PCDATA:文本中的标签会被当作标记来处理,而实体会被展开


  • CDATA:文本中的标签不会被当作标记来对待,其中的实体也不会被展开。


元素


元素声明使用下面的语法:

<!ELEMENT 元素名称 类别>
或者
<!ELEMENT 元素名称 (元素内容)>


元素内容可以是:

空元素

< !ELEMENT 元素名称 EMPTY>

只有 PCDATA 的元素

< !ELEMENT 元素名称 (#PCDATA)>

带有任何内容的元素

< !ELEMENT 元素名称 ANY>

带有子元素

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

声明只出现一次的元素

< !ELEMENT 元素名称 (子元素名称)>

声明最少出现一次的元素

< !ELEMENT 元素名称 (子元素名称+)>

声明出现零次或多次的元素

< !ELEMENT 元素名称 (子元素名称*)>

声明出现零次或一次的元素

< !ELEMENT 元素名称 (子元素名称?)>

声明“非…/既…”类型的内容

< !ELEMENT note (to,(message|body))>(必须有to,必须有括号中一个)

声明混合型的内容

< !ELEMENT note (#PCDATA|message)*>(括号中其中一个必须出现零次或者多次)

属性


属性声明格式:

<!ATTLIST 元素名称 属性名称 属性类型 默认值>


属性类型的选项

类型

描述

CDATA

值为字符数据 (character data)

(en1|en2|…)

此值是枚举列表中的一个值

ID

值为唯一的 id

IDREF

值为另外一个元素的 id

IDREFS

值为其他 id 的列表

NMTOKEN

值为合法的 XML 名称

NMTOKENS

值为合法的 XML 名称的列表

ENTITY

值是一个实体

ENTITIES

值是一个实体列表

NOTATION

此值是符号的名称

xml:

值是一个预定义的 XML 值


默认值参数的选项


默认值

描述

#REQUIRED

属性值是必需的

#IMPLIED

属性不是必需的

#FIXED

属性值是固定的

#FIXED语法

<!ATTLIST 元素名称 属性名称 属性类型 #FIXED"value">


列举属性值

<!ATTLIST 元素名称 属性名称 (en1|en2|..) 默认值>


实体


  • 实体是用于定义引用普通文本或特殊字符的快捷方式的变量。
  • 实体引用是对实体的引用。
  • 实体可在内部或外部进行声明。


一个内部实体声明

<!ENTITY 实体名称 "实体的值">


一个外部实体声明

<!ENTITY 实体名称 SYSTEM"URI/URL">


目录
相关文章
|
XML 存储 数据可视化
XML DTD原理及使用
是一种可扩展的标记语言,用于存储和交换数据,它被设计成具有简单、易于理解的格式,并能够方便地在不同的系统和应用程序之间共享数据。XML的语法规则类似于HTML,但XML的目的不仅仅是用于显示数据,更是用于描述数据的结构和关系。与HTML相比,XML更加严格和规范,它需要通过或RELAX NG等方式定义文档的结构,同时还可以使用命名空间和XSLT等技术来处理和转换XML文档。独立于任何特定的操作系统、平台或开发环境。可以与许多不同的编程语言和应用程序进行交互。
|
XML 存储 Java
XML之dtd
XML之dtd
112 0
|
11月前
|
XML 存储 设计模式
XML以及DTD详解
XML以及DTD详解
166 0
|
XML 存储 NoSQL
XML中DTD的基本使用
XML中DTD的基本使用
99 0
|
XML 存储 数据格式
XML之DTD
XML之DTD
86 0
|
XML 存储 设计模式
XML(可扩展编辑语言) —— DTD
XML(可扩展编辑语言) —— DTD
58 2
|
XML 存储 数据格式
DTD及XML介绍
DTD及XML介绍
73 0
|
XML 运维 前端开发
【XML学习 二】DTD原理及使用
【XML学习 二】DTD原理及使用
97 0
|
XML 程序员 数据格式
【XML】学习笔记第二章-dtd
【XML】学习笔记第二章-dtd
275 0
【XML】学习笔记第二章-dtd
|
XML 数据格式
DTD的概念及编写
DTD的概念及编写