Vincent.Chan‘s Blog

常用链接

统计

积分与排名

网站

最新评论

XML问题解答

级别: 初级

郭 路, Technical Manager

2001 年 7 月 01 日

自我们推出“XML在传统制造业供应链中的应用分析”专栏以来,受到了广大读者的欢迎。专栏作家郭路收到了大量读者的来信,提出了很多问题。现将读者提出的问题一一做了解答并总结整理出来,以期帮助广大读者更好的了解XML。

1、问:我用记事本建立的XML文件,使用中文的元素标记名,在IE中可以正常显示,但是在XML Notepad中报告却出错,请问XML元素名能否使用中文字符?

答:可 以,XML元素名可以由字母、除英文外的别国文字、下划线、冒号、数字、连字符、句号,其中数字、连字符、句号不能为首字符,当然,如果你使用中文元素 名,应该在句首指定 或 。至于XML Notepad不能识别中文元素名,应该说这是其软件自身的不足,目前对于各种XML解析工具或XML文本工具,均要求其支持UTF-8和UTF-16编 码,这是最基本的,但并不是所有工具都支持非Unicode编码,这就好像并不是所有浏览器都支持JavaScript一样,尽管HTML标准本身支持脚 本嵌入。需要说明的是,当我们把XML作为一种交换数据的词汇标准时,一般都是希望定义的元素标记具有典型性与广泛性,可以被互联网上的其它应用轻松识 别,从这个角度说,我们鼓励大家在建立专用的XML词汇表时,尽量采用约定俗成的,专业化、标准化、国际化的英文命名。





回页首


2、问:URI和URL有什么不同?

答:URI 是统一资源标识符(Uniform Resource Identifier)的缩写,URL是统一资源定位符(Uniform Resoure Locator)的缩写,另外还有URN也经常使用,它是统一资源名称(Uniform Resource Name)的缩写。URL是通过"通讯协议+网络地址"字符串来唯一标识信息位置及资源访问途径的一种方法;URN则主要用于唯一标识全球范围内由专门机 构负责的稳定的信息资源,URN通常给出资源名称而不提供资源位置;URI是一种用字符串唯一标识信息资源的工业标准(RFC2396),它使用的范围及 方式都较为广泛,在XML中用URI引用来标识元素的命名空间(Namespace),URI包括了URL和URN,是二者的超集。





回页首


3、问:我想在VC、VB中使用SAX可以吗?

答:可 以,在微软最新发布的MSXML3以及MSXML4 Preview中,已经包含了对SAX2的支持,MSXML开发包是一个COM组件,其V3.0的文件名为MSXML3.dll,V4.0的文件名为 MSXML4.dll,用户可以到XML技术网中下载它们的安装文件,其网址为http: //www.chinaasp.com/xml/download/。以下是MSXML3中新增的支持SAX2的COM接口列表:
IMXAttributes : IDispatch
IMXReaderControl : IDispatch
IMXWriter : IDispatch
IVBSAXAttributes : IDispatch
IVBSAXContentHandler : IDispatch
IVBSAXDeclHandler : IDispatch
IVBSAXDTDHandler : IDispatch
IVBSAXEntityResolver : IDispatch
IVBSAXErrorHandler : IDispatch
IVBSAXLexicalHandler : IDispatch
IVBSAXLocator : IDispatch
IVBSAXXMLFilter : IDispatch
IVBSAXXMLReader : IDispatch
有关MSXML3中关于SAX2的详细描述请访问MSDN的在线帮助 http://msdn.microsoft.com/library/en-us/xmlsdk30/htm/sax2_developersguide_overview.asp.





回页首


4、问:我想通过SAX访问一个动态的XML数据流可以吗?

答:可以,SAX允许所访问的XML数据为字符流形式,在SAX中用InputSource类表示可能的数据源,以SAX for Java为例,其连接语句如下所示:
InputSource source = new InputSource(xmlstring); SaxParser.parse(source);





回页首


5、问:我想在浏览器中格式化显示XML,该如何实现?

答:目前支持XML的浏览器只有IE,要在浏览器中格式化显示XML数据,需要指定样式表,可以使用CSS或XSLT来实现,以下是在XML文件中引用CSS和XSLT样式表的范句:

												<?xml:stylesheet href="example.css" type="text/css"?>
<?xml:stylesheet href="example.xsl" type="text/xsl"?>





回页首


6、问:我知道在微软新的ADO 2.5版中提供了对XML的支持,能具体解释一下吗?

