当前位置: 首页 > 专利查询>微软公司专利>正文

用于在强类型环境中保存未知标记的方法和系统技术方案

技术编号:2851846 阅读:373 留言:0更新日期:2012-04-11 18:40
描述了用于在强类型化环境中保存未知标记的方法和系统。在一个实施例中,接收可能同时包含已知和未知的基于XML的元素的基于XML的标记。实例化与已知的基于XML的元素相关联的强类型化树,并实例化与已知和未知的基于XML的元素都相关联的弱类型化树。然后以保存未知的基于XML的元素的方式,将强类型化树和弱类型化树相关。

【技术实现步骤摘要】

此专利技术涉及处理XML和基于XML的标记语言的方法和系统。
技术介绍
通常,XML和基于XML的标记语言是可扩展的。在一些系统中,可扩展性机制是基于可由处理标记的任一个任意代理实现的已知名字空间和未知名字空间的概念。未知名字空间可包含特定代理可能理解也可能不理解的任意扩展。当多个代理被链接在一起以构成管道,在管道中使标记流顺序地通过每一个代理,且代理在某种程度上修改标记时,所引入的可扩展性机制产生一个称为“标记保存”的难题——即,保存任何特定代理可能不理解的标记。在一些系统中,已知和未知的名字空间的集合在管道中的个体代理之间可能有所不同。在这样一个系统中,任何先于另一个代理而到来的代理保存来自任何未知名字空间的标记就变得很重要,因为理解该名字空间的后续代理可能想要处理来自该名字空间的内容。针对基于XML的标记语言的常规处理代理常常选择实现文档对象模型(DOM)树。DOM树是弱类型化的结构,它对于标记中所找到的每一个元素标记包含一个节点。因为每一个节点都是弱类型化的,所以代理创建持有未知名字空间的标记的非指定类型的节点,在处理期间跳过这些节点,以及接下来将它们顺序地串行化回标记以传递给下一个代理,这是一个相当简单直接的过程。在强类型化环境中,处理未知名字空间就没有那么简单直接。更具体而言,在强类型化环境中,要保存与未知名字空间相关联的标记即使不是不可能,也是很困难的,因为无法向该标记指派确定的类型。例如当XML语法分析器通过将标记翻译成诸如二进制形式等中间的不同形式来进一步处理标记时,可能存在更复杂的情形。在此类情况下,使用标记的代理通常不能修改此翻译步骤。由此,此专利技术源自于与在强类型化环境和/或涉及中间翻译阶段的环境中为标记保存问题提供解决方案相关联的考虑。
技术实现思路
描述用于在强类型化环境中保存未知标记的方法和系统。在一个实施例中,接收可能包含已知和未知的基于XML的元素的基于XML的标记。将与已知的基于XML的元素相关联的强类型化树实例化,并将与已知和未知的基于XML的元素相关联的弱类型化树实例化。然后以保存未知的基于XML的元素的方式,将强类型化和弱类型化树相关。附图说明图1示出强类型化环境的各个方面。图2示出可在强类型化环境中操作的个体组件。图3根据一个实施例示出示例性组件。图4示出示例性弱类型化和强类型化树。图5是描述根据一个实施例的一种方法的流程图。图6示出一种示例性计算设备,结合该设备可实现一个或多个实施例。具体实施例方式概述以下所描述的方法和系统提供可在强类型化环境的上下文中保存与未知名字空间元素相关联的标记的手段。至少在一些实施例中,这是通过实例化与已知的基于XML的元素相关联的所谓强类型化树以及与已知和未知的基于XML的元素相关联的弱类型化树来实现的。然后使用一种相关过程,在基于XML的标记的反串行化期间将强类型化树和弱类型化树相关。然后由一种解除关联的过程以保存任何未知名字空间元素的方式将基于XML的标记反串行化。以下所描述的实施例是在计算环境的上下文中描述的。各个实施例可由诸如个人计算机或PC等计算机执行的诸如程序模块等计算机可执行指令或代码手段实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。各个实施例还可在除PC以外的计算机系统配置中实现。例如,可在手持式设备、多处理器系统、基于微处理器或可编程的消费者电子设备、网络PC、小型计算机、大型计算机等等中实现各个实施例。替换地或者另外地,还可在分布式计算环境中实施各个实施例,其中任务是由通过通信网络连接的远程处理设备执行的。在分布式计算环境中,程序模块可位于本地和远程记忆存储设备中。尽管各个实施例都可被结合到以上提出的许多类型的计算环境中,以下仅在常规计算设备形式的示例性通用计算设备的上下文中描述图6中出现的一种示例性环境,该示例性环境将在此文档结尾处的标题“示例性计算环境”下详细描述。强类型化环境的特征作为强类型化环境的一个例子,结合图1考虑以下内容。假定诸如可能在计算机显示器上所显示的页等一页内容100包括文本102、图形104、图像106、一些附加文本108和可点击按钮110。此内容可被表示为(在存储器中)树112,其根为FixedPage(固定页),其节点为文本、图形、图像、文本和按钮。此树的XML表示在114示出。在树112中,每一个元素都由类对象的实例表示。在此例中,FixedPage是类的实例,且该类被定义为具有称为children(子)的属性。children属性是强类型化的,且它被强类型化为某个大类的集合。该树的每一个元素都是一个类名,它们是某个基类的子类,或是从其派生而来,在此例中,该基类是UIElement(UI元素)。在此强类型化环境中,FixedPage类实例子属性仅可持有从基类UIElement派生的内容。扩展的标记可能被丢失的一种方式的示例现在考虑图2中所示的情形,其中应用程序200生成要由打印系统204处理的标记202。在此例中,打印系统204包括过滤器或代理206、208和210的集合。这些过滤器通常加载页或文档的标记,对其进行某种程度的修改,然后提供该标记以供下一个过滤器处理。例如,过滤器可向页添加水印,按不同顺序重新排列页,缩放、旋转、调整页上的图像,等等。打印系统的一个例子是微软的WinFX系统。在WinFX系统中,有诸如语法分析器212和串行化器214等标准软件组件处理XML,或在WinFX上下文中更准确地说,处理XAML(可扩展应用程序标记语言)。在此类及其它系统中,过滤器206调用语法分析器212以加载标记。响应于此,语法分析器212向过滤器返回实例化的元素树(诸如图1中的树112)。过滤器随即处理该树,对其进行某种程度的修改,并向串行化器214提供经修改的树。串行化器214随即将经修改的树串行化为经修改的标记,然后该标记被以某种方式保存,如数据存储216所示。下一个过滤器(在此例中是过滤器208)随即调用语法分析器212以加载经修改的标记,并如上述那样对相关联的树进行操作,以继续该过程。在最后一个过滤器完成了它的处理以后,经修改的树由串行化器214串行化处理,并可被提供给诸如打印机等使用设备。注意,在此特定情形中,应用程序200已在标记202中插入了元素“ext Bar”。可能此元素是要被用来以某种方式控制使用设备的。例如,如果使用设备是打印机,则此元素可能与选择用于打印该文档的特定类型的墨水相关联。但是,在强类型化环境中,此元素或相关联的名字空间是未知的,因此在第一个过滤器以后将被丢失。在强类型化环境中保存扩展的标记根据即将描述的实施例,通过实例化与已知的基于XML的元素相关联的强类型化树以及与已知和未知的基于XML的元素相关联的弱类型化树,强类型化环境中的未知元素在处理XML(或者在下述实现示例中为XAML)期间得以保存。这两棵树随即被彼此相关,从而弱类型化树包括未知元素,并与强类型化树的已知元素相关。因为这两棵树保持相关,所以弱类型化树能以保存未知标记的方式被重新串行化为XML(或XAML)。作为实现示例,考虑图3,其中提供在微软的WinFX平台的上下文中的一种实现。应当认识到并理解,即将描述的实现并不是被用本文档来自技高网
...

