|
的. XML是一个中立的标准.他不支持或是反对任何一种描述性语言.所以说它是一个开放的领域. 描述性语言是在”Extensible Style Language”XSL (可扩展类型语言).计划中提出的.
C.9 我能用Java编写或是管理XML文件吗?
可以.我们可以用任何一种编程语言从任何一种XML格式的信息中提取数据.
D.高级开发者和应用者(包括网络管理员和服务器操作人员)
D.1哪儿可以找到XML的规范?
请参见: http://www.w3.org/TR/REC-xml
D.2 "DTDless" ,"valid",和"well-formed"这些术语是什么意思?
在完整的SGML中,我们用DTD描述特定文件中的各种标识.但DTD的生成是一件极其复杂的工作.所以XML被设计成可以缺省DTD. DTDless表示您可以创造一个标识而不需正式的定义.当然这也要付出代价.您不能在其他的文件中对同样的形式采用自动的处理. DTDless的文件是以一种非正式的方式定义它的标识的.标识是在哪儿出现的就在哪儿定义它.但当一个比方说是浏览器的XML应用程序打开了一个DTDless的文件,它必须要有办法来理解文件的结构.但它又没有DTD,所以规则上有了一些改变. 举一个例子:
HTML中的<img> 是被定义为”EMPTY”(空)的.它并不需要”end-tag”(结尾标签). DTD 的XML应用程序在打开一个缺省DTD. 的文件,读到<img>时不知道是否需要一个”end-tag”.所以”well-formed”(结构良好)的定义也变得重要了. ”well-formed”可以使得一般元素和”EMPTY”元素区分开来.
D.2.1 ”well-formed”(结构良好的)文件
1.如果一个文件没有DTD,它必须在开头处有一个"Standalone Document Declaration"(独立文件声明):
<?xml version="1.0" standalone="no" encoding="UTF-8"?>
<foo>
. <bar> ...<blort/>...</bar>
</foo>
2.除了空素以外, 标记必须前后匹配.
3.所有的”attribute”值都要用引号括起来.
4. ”EMPTY”元素的tag要么用”/>”结尾,要么要补成”non-EMPTY”(非空)的元素. 比如说: <BR>要么写为<BR/> 或是<BR></BR>
5.文件中必须不能出现”markup-start “(标识开始符), 比如”<”或是“&”.
6.元素必须遵守SGML的规则,正确嵌套.
D.2.2”Valid “(合法的)XML
合法的XML是指有DTD的文件.它必须是”well-formed”的.
D.3 在DTD中,我什么时候用属性, 什么时候用元素?
这并没有唯一的答案.着取决于您设计文件的风格.以下是两个极端的例子,它们的功能是一样的:
1. <l n="184"><sp>Portia</sp><text>The quality of mercy is not strain’d,</text></l>
2. <line speaker="Portia" text="The quality of mercy is not strain’d">184</line>
D.4 SGML 和XML之间还有什么区别?
主要的区别在于DTD的内容.为了简化语法和编写软件的过程, XML中对SGML做了很大缩减.
D.5 现在有哪些XML的软件可以使用?
由于更新速度太快,我们建议您参看: http://www.oasis-open.org/cover/xml.html.
D.6 要使用XML,我是否要改变服务器的软件?
要的,但改动不大.您只要编辑您的mime-types文件,加上以下一句:
application/xml xml XML
经典问答
一.HTML已经这样流行了,为什么还要发展XML?
简单地讲,HTML不能完成,我们希望XML所要完成的任务。原因很简单,XML所要完成的任务,必须由元置标语言来完成,而HTML只是一个实例置标语言。 在XML发布之前,国际互联网的发展受到HTML如下几个问题的束缚:
1) HTML无法描述数据内容,而这一点恰恰是数据检索、电子商务所必须的。
2) HTML对数据表现的描述能力是十分不够的,如HTML还不能描述矢量图形、 科学符号等对象,目前只能通过图象来表现这些对象。
3) HTML实例置标语言的地位,完全不能适应对新标记需求的发展需要。
XML的出现,使上述问题都得到很好的解决。
试想在互联网世界,如果大家都讲方言,互相交换信息时都要进行翻译,那将是一个多么难以沟通和交流的世界。在互联网世界,XML之所以重要,恰恰是由于它扮演了"国际语言"角色的缘故。此外,XML更为互联网世界提供了定义各行各业的"专业术语"的工具。
二.如何在浏览器中阅读XML?
阅读XML文档的工具一般称为XML解析器, 也称为XML处理器。 XML处理器将数据传送到应用软件, 以便处理, 出版, 查询, 或显示。XML不给应用软件提供 应用程序接口 (API), 它只是把数据传给应用软件. XML处理器不解析非构造良好的数据。 Netscape 和 Microsoft 都已经将XML解析器包含在其浏览器中。 XML开发者团体提供免费的XML阅读器和解析器, 以便在应用软件或XML制作软件中进行应用。
三.为什么要使用XML而不是HTML?
比较重要的原因有以下六条:
1)作者和供应商能使用XML设计自己的文档类型,不必被HTML所约束。
2)由于XML的超文本链接能力比HTML强得多,XML提供的信息内容比 HTML更丰富,也更易于使用。
3)XML能提供更多更好的机制方便浏览器的信息表现和优化性能。
4)XML舍弃了SGML的复杂性,因此编写处理XML的应用程序会很容易。
5)信息易于存储,可重复使用。
6)XML文件在SGML环境中也可使用,不一定要局限于在WEB中使用。
四.可以用Java创建和管理XML文件吗?
是的,任何程序设计语言都能被用来从XML形式的源文档中输出数据。已经出现了许多的前端和后台工具使得程序设计和数据管理更加方便。下面两个网址有更加详细的说明: http://www.markwatson.com/XMLdb_0_1.htm http://developerlife.com
五.为什么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 oster.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>
xml应用实例
本文介绍3个XML的基本应用实例,旨在带领你快速步入XML编程世界。实例包括:在.NET中使用XML、读取XML文件,插入数据到XML文档中。
在.NET中使用XML
如果使用过MSXML3,那么在.NET应用程序中使用XML将是一个相当简单的过程。即时没有接触过MSXML3,也不要紧,你会发现使用.NET平台提供的相关类也是很容易的一件事情。
有两种主要API可用于访问建立在XML文档中的数据,它们包括只向前的无缓冲存取以及随机存取,而且自始至终都使用到文档对象模型DOM。有关这2个API的类位于System.XML集合中。
如果要快速有效地访问XML文档中的数据,就需要使用XmlTextReader类。这个类采取“拉”模式处理方式,要比简单XML API(SAX)中的“推”模式处理方式优越许多。使用XmlTextReader类之前首先要引用System.Xml集合,在C#中是使用“using”关键字来引用,在Visual Basic中则是使用“imports”关键字。引用了集合后,就可以象下面的代码所示开始例示读操作了:
XmlTextReader reader = new XmlTextReader(pathToXmlDoc);
int elementCount = 0;
while (reader.Read()) {
if (reader.NodeType == XmlNodeType.Element) {
elementCount ;
}
}
XmlTextReader类中有几个不同的构造器,上面所示的负责接收一个XML文件的路径作为字符串参数。
虽然只向前的“拉”模式处理相当有效率,但它却是只读的,所以不能允许执行插入、删除或者更新XML文档节点的操作。当需要对XML文档施加更多的控制并需要更大的灵活性时,我们可以看一看文档对象模型DOM。DOM API的功能将XML文档中的每一个节点装载到一个树形结构中,看起来就象是一个“家谱”。内存中有了这个结构,随机存取XML文档中的不同节点就变得可行。
开始创建DOM树形结构前,首先引用System.Xml集合,然后例示XmlDocument类:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(pathToXmlDoc);
XmlNode root = xmlDoc.DocumentElement;
通过使用XmlDocument类中的相关方法,在树形结构中添加节点的操作可以很容易地完成。下面的例子演示了如何从一个文件中装载XML,然后在根节点root下添加一个子元素以及它的相关属性:
XmlDocument xmlDoc = new XmlDocument();
XmlDoc.Load(pathToXmlDoc);
XmlElement root = xmlDoc.DocumentElement;
XmlElement newNode = doc.CreateElement("newNode");
newNode.SetAttribute("id","1");
root.AppendChild(newNode);
以上代码执行后,将产生下面的XML文档:
<?xml version="1.0"?>
<root>
<newNode id="1"/>
</root>
当需要将包含XML的字符串装载进DOM中时,可以使用XmlDocument类的LoadXml()方法。装载进去后,就可以按照下面的方式操作XML:
string myXml = "<root><someNode>Hello</someNode></root>";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(myXml);
//....manipulation or reading of the nodes can occur here
除了以上几种,在System.Xml集合中还有多种其他类可用于执行不同的任务。上面的介绍仅仅是浅尝则止,大量的应用还需要更多的练习。
读取XML文件
下面介绍如何使用XmlTextReader类读取XML?br />
[4] [5] [6] [7] [8] [9] [10]
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
|