目录
一,XML的概念
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
在学习了 HTML 之后,理解 XML 语法其实是很简单的,两者在语法上很像。
1. 设计宗旨:XML 被设计为传输和存储数据,其焦点是数据的内容;HTML 被设计用来显示数据,其焦点是数据的外观。HTML 旨在显示信息,而 XML 旨在传输信息。
2. XML 标签没有被预定义:HTML 的标签是被预定义了的,比如所有的 HTML 文档的<p>标签都是表示一个段落,就是因为 HTML 的标签是被预定义的。而 XML 标签则没有,单纯的 XML 标签则是没有任何意义的,需要搭配一些定义的 XML 标签规则(验证)来使用,才会有意义。
二,XML的作用
- 作为项目或者模板的配置文件
- 作为网络传输数据的格式(现在已JSON为主)
- 用来保存数据,而且这些数据具有自我描述性
三,XML语法规则
XML 文档采用树形结构
XML 文档必须包含根元素,该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端,所有元素均可拥有子元素。
<persons>
<child>
<subchild>.....</subchild>
</child>
</persons>
语法规则
- 所有 XML 元素都须有关闭标签。可以是
<label></lable>
,也可以是<label />
,但不能是<label>
; - XML 标签对大小写敏感。因此必须使用相同的大小写来编写开始标签和结束标签;
- 在 XML 中,所有元素都必须彼此正确地嵌套;
- XML 文档必须有根元素;
- XML 的属性值须加引号;与 HTML 类似,XML 也可拥有属性(属性名/属性值的对),在 XML 中,XML 的属性值须加引号;
- 在 XML 中,一些字符有特殊意义,需要使用时,要是用转义字符;
- 注释和 HTML 文件一样,
<!-- -->
;
四,XML属性定义
元素与属性的区别
- XML 元素指的是从开始标签直到结束标签的部分。
- 元素可包含其他元素、文本、属性或者前面的混合。
XML 元素 vs 属性
<student code="89757">
<name>youka</name>
<sex>femal</sex>
</student >
<student>
<code>89757</code>
<name>youka</name>
<sex>femal</sex>
</student >
在第一个例子中,code 是一个属性;在第二个例子中,code 则是一个子元素。这两个例子提供相同的信息。
没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。
在 HTML 中,属性用起来很便利,但是在 XML 中,应该尽量避免使用属性。因为使用属性会有一些局限性:
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展
- 属性难以阅读和维护
因此请尽量使用元素来描述数据,而仅使用属性来提供与数据无关的信息。
XML 元素命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
XML 验证
拥有正确语法的 XML 被称为"形式良好"的 XML,通过 DTD 验证的XML是"合法"的 XML。
XML 验证文档有:DTD(文档类型定义)、XML Schema
< !ATTLIST element-name att_name type desc >
属性类型
- ID:写在元素中则元素必须具备ID这个属性
- ( 男 | 女 ):属性只能写男或者女,写别的报错
- CDATA:文本属性
- IDREF:引用别人ID标签的值
- reference(少用)
属性描述
- #REQUIRED:表示必填
- #IMPLIED:表示非必填
- '默认值':只有type为男或女类型时,desc才可以使用默认值的方式
案例:
五,XML的元素定义
1、DTD定义
DTD简介
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用
DTD的标签:< !DOCTYPE root[ ] >
DTD的规范示例
<!DOCTYPE NEWSPAPER [
<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>
<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>
]>
2.元素的定义
元素的分类
< !DOCTYPE element-name EMPTY>//空元素
< !DOCTYPE element-name (#PCDATA)>//文本元素
< !DOCTYPE element-name (e1,e2)>//混合元素
元素个数的限制
- 与:用 . 表示
- 非:用 | 表示
次数:
- 0或1:用 ?表示
- 0或N:用 * 表示
- 1或N:用 + 表示
示例:
今天的分享就到此为止啦,精彩下期继续!!