答:是的,在ADO 2.5中可将一个数据库记录集保持为XML文档格式。同样,它可以将一个XML文档当作一个记录集打开,这就提供了一种在数据库与XML间数据转换的方法,以VB为例,可以用如下语句将一个记录集保存到XML文件:

												Set connect = New ADODB.Connection
connect.ConnectionString = "DSN=NorthWind;"
connect.Open
Set _recordset = connect.Execute("Select * FROM AGE")
_recordset.save"MateRecords.xml", adPersistXML





回页首


7、问:听说在SQL Server 2000中可以通过浏览器访问数据库并返回XML记录集,我已经装了SQL Server 2000,请问要怎样可以从浏览器访问数据库?

答:为 了通过浏览器访问SQL Server 2000数据库,你还需要安装IIS 5(如果直接使用Query Analyzer来获取记录集就不需要IIS),然后使用SQL Server 2000自带的SQL XML Support in IIS工具建立一个虚拟目录与实际的数据库对应,该虚拟目录是通过URL访问SQL Server数据库的入口,一个典型的HTTP访问语句如下所述:
http: // localhost / Northwind ? sql = select +name+ from + employees + for + xml + auto 其中,localhost表示本机,Northwind表示在SQL XML Support in IIS中建立的虚拟目录名,"?"后面跟SQL查询语句,for xml auto子句指定了将SELECT语句映射到XML中的具体方式。即将结果集作单个表模型化,所查询的字段可作为属性或子元素返回,并且XML结果集的线 性层次关系应与数据库表在select排列中的顺序相一致。





回页首


8、问:请问WAP是XML的一种特定格式吗?

答:不 是,WAP是无线应用协议(Wireless Application Protocol)的缩写,WAP中用到了XML技术,但WAP本身不是XML的一种实现方式。WAP是由一种用于将手机、PDA等掌上设备连接到互联网 的技术标准,它由一系列的协议规范组成,包括传输代理、网络安全、数据压缩、事务处理、信息显示等方面的约定。WAP技术由WAP Forum制定并发布,该论坛的会员包括爱立信、摩托罗拉、诺基亚、Phone.com、阿尔卡特、微软、IBM、Oracle、松下、西门子、三星、朗 讯等IT业界的重量级公司,在WAP规范中采用了目前互联网的多种技术,如IP、UDP、HTTP、XML等。与通常的万维网采用HTML语言显示信息不 同,在WAP中采用了WML作为客户端交互显示的语言,WML是无线标记语言(Wireless Markup Language)的缩写,WML标记语言完全符合XML规范,我们可以将它视作为无线应用专门定制的一个XHTML子集,之所以要制定WML而不直接使 用HTML或XHTML,主要原因在于无线应用具有带宽窄,客户端屏幕较小、分辨率低,不需要很复杂的显示功能的特点,而经过裁剪优化过的WML更符合其 需求。





回页首


9、问:请问目前中国有自己的XML组织吗?

答:有,其中中国XML联盟应该是国内最早的XML研究组织,其网站为 http://www.xml.org.cn,成员以上海交大电子工程系的学生为主,而由中国科学院电子商务研究中心成立的cnXML联盟则是我国XML规范制定的官方机构,其网站为 http://www.cnxml.org.cn,现在国内的企业可以在cnXML上登记和发布自己的XML词汇表。另外cnXML联盟正在研究制定cnXML规范,这是一个符合中国特色的电子商务语言规范,目前cnXML草案的最新版本是v0.83。





回页首


10、问:WIDL也可以实现分布式系统的组件调用,它与XMLRPC、SOAP有什么不同?

答:WIDL 是Web接口定义语言(Web Interface Definition Language)的缩写,是用XML表示IDL的一种规范,WIDL由WebMethods公司研究制定并已提交W3C。我们知道IDL(包括OMG IDL和MS IDL)是一种用于编写接口规范的语言,而WIDL的目的就是定义一种用于Web的接口规范,使不同应用可以通过Web站点实现交互和相互调用。在 WIDL3.0中,WIDL由IDL组件(定义接口信息)与文档映射组件组成(定义应用接口与XML调用消息之间的映射)组成,与XML-RPC、 SOAP不同的是,WIDL指定的是应用程序所需交换的信息,而不管消息调用的网络通信实现。





回页首


11、问:请问cXML与cnXML有什么关系?

答:虽 然只有一字之差,但二者没有直接关系,cXML即CommerceXML,它是由Ariba公司制定的一种基于XML规范,面向B2B模式电子商务交易的 行业标准。它在众多的电子商务交易中抽象出一种以订单为中心、并紧密围绕供货方和采购方的交易模型,另外还定义了一种信息交换的机制,进而完成订单的采 购、处理与交运等一系列过程。而cnXML则是由中科院cnXML联盟制定的中国电子商务语言规范,其商务流程定义参照国际标准的OBI购买模型。巧合的 是,cXML与cnXML都是有关电子商务交易语言的规范。





回页首


12、问:我想在工作流中使用XML来传递数据,我们的开发工具采用IBM的WebSphere,请问我应该用DTD还是Schema来制定数据规范?

答:DTD 是传统的XML约束规则,与XML Schema相比其局限性是显见的。如DTD本身采用与XML完全不同的语法;DTD对数据类型的支持极弱;DTD不支持命名空间等等。而W3C已于 2001/5/2日发布了XML Schema的1.0标准,因此在今后实际开发XML中显然是要优先考虑使用Schema。然而由于XML Schema的正式版本刚刚发布,因此能真正支持它的工具几乎没有(目前绝大多数支持Schema校验的工具遵循的是MS Schema版本,这与XML Schema V1.0是有区别的),而DTD由于发布时间早,有许多XML工具都支持它,因此对于特定的应用而言,能否使用XML Schema还要看环境的限制。总的来说,XML Schema是今后发展的方向,但DTD目前还是主流,另外由于DTD具有庞大的应用群,虽然XML Schema已成为工业标准,但DTD也不会就此被完全淘汰,所以现在选择DTD的,也不需有什么后顾之忧。还有第三种选择是使用MS Schema,在IE5、MSXML、BizTalk Server 2000中提供对这种规范的支持,正如我们刚才所说的,MS Schema不是正统的Schema,尽管目前有支持它的工具,仍应谨慎使用,今后Schema校验工具的发展肯定是要往W3C的XML Schema上靠的(包括IE)。就我个人意见,对于相对封闭的企业内部系统而言,由于系统本身具有较高的! 稳定性与独立性,数据的出口与入口都是已知的,可以考虑使用MS Schema;但如果受约束的XML数据具有很强的开放性,如面向互联网应用,要考虑到对XML数据的约束规则今后可以被外部应用所兼容,就应该尽量避免 使用MS Schema。





回页首


13、问:我的课题题目是有关 xml在edi 中的应用。由于是刚刚接触到 xml 这方面的内容,不知道应该从哪里开始,能介绍一些有关的知识吗?

答:EDI 其实是一种传统的电子数据交换标准,用于在不同的大型系统之间的数据交换,它有一套非常严谨的规则,包括报文规则,安全规则,传输规则等,EDI的成本很 高,目前在国内海关、银行用的较多,XML的崛起对EDI冲击很大,因为XML是完全免费的,而且容易实现,当然它还很不成熟,尤其是关于安全与数据的可 靠传输方面,它不像EDI是使用增值网的。XML要完全取代EDI是不太现实的,尽管EDI的商业规则已落伍,然而至少在20年内,我想它还会有很大的生 命力。因此最有可能的就是对现有的EDI实现进行改进,包括使用Web、XML等手段。目前在华盛顿地区的XML/EDI小组正在努力做这方面的事,他们 在研究一套适用于EDI的XML语法规则,可以通过 http://www.xmledi.com了解他们的最新成果,也可以访问 http://www.cenorm.be/isss/workshop/ec/xmledi/isss-xml.html,这是ISSS下的一个ProjectGroup,也是研究这方面技术的。





回页首


14、问:XML-Data与Schema有什么区别?

答:在XML 中XML-Data与Schema的区别是细微的。通常我们将对数据的某种约束规则统一称之为Schema即模式,这种称法在数据库中广泛使用并被XML 所沿袭。从这一角度而言,DTD、XML-Data都可算是用于XML的某种Schema,凡是符合Schema约束的XML文档我们便称之为有效的 XML,为了区别起见,我们可以将XML-Data称之为XML-Data Schema。XML-Data Schema最早由微软提出,并于1998年1月被W3C接受成为“建议”(Note),随后,在1999年W3C在XML-Data的基础上发布了 “XML Schema工作草案”,这也就是我们通常所说的XML Schema,XML Schema于2001.5.2日正式发布为W3C标准。作为XML-Data的创建者,微软公司在XML Schema V1.0尚未正式出炉前就已经在他的MSXML解析器、IE浏览器、Biztalk Server 2000中提供了对XML-Data的广泛支持(事实上它们支持的是XML-Data的一个子集),鉴于它与XML Schema的血缘关系,我们通常也称其为Schema,即MS Schema。基于XML-Data及其扩展的Schema有一共同特点,即Schema自身也都是标准的XML文档,这与传统的DTD规范是截然不同 的,这也是我们通常将XML约束简单划分为DTD与Schema的主要依据。需要指出的是,在IE、MSXML等工具中所支持的MS Schema与目前W3C正式发! 布的XML Schema并不完全兼容(也就是说,在Biztalk Server 2000中建立的xsd文件未必会符合标准的XML Schema规范)。





回页首


15、问:请问如何在XML中实现对二进制数据(如图象、声音文件)的封装?

答:通常有两种方法可以实现,第一种采用(外部的)未解析通用实体,如

												<!NOTATION bmp SYSTEM "bmp">
<!ENTITY image1 SYSTEM "example.tif" NDATA bmp>

第二种是将二进制数据文件进行Base64编码并直接嵌入XML元素中(也可以是其它的编码方式,但是要注意被编码的数据中不应包含符号">")。





回页首


16、问:请问使用SOAP的安全性怎样?

答:SOAP 本身不提供安全特性,由于SOAP采用HTTP作为实际的数据传输协议,因此其安全性也沿袭了HTTP。通常我们可以使用标准的网络安全协议来实现基于 SOAP的数据传输安全,如SSL、S-HTTP、PCT、TLSP等。在某些情况下也可采用数据加密的方式,即在应用层先对输入参数和返回结果集进行加 密,然后再使用SOAP传递已加密的XML数据。





回页首


17、问:在SOAP中一般请求/响应的内容与格式如何去定义?还有如何实现客户端从服务器上获取响应的数据。也就是说用户从客户端想服务器端发送请求信息,结果用户是如何得到相应信息的?

答:SOAP是使用HTTP协议的,其响应报头为"HTTP/1.1 200 OK",内容类型为" text/xml",你可以直接监听80端口,如果你是在VS环境中使用Microsoft SOAP toolkit的,可以到 http://msdn.microsoft.com/xml/general/toolkit_intro.asp中下载工具包,只需通过API传入调用方法和参数值,其底层的调用是屏蔽的。有关SOAP中一般请求/响应的内容与格式定义的详细信息可参看 《XML 在传统制造业供应链中的应用分析(四):选择XML信息流传递的协议 第一部分》一文,也可访问 http://www.w3.org/TR/2000/NOTE-SOAP-20000508/查看有关SOAP的最新提案。





回页首


18、问:DOM2与DOM1相比有什么不同?

答:DOM Level 2较DOM Level 1增加如下功能接口:

  1. 视图(View):提供视图与文档的联系
  2. 样式表(Style Sheet):提供访问和修改样式表的方法
  3. 层叠样式表(CSS2):提供CSS2兼容的方法
  4. 事件(Events):提供各种事件的接口
  5. 文档遍历(Document traversal):提供遍历文档层次的接口
  6. 文档范围(Document range):提供分割文档范围的接口




回页首


19、问:请问在HTML页面中该怎么使用DSO?

答:XML DSO是数据源对象(Data Source Object)的缩写,它是微软为了在HTML页面中绑定使用XML数据所采用的一种专利技术,DSO在Web页中以数据岛的形式实现,即采用一个新的 "XML"标记,"XML"标记中包含一个id属性用于标识对XML DSO的引用。客户端的IE浏览器可以识别XML DSO,并直接在客户端操作DSO数据源。一个典型的XML DSO数据源声明如下:

												<xml id="exampledso">
<!--Here is xml data body-->
<orderform>
<productname>glove</productname>
<amount>5000</amount>
<unit>pair</unit>
<deadline>2001.8.20</deadline>
</orderform>
</xml>

也可以使用脚本语言定义DSO数据源,如:

												<xml id="exampledso"></xml>
<script language="JavaScript">
exampledso.async=false;
xmldso.load("example.xml");
</script>

成功声明了XML DSO后,就可以在HTML文档的其它地方通过"id"标识号(本例中为"exampledso")来实现对DSO数据源的访问。如通过"datasrc"属性实现在HTML元素中对XML DSO的绑定:

												<table datasrc="exampledso" border=1 width=90%>
