今天的主要内容是XML。
首先我们先来了解一下什么是XML:
Extensible Markup Language,翻译过来为可扩展标记语言。Xml技术是w3c组织发布的,目前推荐遵循的是W3C组织于2000发布的XML1.0规范。
可扩展标记语言XML是SGML的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务、接受和处理。XML被设计成易于实现,且可在SGML和HTML之间互相操作(W3C XML工作组对XML的定义)。
知道了什么是XML那么我们需要知道它的应用有那些:
XML技术除用于保存有关系的数据之外,它还经常用作软件配置文件,以描述程序模块之间的关系。
在一个软件系统中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定。例如一个软件在启动时,它需要启动A、B两个模块,而A、B这两个模块在启动时,又分别需要A1、A2和B1、B2模块的支持,为了准确描述这种关系,此时使用XML文件最为合适不过。
XML文档的分类
格式不良好(malformed)的xml文档:完全没有遵守xml文的基本规范的xml文档。
格式良好(well-formed)的但无效的xml文档: 遵守xml文的基本规范,但没有使用dtd或schema定义语义约束的xml文档。
有效(valid)的xml文档:遵守xml文的基本规范,并使用dtd或schema定义语义约束,而且也完全遵守了dtd或schema定义语义约束的xml文档。
一个XML文件分为如下几部分内容:
文档声明
元素
属性
注释
CDATA区 、特殊字符
处理指令(processing instruction)
与HTML相比,XML具有以下几个优点:
(1) 可扩展性强。
(2) 遵循严格的语法要求。
(3) 数据内容与数据表达分离。
下面是一个三层包含实例:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT catalogue (common*,commodity*,Administrator*)>
<!ELEMENT common (sname,splace,sclasses)>
<!ELEMENT sname (#PCDATA)>
<!ELEMENT splace (#PCDATA)>
<!ELEMENT sclasses (#PCDATA)>
<!ELEMENT commodity (basic+,putin+,supply+,putout+)>
<!ELEMENT basic (name,univalence,number,classes)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT univalence (#PCDATA)>
<!ELEMENT number (#PCDATA)>
<!ELEMENT classes (#PCDATA)>
<!ELEMENT putin (pitime,pinumber,edate,piagent)>
<!ELEMENT pitime (#PCDATA)>
<!ELEMENT pinumber (#PCDATA)>
<!ELEMENT edate (#PCDATA)>
<!ELEMENT piagent (#PCDATA)>
<!ELEMENT supply (ssname,ssplace)>
<!ELEMENT ssname (#PCDATA)>
<!ELEMENT ssplace (#PCDATA)>
<!ELEMENT putout (potime,ponumber,poagent)>
<!ELEMENT potime (#PCDATA)>
<!ELEMENT ponumber (#PCDATA)>
<!ELEMENT poagent (#PCDATA)>
<!ELEMENT Administrator (id,aname,post,aclasses)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT aname (#PCDATA)>
<!ELEMENT post (#PCDATA)>
<!ELEMENT aclasses (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE File SYSTEM "File.dtd">
<catalogue>
<common>
<sname>河软超市</sname>
<splace>河软</splace>
<sclasses>A类</sclasses>
</common>
<commodity>
<basic>
<name>面包</name>
<univalence>1元</univalence>
<number>11111</number>
<classes>食品类</classes>
</basic>
<putin>
<pitime>0926</pitime>
<pinumber>100</pinumber>
<edate>0930</edate>
<piagent>王</piagent>
</putin>
<supply>
<ssname>王中王</ssname>
<ssplace>中国</ssplace>
</supply>
<supply>
<ssname>王中王</ssname>
<ssplace>中国</ssplace>
</supply>
<putout>
<potime>0926</potime>
<ponumber>33</ponumber>
<poagent>程</poagent>
</putout>
</commodity>
<commodity>
<basic>
<name>红茶</name>
<univalence>3元</univalence>
<number>11111</number>
<classes>饮品类</classes>
</basic>
<putin>
<pitime>0926</pitime>
<pinumber>100</pinumber>
<edate>0930</edate>
<piagent>网</piagent>
</putin>
<supply>
<ssname>华龙</ssname>
<ssplace>中国</ssplace>
</supply>
<putout>
<potime>0926</potime>
<ponumber>33</ponumber>
<poagent>程</poagent>
</putout>
</commodity>
<Administrator>
<id>001</id>
<aname>张三</aname>
<post>店主</post>
<aclasses>食品类</aclasses>
</Administrator>
</catalogue>