A.概述性问题
A.1 什么是XML? XML 全称是“可扩展标识言语“(Extensible Markup Language)。之所以称之为可扩展,是由于它不像HTML 那样只要固定的方式。它是被用来使SGML 能在万维网上能使用自若。
XML并不是一个独立的,预定义的标识言语。它是一种元言语。它是用来描述其他言语的言语。它允许你本人设计你的标识。(HTML 是一种预定义的标识言语。HTML 只是在一类特定的文件中定义了一种描述信息的方法。而XML 能允许你在不同的文件中定义你本人设计的标识言语。)这是由于XML 是用SGML (“通用标识言语标准”国际标准的标识元言语)书写的。
A.2 XML的目的是什么? XML是被设计用来使SGML 能在万维网上能自若使用的:方便地定义文件类型,方便地制造和管理用SGML定义的文件,在网上方便地传输和共享这些文件。
A.3 什么是SGML? SGML的全称是“Standard Generalized Markup Language“(通用标识言语标准)。它是国际上定义电子文件结构和内容描述的标准。在往上有以下相关资源:
SGML FAQ: http://www.infosys.utas.edu.au/info/sgmlfaq.txt
SGML 主页: http://www.oasis-open.org/cover/sgml-xml.html
A.4 什么是HTML? HTML的全称是“HyperText Markup Language “(超文本标识言语)。它是SGML在网络上的一个特殊使用。
A.5 XML,SGML,HTML是不是一回事? 不竟然。SGML是XML和HTML的母言语。SGML的覆盖面很广。它几乎涉及人们生活的每一个领域。它被用来描述成千上万中文件。HTML只是其中一种文件类型,是一种在网上最常用的类型。它定义了一种简单而固定且含标识的文件类型。
XML是SGML的简化版。为了实现愈加方便地编写和理解使用程序,愈加方便地在网络上传输信息,愈加方便地实现互操作性,XML申略了一些SGML中复杂和不常用的部分。但XML还能和SGML一样通过解析。
A.6 SGML/XML 和C/ C++?什么不同? C和C++和Fortran, Pascal, Basic, 或是Java一样都是编程言语。是用来制定运算和操作的。
而SGML和XML标是说明性的言语。它们是用来表现信息的。它们使得信息能被程序正常地存储传输和处理。就它们本身而言,并不能产生什么操作。操作要由使用程序来实现。
A.7 是由谁担任XML? XML是W3C(World Wide Web Consortium 万维网络联盟)的一个项目。XML不是任何一家公司的私有财产。
A.8 为什么XML是一项重要的技术? 应为它处理了两个制约网络发展的问题:
1.基础是单一固定的文件类型。(HTML);
2.完整的SGML过于复杂。
A.9 为什么不只是扩展HTML? 不同的厂家在开发HTML时产生了许多风趣但却不兼容的发明。这已使HTML不堪重负。由于这使得你只能用一种方法表现你的信息。XML却允许许许多多的团体与组织来创造他们本人的标识言语。使用这些标识言语他们可以在本人的领域内自在地交换信息。HTML在表现信息方面是有缺陷的。当然我们必须承认它如今仍然扮演着重要的角色。但许多新的使用领域需求愈加强大和灵活的工具。
B.SGML的使用(包括HTML的各种浏览器)
B.1 为什么我们要推荐XML而不主张HTML? 1.我们可以用XML设计本人的文件类型。
2.信息的内容将愈加丰富,愈加方便使用。在XML中超文本链接的能力比HTML更强。
3. XML能使得浏览器的表现方式愈加丰富。
4.处理XML文件比.处理SGML文件来得简单。信息的开放性和反复使用的功用斗将提高。
5.合法(Valid 参见D中Valid与-formed)的XML文件在SGML中也是合法的。
B.2 我是不是必须由SGML或是HTML转向XML? 不是的。现存的SGML和HTML的使用软件仍能正常处理现有的文件。
C. SGML 和HTML的编写 C.1 XML能否已取代了HTML? 没有。XML并没有取代HTML。它只是给了你一种新的选择。HTML将仍在一段时间内广泛地被使用。HTML的DTD(参见C中DTD)将既有XML版本,又有SGML版本。但XML版本愈加简单。
C.2 XML文件是怎样的? 它的基本结构和SGML和HTML差不多。XML文件可以非常简单。它可以不需求文件类型说明,而直接就是你本人设计的内嵌式标识。如下面一段代码:
<?xml version="1.0" standalone="yes"?>
<conversation>
<greeting>Hello, world!</greeting>
<response>Stop the planet, I want to get off!</response>
</conversation>
当然它也可以愈加复杂些。如DTD声明,内嵌子集,等等:
<?xml version="1.0" standalone="no" encoding="UTF-8"?>
<!DOCTYPE titlepage SYSTEM "http://www.frisket.org/dtds/typo.dtd"
[<!ENTITY % active.links "INCLUDE">]>
<titlepage>
<white-space type="vertical" amount="36"/>
<title font="Baskerville" size="24/30" alignment="centered">Hello, world!</title>
<white-space type="vertical" amount="12"/>
<!-- In some copies the following decoration is hand-colored, presumably by the author -->
<image location="http://www.foo.bar/fleuron.eps" type="URL" alignment="centered"/>
<white-space type="vertical" amount="24"/>
<author font="Baskerville" size="18/22" style="italic">Vitam capias</author>
</titlepage>
C.3 是不是HTML有一个XML版本? 曾经有好几个HTML的XML版本,但都只是在预备阶段,并未完成。
C.4 既然说XML是SGML的子集,我能不能用SGML的工具直接处理XML文件? 是的.而且非常简单。一个结构完整的XML文件和HTML文件非常相像。当然也有一些小的而且是重要的不同。在实际操作当中最大的不同就是XML文件必须摇恪守一定的法则。HTML的浏览器可以允许一些小的错误。而如果是XML就行不通了。
C.5 什么是DTD?我能在哪儿找到? DTD的全称是“Document Type Definition“(文件类型定义)。具体地说,DTD是一个或是一些用XML书写的文件。它包含了对一种文件的正式定义。它定义了文件中的元素能用什么名字,能放在什么位置,应该怎样组合。在这里举一个简单的例子。比如说你想要你的文件可以描述一组<List>,其中每个<List>由可以包含若干个<Item>。那么你的DTD中应该有以下语句:<!ELEME