最基本的三个概念
XML语言-描述事物本身
XSL语言-展现事物表现形式
DTD(Schema)-定义XML语言的语法
XML基本概念
XML(eXtensible Markup Language,可扩展标记语言)是SGML(标准通用标记语言)针对特定应用领域的一个子集,是SGML的一种受限形式。XML描述了一类称为XML文件的数据对象,同时也部分地描述了处理这些数据对象的计算机程序的动作。XML是W3C的推荐标准之一,目前广泛使用的是XML 1.0版,于1998年2月发布,2004年2月W3C发布了XML 1.1版
XML设计目标
XML应该可以直接用于因特网(Internet)。
XML应该支持大量不同的应用。
XML应该与SGML兼容。
处理XML文件的程序应该容易编写。
XML中的可选项应无条件地保持最少,理想状况下应该为0个。
XML文件应该是人可以直接阅读的,应该是条理清楚的。
XML的设计应快速完成。
XML的设计应该是形式化的,简洁的。
XML文件应易于创建。
XML标记的简洁性是最后考虑的目标。
XML文件的设计原则
1、尽量应用现有的标准DTD(schema)
省力、易于交换,应用现有软件
2、属性/子标签
属性里还有属性就用子标签
多行用子标签
出现过好多次,子标签
经常改变,子标签
比较重要的元素用子元素,说明性的或者辅助性的用属性
需要用DTA做严格检查的用子标签
应用最关键,细节上要尽量少花费精力,不必刻意追求每一步细节的尽善尽美
XML的特点
XML是元语言,可以创建其他语言
允许通过标记定制,标识、交换或处理数据,实现数据信息的规范化、多样化
基于文本格式,便于创建、处理XML文件
具有层次化、结构化特征,易于数据结构的描述
XML的应用
设计XML的目的不是展示数据,而是存储和交换数据
XML文档按结构方式可分为:
叙述型文档:用于表达语义
数据记录型文档:用于数据传递
用于表达语义的XML文档 常用于电子出版,如新闻、论文等。 结构复杂、层次嵌套
作为数据载体,可描述为数据表结构 一般结构较简单,层次分明
用作应用程序的配置文件,如面向对象中对象的持久化
用于异构系统间的数据交换,如DOM、XSLT等
XML语法概要
格式良好(well-formed)的XML文档:
元素和属性的命名要规范,要区分大小写
每个XML文档有且仅有一个根元素
每个XML元素必须有开始标签和结束标签(或为空元素)
元素之间不允许交叉嵌套
所有属性都必须有属性值(可以为空串)
在文本、属性值中不允许出现 “<”、“>”和“&”符号
XML文档结构通常从XML声明开始
通过XML元素来组织数据
为了使数据更加清晰并且具有自身的格式可以引入CDATA区数据块
可以在文档中加入注释
如果需要给XML处理程序提供一些信息,可以包含处理指示
标签的命名
以字母、下划线或汉字开头,不能有空格
区分大小写
不能以任何形式的“xml”3个字母开头
标签的含义
结构表达:xml文档的结构描述
结构相同:
<公司><职员 姓名=“张三”/></公司>
<班级><学生 姓名=“张三”/></班级>
语义表达:领域描述
同一“术语”在不同语境下表达不同语义
样式表达:呈现方式描述
常通过样式表CSS表达
元素element和属性attribute
元素标记:起始标签+数据+结束标签
<CPU>Intel酷睿2</CPU>
<分区><名称>C</名称></分区>
<分区><名称>C</名称>盘为系统盘</分区>
<nil></nil>
属性
<CPU 工作频率=“3.0GHz”>Intel酷睿2</CPU>
空元素
<CPU 厂商=“Intel” 工作频率=“3.0GHz” />
<nil/>
名称空间namespace
XML中引入名称空间以解决不同信息域的命名冲突问题
名称空间的声明:
xmlns:名称空间前缀=“URI”
默认名称空间:xmlns=“URI”
URI的表示形式
http://127.0.01/myns
myurn:myns,如xmlns:it=“myurn:it”
文本和分文本数据
文本数据
<文本>可以使用中文或英文符号</文本>
字符引用
<符号>可用字符引用表示:<、>和& </符号>
CDATA段所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待
空白
空白是指空格、制表符、回车换行符
空白不能出现在
<?xml声明之前
元素的起始标签的<和元素标签之间
XML内容中的连续空白常被当作一个换行或空格处理,标签间的空白常被剔出或规范化
如果内容中的空白是重要的,可以为该元素添加“xml:space”属性(或使用CDATA段)
注意事项
1、首行为XML声明
2、可以链接相应XSL
3、注释为<!---->和HTML里一样
4、属性必须包引号
5、<![CDATA[```]]>CDATA区用来表示格式数据,例如C++代码等,十分的方便。(区中不能出现"]]>"标志,需要用]]>替代)
6、空格
<name>jgoeirhgoe</name>
<name> jgoeirhgoe </name>
空白默认不会被保留,包括space,tab,CR(MAC)LF(UNIX)CR/LF(Microsoft)
<poem xml:space="preserve">
ajal
gajgafj
jgoejgor
</poem>
不推荐,推荐用CDATA区
7、<?.......?>PI Process Instruction 处理指示
<?xml-stylesheet href="typical.xsl" type="text/xsl"?>
<?xml-stylesheet href="typical.css" type="text/css"?>
XML声明不是PI,传递给下游程序
8、namespace命名空间,指明标签是来自哪个DTD或者Schema
9、特殊字符 > >< <& &" "' '
20、编码
Unicode世界上所有文字的编码utf-16 utf-8