利用.NET schema对象模型提高灵活性

对象

XML schema是W3C的推荐选择,它提供了定义XML文件的结构,内容和语义的工具。与另外两个schema建模工具文件类型定义(DTD)和XDR (XML Data Reduced)相比,XML schema具有两个关键优势。第一,由于它是针对定义XML数据结构的W3C官方推荐,所以公司组织都将采用同样的定义。第二,它是最新的schema技术,因此它的建构就是要修正另外二者中存在的漏洞和缺陷,特别是在DTD之中的。

XDR并不是一个schema技术的备选方案,因为它只是微软公司的XML schema规范的一个早期草稿。在.NET之中,XDR主要是为了向下兼容性而被支持。SQL Server 2000的XML扩展和微软公司的COM parser (MSXML)仍然对其广泛地使用。

我们开始先来看看XML schema对象模型是如何让你使用.NET的类来操作schema部件的。然后,我们看一看处理schema信息的几种途径。

Schema背景
XML schema代表着XML类型系统并应在他们向其他应用软件和平台序列化他们的状态时被用来描述类和对象。.NET XML schema对象模型(SOM)可以帮助在.NET-specific类型系统和XML schema类型系统之间建构一个桥梁,并使计划性地创建和修改schema变得容易。Schema文件是一个带有.xsd扩展名的XML文件。

所有可以在XML schema文件中使用的数据类型都有一个.NET的副本。一旦一个XSD schema被编译为.NET表述(representation)对象模型,你就可以使用SOM类来访问他们了。Schema编译器将XSD装配到一个XmlSchema对象之中,这个对象通过属性和方式显示了schema的信息。

在一个给定的平台上,在XSD和一个合成二进制类之间的一个有效的序列化机制提供了巨大的潜力,它是实现完全的跨平台互操作性的一个关键步骤。在.NET中,XML序列化是通过XmlSerializer类并利用XML schema定义工具(Xsd.exe)的服务来实现的。这个工具是.NET Framework SDK中的二进制可执行文件,你将会在.NET Framework安装路径中的BIN子目录中找到它,这个路径通常是C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK。

Xsd.exe可以从一个XSD文件中产生一个C# 或是Visual Basic类并从一个XML源文件中推断出一个XML schema。这个工具还负责由Visual Studio .NET执行的XML中与schema相关的技术。

检查SOM

.NET Framework提供一个类的等级来编辑现有的schema或是从头开始创建一个新的schema。类在System.Xml.Schema名称空间中被定义,名称空间中的根类是XmlSchema。一旦应用软件保留一个类的实例,他们就可以加载一个现有的XSD文件并利用所包含的信息构成内部属性和集合,通过使用XmlSchema编程界面,你就可以加入或编辑元素,属性和其他schema部件。最后,类提供一个Write方式,使你可以对有效的流对象保存目前的内容。

创建一个XmlSchema类的实例有两个途径:你可以使用缺省的建构器,它将返回一个新的空的类的实例,或者你也可以使用静态的Read方式。

Read方式通过一个流,文本阅读器或是XML阅读器在可用的schema信息上运行,被返回的schema还没有被编译。Read方式接受一个second argument,它是一个验证事件处理器。你可以将这个argument设置为空,但是不能在被读取的schema之中找到并处理验证错误。表A中显示了如何使用.NET SOM来读取和编译一个schema。

一旦schema被编译,你就可以访问由post-schema有效性信息组所定义的schema的组成元素,要访问schema中的实际类型,你需要使用SchemaTypes集合。

在编译之前和之后的信息之间的不同点之一是,一个所含(不是事先被定义的)的合成类型只有在schema被编译之后才会被查出。例如,假设你使用<xs:include>标签来引入一个外部类型定义,要系统性地查找类型的存在,你必须首先对schema进行编译。处理过程将对<include>声明进行扩展并加入到类型定义之中。

在表B中的代码显示了在编译之后如何得到在指定的schema中定义的合成类型的列表。

一旦schema被读取至内存,你就可以自由地操纵它的结构,而间接标签,例如<include>和<import>,只被识别为个体或单个对象。换句话说,他们只代表自己而不是他们要包括或是引入的内容。

应用软件和内嵌schema

要让客户机应用软件了解他们从服务器得到的XML数据的结构,schema信息是基础。然而,schema信息也是一个额外的负担,特别是在分布式应用软件之中,它会占去一部分带宽。

在一些情况下,你可以像对待Windows可执行文件中的调试信息那样对待schema:在应用软件的开发过程中不可或缺,而一旦应用软件被发布就毫无用处。这个模式并不应用于所有的应用软件,但是它形成了一个有趣的优化形式。一旦两个互相通信的模块对于一个XML格式达成一个,而在软件中又是hard-coded,那么XML数据的格式怎么能够以不同的方式进行交换呢?

当XML文件还没有完全被有关的应用软件所控制时,schema的确认就不再是一个可选择的功能。可以想到的第一个方法就是让客户机应用软件在本地存储schema并在需要验证引入的文件时对其进行加载。对于.NET应用软件,XmlSchema.Read静态方式就是你在加载现有schema文件时所需要的。另一个方法需要动态地创建并编译一个schema对象,然后用它来验证文件。XML验证还提供另一个方式来确保这个文件处于所期望的形式。

结论
有了XML schema,你就可以以一种非常严格的形式来描述文件的版面设计,让用户不必再去空想。就像我们在这里看到的,XML schema对象模型使你能够利用.NET Framework之中的schema支持。

