在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
什么是置标语言? ---------------------- 我们日常书写的语言,被称为书面自然语言。如果在书面自然语言中为了标识某些信息,而加入一些标记,这种书面自然语言就可被称为置标语言(英语为:Markup Language)。比如在一段书面语言中,为了说明某一句话的重要,在这句话下面画上底划线。但是,我们在这里解释的置标语言,实际上是一种为了计算机处理而设计的置标语言,其中所用到的标记,往往使用代表一定含义的文字或数字表示。通常的做法是,根据需要,先定义一套助意的标记,然后将这套标记添加到书面语言中去,使书面语言变成置标语言。 例如,我们为了让计算机了解,一段书面语言中,那一部分是标题,那一部分是作者名,那一部分是正文,我们定义如下一套标记: <标题>、</标题>;<作者>、</作者>;<正文>、</正文> 那么,我们就可以将上面这段书面语言改写成置标语言: <标题>什么是置标语言?</标题> <作者>xml.net.cn</作者> <正文>我们日常书写的语言,被称为书面自然语言。… …</正文> 置标语言,不同于一般的控制流程序设计语言,基本上可以被视为是一种数据流的文档结构描述语言。在计算机处理过程中,置标语言的标记既可以作为数据,也可以作为控制语句来使用。 在计算机程序语言中,一般把一种语言的定义整体称为某某程序设计语言,而把用这种语言编写的文字段落,称为某某语言程序。套用这个习惯,我们把置标语言的定义整体称为某某置标语言,而把用这种置标语言编写的文字段落,称为某某语言文档。如果我们把上面定义的那套标记叫做"文章置标语言"的话,那么下面那段置标语言,就可称为"文章置标语言文档"。
什么是SGML? ---------------------- 从字面上看,SGML(Standard Generalized Markup Language--标准的通用置标语言)是一种置标语言,实际上它是一种通用的文档结构描述置标语言,主要用来定义文献模型的逻辑和物理类结构。SGML是ISO组织于1986年发布的ISO 8879国际标准。 一个SGML语言程序,要由三部分组成,即语法定义、文件类型定义(简称DTD--Definition Type Document)和文件实例。语法定义,定义了文件类型定义和文件实例的语法结构;文件类型定义,定义了文件实例的结构和组成结构的元素类型。文件实例是SGML语言程序的主体部分。 SGML的实际使用中,每一个特定的DTD都定义了一类文件。例如,所有的新闻稿件都可以使用同一个DTD。因此,人们习惯上把具有某一特定DTD的SGML语言,称为某某置标语言。例如用于国际互联网的HTML语言。这样SGML就成为那些派生语言的元语言。
什么是XML? ---------------------- 什么是HTML? ---------------------- XML、SGML、HTML之间是什么关系? ---------------------- XML的用途是什么? ---------------------- HTML已经这样流行了,为什么还要发展XML? ---------------------- 简单地讲,HTML不能完成,我们希望XML所要完成的任务。原因很简单,XML所要完成的任务,必须由元置标语言来完成,而HTML只是一个实例置标语言。 在XML发布之前,国际互联网的发展受到HTML如下几个问题的束缚: 1) HTML无法描述数据内容,而这一点恰恰是数据检索、电子商务所必须的。 2) HTML对数据表现的描述能力是十分不够的,如HTML还不能描述矢量图形、 科学符号等对象,目前只能通过图象来表现这些对象。 3) HTML实例置标语言的地位,完全不能适应对新标记需求的发展需要。 XML的出现,使上述问题都得到很好的解决。
XML怎样简化SGML? ---------------------- 用XML你能定义自己的文件类型(DTD)吗? ---------------------- 谁对XML负责? ---------------------- 为什么XML如此重要? ---------------------- ---------------------- 什么是文档类型定义(DTD)? ---------------------- 如何在浏览器中阅读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吗? ---------------------- 可以用Java创建和管理XML文件吗? ---------------------- 开发问题 ---------------------- 从http://www.w3.org/TR/REC-xml中就可以找到。
“DTDless”、“valid”和“well-formed”等术语的含意是什么? ---------------------- 为什么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> |
请发表评论