Home >Web Front-end >HTML Tutorial >XML study notes 2??DTD_html/css_WEB-ITnose

XML study notes 2??DTD_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 12:33:431148browse

In the previous note, when classifying document types, we used to distinguish them into well-formed XML and valid XML based on whether the document uses and complies with DTD or Schema. So what are DTD and Schema? Both DTD and Schema are used to standardize XML documents and impose semantic constraints on XML documents. DTD is simple and easy to use, while Schema is powerful. In this note, first learn about DTD (Document Type Definition, document type definition).

1. How to use DTD in XML documents

Import method Syntax format Instructions
Internal DTD
导入方式 语法格式 说明
内部DTD

<!DOCTYPE 根元素名[     元素描述]>

将DTD定义放在XML文档内部,紧跟在XML声明和处理指令后面

如:6399407ecd77b171295e1814b16c6350

     ]>

外部DTD

<!DOCTYPE 根元素名 SYSTEM "外部DTD的URI">

将DTD单独定义在一个文件内,然后通过关键字SYSTEM导入DTD

如:97b2f232b9ecd2f0ac6ecdff612b67ac

公用DTD

<!DOCTYPE 根元素名 PUBLIC "DTD的标识名" "公用DTD的URI">

公用DTD,这种DTD一般是由某个权威机构指定,供特定行业或公众使用,通过关键字PUBLIC导入

如:c7ebdc0cae3db6aa65ccfeb869100733

<!ATTLIST 属性所属的元素名称  属性名称  属性类型  [元素对属性的约束]  [默认值]>

Place the DTD definition inside the XML document, followed by After the XML declaration and processing instructions

such as: 3f9eccbb7b73ab489cc811a6990bcfd1

]>

External DTD
<!ATTLIST 属性所属的元素 属性名 NOTATION  (值1|值2|...) 约束 默认值>

Define the DTD separately in a file within, and then import the DTD through the keyword SYSTEM

For example: 504d691339281458492a370ec63f11d0

Public DTD

Public DTD. This DTD is generally designated by an authoritative organization for specific purposes. For industry or public use, import through the keyword PUBLIC

such as: 6caf63d6ff196f22499795ffd86a9110

2. The structure of DTD

The DTD document itself is not XML document, but only a document that defines semantic constraints for XML. The syntax of a DTD document is very simple and has the following structure:
元素类型 定义格式 说明
任意类型 77d63f1dc9a0bd4ad2afeec104fec4b0 元素可以是字符串,可以是空元素,也可以包含子元素
字符串值 ffdc992a76c23f35b8741b4e36196f36 元素值只能是字符串,不可以是空元素,也不能包含子元素
空元素 3a8419cd20340b2d5be4d3b6cf82745f  
包含子元素   比较复杂,需要详细定义子元素之间的顺序以及子元素出现的次数等
混合类型 2248f8c379b94ec0b25049a00813b747 指定值只能是几个确定的类型,比任意类型有更强的约束,但功能相当,应尽量使用混合类型

(1) The first line is the declaration of the DTD document, and the syntax is the same as the declaration of XML

(2) 0 to multiple comment parts, DTD comments have the same syntax as XML comments

(3) 0 to multiple bbfe022067457a4b49db0fef48244a91 definitions, each 88491ca02fcc7c852ee8db3633523b65 Define an XML element

(4) 0 to multiple 9dc71515bfc0e797ceea2f5a6fdad63f definitions, each 9dc71515bfc0e797ceea2f5a6fdad63f defines one XML element Attributes

(5) 0 to multiple 9c5fa95a5e92eb0e81a8a2fb61d4e35a definitions, each 9c5fa95a5e92eb0e81a8a2fb61d4e35a defines an entity

定义子元素的语法 说明 子元素的出现频率修饰词 说明
(子元素1,子元素2,...) 使用英文逗号定义有序的子元素 默认(没有修饰词) 出现一次,且只能出现一次
(子元素1|子元素2|...) 使用竖线定义互斥的子元素 ? 出现0或1次
((子元素1,子元素2)|(子元素3,子元素4)) 使用括号将子元素分组 出现1或多次
(子元素1|子元素2|...) 使用竖线互斥,然后使用频率修饰实现定义无序的子元素 * 出现0或多次
(6) 0 to Multiple a4cd65104c35a1d8cedd93eecda82ccc definitions, each a4cd65104c35a1d8cedd93eecda82ccc defines a symbol among which bbfe022067457a4b49db0fef48244a91, 4e40a3445403223a8b40a999f56a33e8, 9c5fa95a5e92eb0e81a8a2fb61d4e35a, a4cd65104c35a1d8cedd93eecda82ccc are completely independent of each other and do not need to be nested in each other. The four definitions will be explained one by one below. 3. Define elements (1) Element Type Definition, referred to as ETD (2) Element type About The definition of mixed types, please explain a few points: A: #PCDATA must be placed at the front B: #PCDATA and each sub-element can only be separated by vertical bars (|). Do not use commas to separate C: Do not use ?, *, and other frequency modifiers after child elements (3) Define child elements

