什么是文档类型定义(DTD)?
--------------------------------------------------------------------------------
文档类型定义 (DTD) 是一套关于标记符的语法规则。 它告诉你可以在文档中使用哪些标记符, 它们应该按什么次序出现, 哪些标记符可以出现于其它标记符中, 哪些标记符有属性, 等等. DTD原来是为使用SGML开发的, 它可以是XML文档的一部分, 但是它通常是一份单独的文档或者一系列文档 。XML本身并没有一个通用的DTD,想使用XML进行数据交换的行业或组织可以定义它们自己的DTD。
--------------------------------------------------------------------------------
如何在浏览器中阅读XML?
--------------------------------------------------------------------------------
阅读XML文档的工具一般称为XML解析器, 也称为XML处理器。 XML处理器将数据传送到应用软件, 以便处理, 出版, 查询, 或显示。XML不给应用软件提供 应用程序接口 (API), 它只是把数据传给应用软件. XML处理器不解析非构造良好的数据。 Netscape 和 Microsoft 都已经将XML解析器包含在其浏览器中。 XML开发者团体提供免费的XML阅读器和解析器, 以便在应用软件或XML制作软件中进行应用。
--------------------------------------------------------------------------------
使用问题
如何得到XML浏览器?
--------------------------------------------------------------------------------
XML标准已经发布规格说明书新出台不久,所以现在很多都是在试验阶段的软件。而处理HTML的浏览器有许多。但是将来会涌现大量不同领域的XML应用程序,所以不要指望会有一个浏览器能100%的处理好所有的程序。
XML的工具(如解释器(parsing),树结构管理(tree management),搜索(searching),格式化工具(formatting)等等)都被加在浏览器的库(libraries)里或工具包(toolkit)中,帮助开发人员更容易编写XML程序。这种应用程序可以通过增加相应的语义来修改,使之适用于 另一个特殊领域,或使用Java等语言为浏览器开发plugins等嵌入程序,在Web上传输某一模块。
Microsoft公司的IE4和5浏览器可以处理一些Microsoft-oriented的XML程序,但显示时要转换为HTML文件。 详情见development work at Microsoft和how to enable it。 Arbortext的XML Stylesheet program页中介绍怎样使用XML+XSL。你也需要ActiveX controls和XSL codebase。 Microsoft建议你可以在HTML文件中加入XML段,因为现在的只支持HTML的浏览器会忽略不认识的标识元素。
可以下载的Netscape(Mozilla)浏览器已经通过一个XML+RDF测试,其中使用James Clark的expatXML解释器(parser)。
请看面向程序设计人员和软件和工具开发商中软件部分的注意说明(notes),更详细的资料列在
http://www.oasis-pen.org/cover/xml.html。
--------------------------------------------------------------------------------
为什么要使用XML而不是HTML?
--------------------------------------------------------------------------------
比较重要的原因有以下六条:
1)作者和供应商能使用XML设计自己的文档类型,不必被HTML所约束。
2)由于XML的超文本链接能力比HTML强得多,XML提供的信息内容比 HTML更丰富,也更易于使用。
3)XML能提供更多更好的机制方便浏览器的信息表现和优化性能。
4)XML舍弃了SGML的复杂性,因此编写处理XML的应用程序会很容易。
5)信息易于存储,可重复使用。
6)XML文件在SGML环境中也可使用,不一定要局限于在WEB中使用。
--------------------------------------------------------------------------------
必须从SGML或HTML转向XML吗?
--------------------------------------------------------------------------------
没有必要。现有的SGML和HTML应用软件将会继续和现有文件一起工作。但是如果你想查看或下载使用XML文件,你就需要使用能够理解、处理XML的程序。
--------------------------------------------------------------------------------
可以用Java创建和管理XML文件吗?
--------------------------------------------------------------------------------
是的,任何程序设计语言都能被用来从XML形式的源文档中输出数据。已经出现了许多的前端和后台工具使得程序设计和数据管理更加方便。下面两个网址有更加详细的说明:
http://www.markwatson.com/XMLdb_0_1.htm http://developerlife.com --------------------------------------------------------------------------------
开发问题
XML的规格说明书在哪里?
--------------------------------------------------------------------------------
从
http://www.w3.org/TR/REC-xml中就可以找到。
--------------------------------------------------------------------------------
“DTDless”、“valid”和“well-formed”等术语的含意是什么?
--------------------------------------------------------------------------------
在标准SGML文档中,所有用到的标记、元素、元素的属性都必须由文件类型定义(DTD)来说明。但是这种限制在XML的应用中并不是总是需要的,所以XML文档被设计成既可以带有DTD,也可以没有DTD文件。DTDless的意思是没有DTD的XML文件,你可以创建自己的标识和元素,但不用在DTD中正式定义。DTDless文件通过创建元素时对它们直接进行定义。但是当XML应用程序,如一个浏览器遇到DTDless文件时,因为没有DTD文件告诉浏览器关于这个文件的结构信息,所以创建DTDless文档时,仍需要一些规则来进行规范。这样“well_formed”XML文档的概念就相应产生了,它明确规定了书写XML文档的语法规范。所有符合这个规范的XML文档就被称为是“well_formed”的XML文档。如果一个“well_formed”的XML文档,包含了DTD说明,那么这个文档就被称为是一个“valid”的XML文档了。
--------------------------------------------------------------------------------
为什么XML文件的分析结果出现乱码?
--------------------------------------------------------------------------------
这是由编码问题引起的。XML标准规定,XML分析器必须支持“UTF-8”和“UTF-16”编码,而且必须能够自动区分这两种编码的文件,对于其他编码(包括常用的中文编码“GB2312”或“BIG5”)并不要求支持。如果XML文件中包含编码声明,分析器则按照声明的编码进行处理,否则就按照识别结果进行处理(识别的结果总是“UTF-8”和“UTF-16”中的一种)。因此,如果XML文件的编码在这两种之外,你必须在XML文件前加上编码声明,如:<?xml version="1.0" encoding="gb2312"?>就表示XML文件的编码是“gb2312”。
现有的XML分析器大多不支持中文编码“GB2312”或“BIG5”,因此无法读取包含中文的XML文件。你可以使用支持中文编码的分析器,如MSXML,IBMJAVA4C,IBMJAVA4J等进行XML分析。你也可以用内码转换工具,将编码转换为“UTF-8”或“UTF-16”后进行解析,然后将解析结果转换回原来的编码。本站的软件园地中的ccnv(Code Converter)就是这样的工具。当然,你也可以自己写一个内码转换程序。
关于“UTF-8”和“UTF-16”编码的详细信息,请查看本站标准荟萃中的UTF-16和UTF-8标准。
--------------------------------------------------------------------------------
XML如何与数据库连接?
--------------------------------------------------------------------------------
XML是一种文件格式,它没有规定与数据库的连接方法,你需要用传统的方法连接数据库,进行数据库查询,然后将查询结果转化为XML格式。现在有一些工具提供了XML与数据库的连接过程大都遵循这样的步骤。下面是一个利用ASP直接生成XML文件的例子,你可以访问
http://www.xml.net.cn/Asps/test/roster1.asp查看执行效果。
<%@ language="VBScript" %>
<?xml version="1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="..\image\roster.xsl"?>
<roster>
<%
set cConn = Server.CreateObject("ADODB.Connection")
call cConn.Open("DSN","USER", "PWD")
set rs = cConn.Execute("SELECT DISTINCT * FROM roster")
Do While Not rs.EOF %>
<Record>
<Name><%=trim(rs("name"))%></Name>
<NativePlace><%=trim(rs("NativePlace"))%></NativePlace>
<Age><%=trim(rs("Age"))%></Age>
<Telephone><%=trim(rs("Telephone"))%></Telephone>
</Record>
<% rs.MoveNext
Loop
rs.Close
set rs=nothing
set cConn=nothing
%>
</roster>