时间: 2024-12-02 10:49:47

利用.NET schema对象模型提高灵活性的相关文章

利用.NET的schema对象模型提高灵活性

XML schema是W3C的推荐选择,它提供了定义XML文件的结构,内容和语义的工具.与另外两个schema建模工具文件类型定义(DTD)和XDR (XML Data Reduced)相比,XML schema具有两个关键优势.第一,由于它是针对定义XML数据结构的W3C官方推荐,所以公司组织都将采用同样的定义.第二,它是最新的schema技术,因此它的建构就是要修正另外二者中存在的漏洞和缺陷,特别是在DTD之中的. XDR并不是一个schema技术的备选方案,因为它只是微软公司的XML sc

企业服务器COD配置扩容内存和处理器提高灵活性

我们将介绍 CoD 资源的各种配置和支持选项. 已经实现了 Power Systems 服务器的企业需要定期增加系统资源,以满足应用程序的增加或实现新http://www.aliyun.com/zixun/aggregation/13999.html">工作负载的部署.在企业的服务器配置了 CoD 之后,就可以轻松快速地增加处理器和内存资源,而不会中断系统.使用以下选项中的一个可以永久或临时地激活这些资源. 企业服务器 COD 配置选项 默认情况下,在 Power Systems 企业级服

如何利用“虚拟用户群”提高产品营销能力(二)

在"如何利用[虚拟用户群]提高产品营销能力(一)"中我曾经介绍过一个虚拟用户群的概念(persona):根据目标消费群体的特性来建立虚拟用户群并将他们运用到促销广告中去,而不仅限于企业对他们的使用.当企业建立了一个新的站点并发布新产品的时侯,虚拟用户在此将发挥很大的作用,他们可以突破传统的企业单方面的广告营销模式,而转变成具有互动性和相关性的策略. 一般来说广告商通常会选择那些和他们目标消费群体相关的演员和场景来完成产品广告.那些产品的广告或许和目标群体具有一定的相关性,但是又如何让消

如何利用鱼骨分析法提高网站排名

随着互联网的进步,百度在审核关键词排名方面做得越来越细致.有站长朋友和我反映遇到这样的情况:上午的时候关键词排名十分靠前,正开心不已的时候,下午突然发现排名又后退了,或者过了几天又回到了原点.初出茅庐的站长百思不得其解.笔者提醒你,这是百度在审核你的网站. 鱼骨分析法是一个专业的分析因果关系的工具,换个角度来说,增加网站流量,提高关键词排名就是我们想要的"果",而"因"就是我们所应该要采取的措施.反向思考,有哪些"因"才是能够真正导致想要的&qu

C/C++中利用空指针简化代码提高效率

这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销! #include <iostream>#include <string>using namespace std;void print_char(char* array[]);//函数原形声明void main(void){ char* test[]={"abc","cde","fgh",NULL};//这里添加一个NULL,表示不指向任何

Windows7下利用凭据管理器提高访问速度的方法

在登录远程计算机或者访问站点时,我们通常要输入用户名和密码信息.这些重复性的操作会影响我们的工作效率和使用体验,其实对于本地用户来说我们完全可以将这些访问凭据(用户.密码.证书等)保存在本地,在访问时有系统自动完成凭据的认证过程,这无疑会提高我们的工作效率.凭据管理器就是这样一个系统组件,可帮助我们完成本地访问时的认证工作.其实,这个组件从Vista中就有了,雨林木风win7系统但无疑Windows 7中的凭据管理器在功能上更强一些,实用性也更大. 打开"控制面板",显示所有控制面板项

sqlserver2005利用临时表和@@RowCount提高分页查询存储过程性能示例分享_mssql2005

最近发现现有框架的通用查询存储过程的性能慢,于是仔细研究了下代码: 复制代码 代码如下: Alter PROCEDURE [dbo].[AreaSelect]    @PageSize int=0,    @CurrentPage int=1,    @Identifier int=NULL,    @ParentId int=NULL,    @AreaLevel int=NULL,    @Children int=NULL,    @AreaName nvarchar(50)=NULL, 

如何利用博客能提高网站权重与排名

第一.利用论坛签名 现在各个大论坛已经不给随便带上自己的签名.不过貌似a5还行.那如果不能带签名的论坛要怎么办?接着往下看很多人都喜欢去灌水区去回复别人的帖子然后带上自己网站的链接,这个我们要注意了,虽然说当时是增加了一个外链,可是朋友们想过没有,如果你发的帖子被删了怎么办?而刚好百度收录了这篇帖子.等下次百度更新的时候发现你很多的外链都不存在,可能你的网站就要背上一个外链不稳定的头衔.那么你的排名还能稳定么.当然老站外链上万的也不在乎这点,如果是新站可能会有点麻烦. 所以说,我们去权重高的论坛

简述利用不对称交换机提高网络性能

根据交换机每个端口速度的不同,可以把交换机分为两类.一类是对称交换机,另外一类是非对称交换机.对称的交换机是指用 同样的带宽在端口之间提供了交换连接,如全部端口都是100M/S的端口.而不对称交换机则是不同端口其带宽是不同的,如 有的端口是100M/S,而有的则是10M/S.对于口袋比较紧的企业来说,利用不对称交换机来提高网络的性能,是一个不错的选择.如不对称交换机可以用在服务器与客户端的连接上.如笔者以前在一家小企业当网络管理员的时候,那时交换机还是一个比较昂贵的设备.企业有一台文件服务器,为