XML
简介
1998年2月,W3C正式批准了可扩展标记语言的标准定义,可扩展标记语言可以对文档和数据进行结构化处理,从而能够在部门、客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发。可扩展标记语言可以使我们能够更准确地搜索内容,更方便地传输内容,更好地描述事物。
什么是可拓展标记语言?
- 可拓展标记语言是一种很像超文本标记语言的标记语言。
- 它的设计宗旨是传输数据,而不是显示数据。
- 它的标签没有被预定义。您需要自行定义标签。
- 它被设计为具有自我描述性。
- 它是W3C的推荐标准。
可拓展标记语言和超文本标记语言之间的差异
- 它不是超文本标记语言的替代。
- 它是对超文本标记语言的补充。
- 它和超文本标记语言为不同的目的而设计:
——它被设计用来传输和存储数据,其焦点是数据的内容。
——超文本标记语言被设计用来显示数据,其焦点是数据的外观。 - 超文本标记语言旨在显示信息;而XML旨在传输信息,它是独立于软件和硬件的信息传输工具。
可拓展标记语言是W3C的推荐标准
- XML于1998年2月10日成为W3C的推荐标准。
可拓展标记语言无处不在
- XML是各种应用程序之间进行数据传输的最常用的工具。
基本结构
话不多说,直接撸代码:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 人力资源管理系统 -->
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hr.xsd">
<employee no="007">
<name>或无言</name>
<age>18</age>
<salary>20000</salary>
<department>
<dname>开发部</dname>
<address>XX大厦-B103</address>
</department>
</employee>
<employee no="008">
<name>张三</name>
<age>31</age>
<salary>30000</salary>
<department>
<dname>工程部</dname>
<address>XX大厦-B104</address>
</department>
</employee>
</hr>
- version="1.0" encoding="UTF-8":说明XML的版本号和编码方式。
- xmlns:xsi:说明这份文档是使用schema约束。
- xsi:noNamespaceSchemaLocation:指明schema文件的名字。
- hr:这份人力资源管理系统文档的根标签。
- hr、employee、name、age、department等标签都是自己定义的,组成文档的结构。
- 标签里的是属性,如no="007",在这份文档中的语义为员工的编号。
XML Schema
定义
它的作用是定义一份XML文档的合法组建群,就像文档类型定义(外语缩写:DTD)的作用一样,一份XML Schema定义了:
- 可以出现在文档里的元素;
- 可以出现在文档里的属性;
- 那些元素是子元素;
- 子元素的顺序和数量;
- 一个元素是否能包含文本或为空;
- 元素和属性数据类型;
- 元素和属性的默认值和固定值;
基本结构
以上文的XML文档为例,它的Schema可以是如下结构:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="hr">
<complexType>
<sequence>
<element name="employee" minOccurs="1" maxOccurs="9999">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age">
<simpleType>
<restriction base="integer">
<minInclusive value="18"></minInclusive>
<maxInclusive value="60"></maxInclusive>
</restriction>
</simpleType>
</element>
<element name="salary" type="integer"></element>
<element name="department">
<complexType>
<sequence>
<element name="dname" type="string"></element>
<element name="address" type="string"></element>
</sequence>
</complexType>
</element>
</sequence>
<attribute name="no" type="string" use="required"></attribute>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
Schema看起来和XML看起来很像,并且它也是由XML所编写的,描述 XML 文档的结构,Schema中的标签和属性并非自己定义。
- element name="hr":声明一个名称为hr的根节点。
- complexType:复杂节点,包含子节点时必须使用这个标签。
- sequence:序列,其下的所有子节点严格按照顺序书写。
- minOccurs="1" maxOccurs="9999":当前节点最少出现1次,最多出现9999次。
- type="integer":只允许使用整型数字。
- simpleType:简单类型的约束。
- restriction base="integer":限定只允许使用整型数字。
- minInclusive value="18":最小值为18。
- attribute name="no" type="string" use="required":定义属性,这里约束employee元素必须有no这个属性。
总结
年轻人,听我一句劝,一定要好好学英语,不然跟我一样定义个变量都要查单词!(当然我也正在努力。。。)
参考文献:
网友评论