【技术保护点】
一种方法,包括:在强类型化环境中;接收可能包含已知和未知的基于XML的元素的基于XML的标记;实例化与所述已知的基于XML的元素相关联的强类型化树;实例化与所述已知和未知的基于XML的元素都相关联的弱类型化树 ;以及以保存所述未知的基于XML的元素的方式将所述强类型化树和所述弱类型化树相关。

【技术特征摘要】
US 2004-12-30 11/026,3411.一种方法,包括在强类型化环境中接收可能包含已知和未知的基于XML的元素的基于XML的标记;实例化与所述已知的基于XML的元素相关联的强类型化树;实例化与所述已知和未知的基于XML的元素都相关联的弱类型化树;以及以保存所述未知的基于XML的元素的方式将所述强类型化树和所述弱类型化树相关。2.如权利要求1所述的方法,其特征在于,所述实例化的动作是在所述基于XML的标记的反串行化期间执行的。3.如权利要求1所述的方法,其特征在于,所述相关的动作是由被配置成反串行化所述基于XML的标记的反串行化器组件执行的。4.如权利要求1所述的方法,其特征在于,还包括在接收所述基于XML的标记以后,将所述基于XML的标记转换为二进制表示。5.如权利要求4所述的方法,其特征在于,所述实例化强类型化树的动作包括对所述二进制表示进行操作以实例化所述强类型化树。6.如权利要求1所述的方法,其特征在于,所述实例化弱类型化树的动作包括对于所述基于XML的标记中的每个已知元素,在所述弱类型化树中创建一个占位符节点;以及对于所述基于XML的标记中的每个未知元素,创建保存所述未知标记的节点。7.如权利要求6所述的方法,其特征在于,所述创建保存未知元素的节点的动作包括将所述未知元素的文本串与所述节点相关联。8.如权利要求6所述的方法,其特征在于,还包括在创建所述占位符节点以后,对于每个占位符节点,将各占位符节点设为所述强类型化树中的对应节点。9.如权利要求1所述的方法,其特征在于,还包括向一组件返回所述强类型化树,以使所述组件能够对所述强类型化树进行操作以提供经修改的强类型化树。10.如权利要求9所述的方法,其特征在于,还包括将所述经修改的强类型化树串行化为基于XML的标记。11.如权利要求10所述的方法,其特征在于,还包括在串行化期间,将所述弱类型化树与所述经修改的强类型化树重新相关。12.如权利要求10所述的方法,其特征在于,还包括在串行化期间,允许应用定义哪些节点应或不应被串行化的一个或多个规则。13.一种系统,包括一个或多个计算机可读介质;一个或多个软件实现的组件,所述组件包含在所述一个或多个计算机可读介质上,并被配置成在强类型化环境中,接收可能包含已知和未知的基于XML的元素的基于XML的标记;实例化与所述已知的基于XML的元素相关联的强类型化树;实例化与已知和未知的基...

【专利技术属性】
技术研发人员:CP雅兹德泽弗司基J杜涅茨OH弗尔RA瑞尔耶
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1