4、定义属性

在XML中,属性不能单独存在,因此定义属性时必须指定属于哪个元素。定义属性的语法格式如下:

<!ATTLIST 属性所属的元素名称  属性名称  属性类型  [元素对属性的约束]  [默认值]>

(1)属性类型

类型 说明
CDATA 该属性值只能是字符串数据
(en1|en2|en3) 该属性值必须是一系列枚举值之一
ID 该属性值必须是有些的标识符,且该属性值可用于标识该元素,因此必须在此XML文档中唯一
IDREF 该属性值必须是引用另一个已有的ID类型的属性值
IDREFS 该属性值必须是引用已有的一个或多个ID类型的属性值,多个ID类型的属性值之间使用空格分隔
NMTOKEN 该属性值必须是合法的XML名称,必须是字符串数据,比CDATA约束更强,只能由字母、数字、下划线、中划线,点号和冒号组成
NMTOKENS 该属性值必须是一个或多个NMTOKEN类型的属性值,多个使用空格分隔
ENTITY 该属性值是一个外部实体,比如图片
ENTITIES 该属性值是一个或多个ENTITY类型的属性值,多个使用空格分隔
NOTATION 该属性值是在DTD中声明过的符号(NOTATION),这是个将要过期的规范,尽量避免使用
xml: 该属性值是一个预定义的XML值

(2)元素对属性的约束与默认值的关系

元素对属性的约束 说明 默认值
未指定   必须指定默认值
#REQUIRED 必须的属性,必须为相应元素提供该属性 不能指定默认值
#IMPLIED 该属性可有可无 不能指定默认值
#FIXED 该属性值是固定的,定义时必须指定固定值 必须指定默认值

5、定义实体

实体引用就是用一个字符串代替另一个字符串,类似于C语言中的宏,上一篇笔记中已经提到过XML中内置的5个实体引用,在这里接着看看怎么自定义实体引用。

实体类型 使用场所 定义语法 使用语法 说明
普通实体 XML f6701d43a6602d2b1bddd3314888121a &实体名;  
参数实体 DTD 33765f3db4a4f87a0ce377e07b6ef9a9 %实体名; 必须在使用前先定义
外部实体 XML 45223d92d67a471d8aa418c07c553844 &实体名; 这里外部文件必须是满足XML文档结构的文本文档
公用外部实体 XML 6aac85f33d84c658fd3542675d8fdda5 &实体名;  
外部参数实体 DTD 364efaa3ef353d39e6fdfd5f1874fb78 %实体名;  
公用外部参数实体 DTD 91c2898167f83894552848e9fe14aac7 %实体名;  
未解析实体 XML 076f232aa9e658c37746fe037adbd428 需要通过ENTITY等类型的属性调用 未解析实体不能由XML文档解析,而需要根据相应的符号名去解析
公用未解析实体 XML 16f7b8c015db549d96c6a7ff75c506e7

6、定义符号

定义符号也有两种语法格式,分别定义普通符号和公用符号:

符号类型 定义语法
普通符号 87305a241d10ab5f20e6b60def27653b
公用符号 7d246b2c0dae669d0773fab845ef04ed

符号值通常有两种形式:

(1)MIME:通用MIME类型的文件总是由相应的程序负责处理

(2)外部程序所在路径:直接指定某个外部程序负责处理XML文档中的外部数据

符号通常有两种用途:

(1)如上,符号可以用来定义未解析实体

(2)符号可以作为ENTITY或ENTITIES类型的属性值

(3)符号还可以作为NOTATION类型的属性的值,定义NOTATION类型的属性时,语法如下:

<!ATTLIST 属性所属的元素 属性名 NOTATION  (值1|值2|...) 约束 默认值>

比一般的属性定义多一个值的列表。

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn