XML 是"Extensible Markup Language" 的简称,是一种text-based,tag-based(基于文本,基于标签)的标记性语言。
XML 可以分为两种不同的mode(模式) :
Well-formed XML
Valid XML
Well-formed XML相对来说比较自由,没有预先设定好的schema(架构)来约束,可以在不违反 nesting rule for tag 的情况下,创建自己的tag,标签。
刚开始学XML,必须得清楚几个重要的概念 :
1,Tags
2,Element,Root Element,Empty Element
3,Attribute
4,Namespace
5,Namespace Name
6,Qualified Name
7,Local Name
Tags -标签,在上面之所以称标签为Tags而不是Tag,是因为在XML中,标签总是成对出现的,当然除了 Empty Tag。举个例子
<Name>Chuan Su</Name>
当一个 <Name>(opening tag)出现时,后面必定会跟上一个matched </Name>(closing tag)
所以 Tags in XML are text surrounded by triangular brackets,<...>
两个tag,opening tag与closing tag,并且包括在两标签内的everything,就称为XML的一个 Element。
说了这么多先来看个简单的例子吧。
<?xml version="1.0" encoding="UTF-8" standalone = "yes" ?>
<StarMovieData>
<Star>
<Name>Carrie Fisher</Name>
<Address>
<Street>123 Maple St.</Street>
<City>Hollywood</City>
</Address>
<Address>
<Street>5 Locust Ln.</Street>
<City>Malibu</City>
</Address>
</Star>
<Star>
<Name>Mark Hamill</Name>
<Street>456 0ak Rd.</Street>
<City>Brentwood</City>
</Star>
<Movie>
<Title>Star Wars</Title>
<Year>1977</Year>
</Movie>
</StarMovieData>
第一行称为XML文件的prolog(开端),最小的XML prolog为
<? xml version = "1.0" ?>仅表明这个文件是XML 文件
对于attribute
standalone = "yes" 这个的理解,官方网站上这样讲的
引用
standalone: Tells whether or not this document references an external entity or an external data type specification. If there are no external references, then "yes" is appropriate.
也可以简单的理解为这个XML文件不涉及到 DTD,当看到 standalone = "yes"就可以直接说 这个xml 文件 是一个
well-formed XML。
上面讲到了 element, 在这个例子中,可以看到有很多个elements,但是在一个xml文件中
root element只有一个,位于
<?xml version="1.0" encoding="UTF-8" standalone = "yes" ?>
<rootElement>
..........
</rootElement>
引用
在 XML 中,an element can have
attributes(name-value pairs) within its opening tag.
每一个xml element 可以有多个attributes,attributes是以 “name = value"这样的形式出现在 这个element的opening tag当中的。
比如上面例子中的 "<Movie>...</Movie> "element,如果要对Movie添加属性的话,
写为
<Movie,title = "Star Wars",year = 1977>
<Country>America</Country>
<Time>120 minutes</Time>
</Movie>
此时的 title,year不再是element而是 element Movie的 attributes了。
在XML 中也可以有
Empy element,在上面的例子当中
可以出现
<Movie/> 这样一个单纯的Empty element,即只有一个tag,但是Empty element可以有自己的attributes,例如
<Movie,title = "Star Wars",year = 1977 />
Namespaces
由于关于Namespace 写的态度,姑且放到了 我的博客分类
《详解XML namespace》一文中了,请见谅。