前言
XML就是语法严格的可以自己定义的HTML
可以使用DTD定义,例
<!DOCTYPE note [
<!ELEMENT title (name|author|time)>
<!ATTLIST title language CDATA #REQUIRED>
<!ENTITY copyright "hf9">
]>
简介
什么是XML?
XML指的是可拓展标记语法(EXtensible Markup Language)
语法
声明
元素
XML必须有一个根元素
XML中的标签都必须有一个关闭标签,但声明除外(声明是xml的语法不是标签)
XML中的标签对大小写敏感,闭合的时候必须使用同样的标签
所有的元素都必须被正确的嵌套
属性值必须加引号
XML中不能使用<,需要使用实体引用来代替<
XML中的空格会保留,不会像HTML一样只保留一个
命名规则:
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
属性
属性必须加上引号,也可以是双引号,如果要使用双引号时应当使用单引号包裹他,或者使用html实体编码
DTD
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
通过这样的一种方式来定义
<!DOCTYPE 根元素 [元素声明]>
或者是使用外部DTD
<!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd">
元素
使用DTD来声明一个元素
<!ELEMENT 元素名称 类别>
或
<!ELEMENT 元素名称 (元素内容)>
例:
空元素
<!ELEMENT 元素名称 EMPTY>
PCDATA
<!ELEMENT 元素名称 (#PCDATA)>
任意类型
<!ELEMENT 元素名称 ANY>
带有子元素的元素
<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
<!ELEMENT 元素名称 (子元素名称)> 只出现一次
<!ELEMENT 元素名称 (子元素名称)+> 出现一次或多次
<!ELEMENT 元素名称 (子元素名称)?> 出现一次或0次
<!ELEMENT 元素名称 (子元素名称)*> 出现0次或多次
<!ELEMENT 元素名称 (子元素名称1|2)*> 出现子元素1或子元素2
属性
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型:
- CDATA 值为字符数据 (character data)
- (en1|en2|..) 此值是枚举列表中的一个值
- ID 值为唯一的 id
- IDREF 值为另外一个元素的 id
- IDREFS 值为其他 id 的列表
- NMTOKEN 值为合法的 XML 名称
- NMTOKENS 值为合法的 XML 名称的列表
- ENTITY 值是一个实体
- ENTITIES 值是一个实体列表
- NOTATION 此值是符号的名称
- xml: 值是一个预定义的 XML 值
默认值:
-
REQUIRED 属性值是必需的
-
IMPLIED 属性不是必需的
-
FIXED value 属性值是固定的
实体
实体是用于定义引用普通文本或特殊字符的快捷方式的变量
一般实体声明(用于xml文档和dtd中)
<!ENTITY 实体名称 "实体的值">
参数实体声明(只用于dtd中)
<!ENTITY % 实体名称 "实体的值">
外部一般实体声明
<!ENTITY 实体名称 SYSTEM "URI/URL">
外部参数实体声明
<!ENTITY % 实体名称 SYSTEM "URI/URL">
CDATA
不应该由 XML 解析器解析的文本数据
CDATA的声明由结束
PCDATA
指的是会被解析的数据