前言
最近应导师要求,对交通领域的一篇协议性的文件进行学习,在协议的附录里,发现了一份对应这份协议的xml纲要,篇幅巨大,于是心中好奇xml究竟是什么,在这里做一简单记录,与大家共享。
XML的概念
XML(Extensible Markup Language),中文为可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 XML可以用来标记数据、定义数据类型,可以允许用户对自己标记语言进行定义,是对人和机器都比较友好的数据承载方式。它提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据,非常适合万维网传输,是Internet环境中跨平台、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。
可以将XML的概念总结为以下几点:
1)是一种很像超文本标记语言的标记语言。
2)它的设计宗旨是传输数据,而不是显示数据。
3)它的标签没有被预定义。您需要自行定义标签。
4)它被设计为具有自我描述性。
5)它是W3C的推荐标准。
6)是各种应用程序之间进行数据传输的最常用的工具。
可扩展标记语言(XML)和超文本标记语言(HTML)之间的差异
而XML与另一类十分相似的超文本标记语言(HTML)之间又有何关系呢?下面列出了两者之间的差别。如果你在学习XML前具备对HTML知识的基本了解,这对于你学习XML是十分有利的。
1)它不是超文本标记语言的替代。
2)它是对超文本标记语言的补充。
3)它和超文本标记语言为不同的目的而设计:它被设计用来传输和存储数据,其焦点是数据的内容。 超文本标记语言被设计用来显示数据,其焦点是数据的外观。
4)超文本标记语言旨在显示信息,而它旨在传输信息。
5)对它最好的描述是:它是独立于软件和硬件的信息传输工具。
XML不会做任何事情
也许这有点难以理解,但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
下面实例是 Jani 写给 Tove 的便签,存储为 XML:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
上面的这条便签具有自我描述性。它包含了发送者和接受者的信息,同时拥有标题以及消息主体。 但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
实例中的标签没有在任何XML标准中定义过。这些标签是由XML文档的创作者发明的。这是因为XML语言没有预定义的标签。HTML中使用的标签都是预定义的。HTML文档只能使用在HTML标准中定义过的标签。XML允许创作者定义自己的标签和自己的文档结构。
XML语法
XML 的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用。
XML 文档必须有根元素
XML 必须包含根元素,它是所有其他元素的父元素,比如以下实例中 root 就是根元素:
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
XML 声明
XML 声明文件的可选部分,如果存在需要放在文档的第一行,如下所示:
<?xml version="1.0" encoding="utf-8"?>
以上实例包含 XML 版本。
UTF-8 也是 HTML5, CSS, JavaScript, PHP, 和 SQL 的默认编码。
所有的 XML 元素都必须有一个关闭标签
在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签:
<p>This is a paragraph.</p>
<br />
XML 标签对大小写敏感
XML 标签对大小写敏感。标签Letter与标签letter是不同的。
必须使用相同的大小写来编写打开标签和关闭标签:
<Message>这是错误的</message>
<message>这是正确的</message>
XML 必须正确嵌套
在 XML 中,所有元素都必须彼此正确地嵌套:
<b><i>This text is bold and italic</i></b>
在上面的实例中,正确嵌套的意思是:由于i元素是在b元素内打开的,那么它必须在b元素内关闭。
实体引用
在 XML 中,一些字符拥有特殊的意义。 如果您把字符 “<” 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。 这样会产生 XML 错误:
<message>if salary < 1000 then</message>
为了避免这个错误,请用实体引用来代替 “<” 字符:
<message>if salary < 1000 then</message>
XML 中的注释
在 XML 中编写注释的语法与 HTML 的语法很相似。
<!-- This is a comment -->
在 XML 中,空格会被保留
HTML 会把多个连续的空格字符裁减(合并)为一个:
XML 以 LF 存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符(CR)和换行符(LF)。
在 Unix 和 Mac OSX 中,使用 LF 来存储新行。
在旧的 Mac 系统中,使用 CR 来存储新行。 XML 以 LF 存储换行。
XML实例
实例:XML新闻
对新闻的供求双方来说,通过使用这种标准,可以使各种类型的新闻信息通过不同软硬件以及编程语言进行的制作、接收和存档更加容易:
<?xml version="1.0" encoding="ISO-8859-1"?>
<nitf>
<head>
<title>Colombia Earthquake</title>
</head>
<body>
<headline>
<hl1>143 Dead in Colombia Earthquake</hl1>
</headline>
<byline>
<bytag>By Jared Kotler, Associated Press Writer</bytag>
</byline>
<dateline>
<location>Bogota, Colombia</location>
<date>Monday January 25 1999 7:28 ET</date>
</dateline>
</body>
</nitf>
实例:XML 气象服务
XML 国家气象服务案例,来自 NOAA(National Oceanic and Atmospheric Administration):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<current_observation>
<credit>NOAA's National Weather Service</credit>
<credit_URL>http://weather.gov/</credit_URL>
<image>
<url>http://weather.gov/images/xml_logo.gif</url>
<title>NOAA's National Weather Service</title>
<link>http://weather.gov</link>
</image>
<location>New York/John F. Kennedy Intl Airport, NY</location>
<station_id>KJFK</station_id>
<latitude>40.66</latitude>
<longitude>-73.78</longitude>
<observation_time_rfc822>Mon, 11 Feb 2008 06:51:00 -0500 EST
</observation_time_rfc822>
<weather>A Few Clouds</weather>
<temp_f>11</temp_f>
<temp_c>-12</temp_c>
<relative_humidity>36</relative_humidity>
<wind_dir>West</wind_dir>
<wind_degrees>280</wind_degrees>
<wind_mph>18.4</wind_mph>
<wind_gust_mph>29</wind_gust_mph>
<pressure_mb>1023.6</pressure_mb>
<pressure_in>30.23</pressure_in>
<dewpoint_f>-11</dewpoint_f>
<dewpoint_c>-24</dewpoint_c>
<windchill_f>-7</windchill_f>
<windchill_c>-22</windchill_c>
<visibility_mi>10.00</visibility_mi>
<icon_url_base>http://weather.gov/weather/images/fcicons/</icon_url_base>
<icon_url_name>nfew.jpg</icon_url_name>
<disclaimer_url>http://weather.gov/disclaimer.html</disclaimer_url>
<copyright_url>http://weather.gov/disclaimer.html</copyright_url>
</current_observation>