<tr>
<td<span datafld="productname"></span></td>
<td<span datafld="amount"></span></td>
<td<span datafld="unit"></span></td>
<td<span datafld="deadline"></span></td>
</tr>
</table>

或 使用脚本语言来对"exampledso"数据源对象进行操作,如可通过下面的脚本从XML DSO数据源中得到产品的定购数量: Sub getamount() amount.value = exampledso.recordset.Fields("amount") End Sub





回页首


20、问:请问,我要做一个站点,让互联网用户可以了解查询我们公司的商品,我可以使用XML作为后台的Web数据库吗?

答:XML 的确与数据库有相似之处,比如说它们都具有数据存储、数据有效性验证、数据查询、数据访问编程接口等特征,然而还有许多实际数据库所具备的功能是XML所 不具备的,如:索引、安全机制、事务机制、数据完整性、多用户访问,触发器、多文档查询等等。在实际应用中,对于一些数据量小、访问用户少、性能要求不高 的门户站点而言,将XML文档直接作为数据库使用是可能的,然而对于商业应用而言,后台还是应选择专门的数据库,如果访问数量较大的话,还可以考虑在数据 库与应用服务器之间采用XML作为信息缓存,其前提是数据库中对应数据的更新应是定期的,这样才能保证XML文件缓存中的数据在其生存期内与数据库中对应 数据相一致。





回页首


21、问:BizTalk Server 2000有哪些具体的功能,我可以用BizTalk Server 2000干什么?

答:BizTalk Server 2000是微软公司为商业用户在计算机网络应用中的信息交换所开发的企业级软件。BizTalk Server 2000提供了一系列工具以实现在商业网络环境中对分散的文档数据共享,并可编辑约束那些文档的规范。BizTalk Server 2000支持多种文档格式,并使用基于XML-Data的XML作为它自己的文档格式以及不同应用间信息传递的中间格式。在BizTalk Server 2000中包含了以下工具:

  1. BizTalk Editor:可以导入、建立、编辑DTD、Schema和XML文档;
  2. BizTalk Mapper:允许用户将符合规范A的文档结构映射到符合规范B的文档结构;
  3. BizTalk Management Desk:建立、维护网络环境中不同应用之间的输入输出关系;
  4. BizTalk ServerAdministrator Console:BizTalk管理员控制台用于系统工程师管理、配置BizTalk服务器,包括BizTalk服务器组属性的设置,直接对文档队列进行操作管理等。




回页首


22、问:SAX是W3C的正式标准吗?哪里可以获得SAX的资源?

答:SAX 不是W3C的正式标准,事实上它与W3C没有任何瓜葛,SAX是Internet上一群XML解析器技术的热衷者共同研究的成果,David Megginson是SAX研究开发工作的核心人物。作为一种基于事件的XML编程接口,SAX已被各种XML团体广泛认可,有关SAX的资料和下载可以 访问http://www.megginson.com/SAX获得。





回页首


23、问:使用浏览器浏览XML的速度比HTML快吗?

答:通 常不会,XML与HTML的区别并不在于对浏览速度的改善,而在于XML是面向数据内容的,HTML是面向格式化显示的,计算机应用可以自动地理解XML 文档并实现对其各种操作(包括在浏览器中的格式化显示),XML的出现为万维网信息浏览模式提供了更丰富的空间。但只有在特殊情况下,人们可以在浏览 XML文档时获得速度上的好处,比如某人要查看新浪商城中的某件商品的详细信息,共有两页,第一页是关于商品的价格和功能介绍,第二页是关于生产厂家的背 景介绍,若采用HTML表示,需要建立两个HTML文件,而采用XML,只需建立一个XML文件(需结合XSLT使用),由于XML文件在浏览第一页时已 经获得,因此在浏览第二页时无需与Web服务器交换,当然,由于将两个文件的信息合一,因此在第一次浏览XML文档时速度会较慢。





回页首






回页首


关于作者

郭路

郭 路,杭州大学计算机系92届本科应用专业,曾先后就职于浙江省纺织经贸总公司计算机中心、思能软件、华企、飞时达等软件公司,担任技术主管,主要从事于企 业 MIS、GIS、ERP 及电子商务项目的开发管理和系统分析,对 IBM、微软、SUN、Autodesk 等公司的企业级产品有较深的研究及理解。 mailto:gl2_public@sina.com

posted on 2006-03-21 23:44 Vincent.Chen 阅读(267) 评论(0)  编辑  收藏 所属分类: XML


只有注册用户登录后才能发表评论。


网站导航: