CN100561472C - 用于在强类型环境中保存未知标记的方法和系统 - Google Patents

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

Info

Publication number
CN100561472C
CN100561472C CNB2005101287391A CN200510128739A CN100561472C CN 100561472 C CN100561472 C CN 100561472C CN B2005101287391 A CNB2005101287391 A CN B2005101287391A CN 200510128739 A CN200510128739 A CN 200510128739A CN 100561472 C CN100561472 C CN 100561472C
Authority
CN
China
Prior art keywords
xml
strongly
typed
tree
mark
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2005101287391A
Other languages
English (en)
Other versions
CN1797404A (zh
Inventor
C·P·雅兹德泽弗司基
J·杜涅茨
O·H·弗尔
R·A·瑞尔耶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1797404A publication Critical patent/CN1797404A/zh
Application granted granted Critical
Publication of CN100561472C publication Critical patent/CN100561472C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

描述了用于在强类型化环境中保存未知标记的方法和系统。在一个实施例中,接收可能同时包含已知和未知的基于XML的元素的基于XML的标记。实例化与已知的基于XML的元素相关联的强类型化树,并实例化与已知和未知的基于XML的元素都相关联的弱类型化树。然后以保存未知的基于XML的元素的方式,将强类型化树和弱类型化树相关。

Description

用于在强类型环境中保存未知标记的方法和系统
技术领域
此发明涉及处理XML和基于XML的标记语言的方法和系统。
背景技术
通常,XML和基于XML的标记语言是可扩展的。在一些系统中,可扩展性机制是基于可由处理标记的任一个任意代理实现的已知名字空间和未知名字空间的概念。未知名字空间可包含特定代理可能理解也可能不理解的任意扩展。当多个代理被链接在一起以构成管道,在管道中使标记流顺序地通过每一个代理,且代理在某种程度上修改标记时,所引入的可扩展性机制产生一个称为“标记保存”的难题——即,保存任何特定代理可能不理解的标记。
在一些系统中,已知和未知的名字空间的集合在管道中的个体代理之间可能有所不同。在这样一个系统中,任何先于另一个代理而到来的代理保存来自任何未知名字空间的标记就变得很重要,因为理解该名字空间的后续代理可能想要处理来自该名字空间的内容。
针对基于XML的标记语言的常规处理代理常常选择实现文档对象模型(DOM)树。DOM树是弱类型的结构,它对于标记中所找到的每一个元素标记包含一个节点。因为每一个节点都是弱类型的,所以代理创建持有未知名字空间的标记的非指定类型的节点,在处理期间跳过这些节点,以及接下来将它们顺序地串行化回标记以传递给下一个代理,这是一个相当简单直接的过程。
在强类型环境中,处理未知名字空间就没有那么简单直接。更具体而言,在强类型环境中,要保存与未知名字空间相关联的标记即使不是不可能,也是很困难的,因为无法向该标记指派确定的类型。例如当XML语法分析器通过将标记翻译成诸如二进制形式等中间的不同形式来进一步处理标记时,可能存在更复杂的情形。在此类情况下,使用标记的代理通常不能修改此翻译步骤。
由此,此发明源自于与在强类型环境和/或涉及中间翻译阶段的环境中为标记保存问题提供解决方案相关联的考虑。
发明内容
描述用于在强类型环境中保存未知标记的方法和系统。在一个实施例中,接收可能包含已知和未知的基于XML的元素的基于XML的标记。将与已知的基于XML的元素相关联的强类型树实例化,并将与已知和未知的基于XML的元素相关联的弱类型树实例化。然后以保存未知的基于XML的元素的方式,将强类型和弱类型树相关。
本发明还提供了一种用于在强类型环境中保存未知的基于XML的元素的标记的系统,包括:在强类型环境中,其中在所述强类型环境中,类实例子属性仅能持有从基类派生的内容:用于接收可能包含已知和未知的基于XML的元素的基于XML的标记的装置,其中未知的基于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平台的上下文中的一种实现。应当认识到并理解,即将描述的实现并不是被用来将要求保护的发明的应用限制于特定实现或平台。相反,提供该实现示例是为了说明如何能在这一特定环境中实现本文中所描述的各个发明原理。
在此特定示例中,系统300是一种基于软件的系统,它包括应用程序/过滤器302、具有二进制转换器组件和树创建器组件的语法分析器304、串行化器06、定制的解除串行化器308、以及设计者帮助程序310。
在WinFX平台的上下文中,语法分析器304是一WinFX对象,它结合其它未示出的组件对基于XML的标记进行语法分析,将已知的元素标签与各WinFX类相匹配,并实例化WinFX类对象。语法分析器304返回强类型WinFX树。串行化器306是一WinFX对象,它取强类型WinFX树并将其串行化为XML标记。
定制的解除串行化器308(在此上下文中也考虑定制的XAML解除串行化器)是一WinFX对象,它接收已由语法分析器304进行语法分析的每个标记元素的通知。定制的解除串行化器可执行任意的计算。在处理标记元素以后,它返回指示语法分析器304是应该使用该元素还是跳过该元素的结果代码。
设计者帮助程序310是一WinFX对象,它在强类型WinFX对象的标记被创建以前由串行化器306调用。设计者帮助程序可放出附加标记。
在操作中,系统300用以下方式工作。假定图2的XML(或XAML)要由系统300处理。注意,在图2的例子中,未知的XML元素“ext Bar”已被插入到原本为已知的XML元素集合中。当语法分析器304接收到XML时,在此特定情形中发生两个情况。
首先,XML由语法分析器的二进制转换器处理,并被转换为XML的二进制表示,在此例中该表示称为BAML。该二进制表示随即被保存。但是,在二进制转换过程中,依靠强类型环境中所发生的处理的力量未知的所有元素被忽略。由此,在处理XML中,当遇到“ext Bar”元素时,它将被忽略并且实际上在二进制转换中被丢失。
第二,语法分析器的树创建器取已保存的二进制表示,并处理该二进制表示以实例化作为强类型的对象树。这在树创建器组件的右边图示出。此树随即可被交给应用程序/过滤器302进行处理。
在所示和所描述的实施例中,在二进制转换过程发生的同时,二进制转换器为XML中遇到的每个节点或元素调用定制的解除串行化器308。在此例中,定制的解除串行化器将可扩展性插入到该过程中。更具体而言,对于由语法分析器304进行语法分析的每个节点,定制的解除串行化器都被调用,它决定应当如何处理这些节点或元素。在节点是已知的情形中(即,节点与诸如文本、图形等已知元素相关联),定制的解除串行化器308返回语法分析器,并指示语法分析器照常处理该节点。另一方面,如果有未知节点或元素,则定制的解除串行化起返回语法分析器并指示语法分析器跳过该节点,并不要将其转换为二进制表示。
除了指示语法分析器304要跳过未知节点或元素以外,定制的解除串行化器还构建弱类型DOM树。即,解除串行化器从可扩展性点内构建弱类型DOM树。此弱类型DOM树在定制的解除串行化器308的左边图示出。
在此特定例子中,对于每个已知的元素,解除串行化器都在弱类型树中创建一个占位符节点,即,空对象。在所示例子中,这些占位符被视为小的黑色实心圆。对于未知元素(诸如“ext Bar”元素等),解除串行化器创建包含原始标记(即,标记“<ext Bar/>”的文本串)的“保存”节点。这由弱类型树中的星形节点指示。
在过程中的这个点有两棵树——一棵是包含与已知元素相关联的节点的强类型树,一棵是具有包含已知元素的占位符的节点和与未知标记相关联的节点的弱类型树。
既然两棵树都已被创建,则一个节点接一个节点地走查每一个树,以将弱类型树的节点与强类型树的节点相关。如果弱类型树中的节点有强类型对象的占位符,则弱类型树中的该节点被设为强类型树中的对应对象或节点。另一方面,如果弱类型对象中的节点未被设为强类型树中的强类型对象的占位符,则该弱类型树节点被跳过,且该过程前进至弱类型树中的下一个节点。如果弱类型树中的这下一个节点具有与强类型树中的强类型对象相关联的占位符,则该弱类型树节点被设为强类型树中的对应对象或节点,且该过程继续进行,直至两棵树都已被走查完毕。由此,此过程有效地用来自强类树的对象或节点填充弱类型树。
在相关处理以后,已完全填充的弱类型树被返回。一旦弱类型树和强类型树之间的相关已被建立,该强类型树即可被返回给应用程序392并可由该应用程序操作。例如,应用程序可修改或删除强类型树上的节点。
一旦应用程序已经已某种方式对强类型树进行了操作,经修改的强类型树即被提供给串行化器306以重新串行化为XML(XAML)。
在重新串行化时,执行相关操作的逆操作。例如,假定应用程序302删除了强类型树往下的第二个节点。这在图4中示出。此处,串行化器找出强类型树中的哪些节点对应于弱类型树中的哪些节点,然后将弱类型树与强类型树相关。
例如,在串行化时,串行化器306走查强类型树和弱类型树,并修改弱类型树上的节点以反映在强类型树上所发生的处理。在此特定例子中,串行化器遇到强类型树和弱类型树中的第一节点。如果这些节点相互对应,则串行化器移动到每棵树中的下一个节点以检查对应关系。在此特定例子中,强类型树中的下一个节点已被应用程序删除。响应于此,串行化器找出弱类型树中的对应节点并将其删除。这在图中由虚线示出。
接下来,串行化器定位强类型树中的下一个节点——此处是向下(包括了已被删除的节点)第三个节点。串行化器随即发现弱类型树中的对应节点。但是,此处在弱类型树上一个被处理的对应节点和当前的对应节点之间有附加节点(即,对应于“ext Bar”)。在此情形中,如果居于中间的节点不是对应于强类型节点的节点,则将其作为原始XML串行化。
串行化器随即继续处理强类型树和弱类型树,从而依照经修改的强类型树将弱类型树串行化。因此,以此方式,串行化可发生,而不与强类型环境相关联的扩展的元素得以被保存。
尽管此示例描述对弱类型树的串行化处理以将其对应于经修改的强类型树,但是应当认识到,可以用能将各种规则应用于整个串行化过程来影响对应于弱类型树的最终的串行化的XML的方式来使用上述方法。例如,可指定定义哪些节点应或不应被串行化的某些规则。以此方式,各种规则可驱动串行化过程,以使所生成的串行化的XML是期望的和可预测的形式——特别是在考虑到在强类型环境中可能有对该环境而言未知的元素被插入到XML中这一事实的情况下。
示例性方法
图5是描述根据一个实施例的一种方法的步骤的流程图。该方法可在任何合适的硬件、软件、固件或其组合中实现。在一个例子中,该方法可结合诸如上述等系统来实现。但是,应当认识到并理解,其它系统也可实现此方法,而不会偏离要求保护的发明的精神和范围。
步骤500实例化强类型树和弱类型树。在此例中,强类型树包含在强类型环境中已知的元素或节点,而弱类型树包含与强类型元素相关联的节点,以及与已被插入到对应的XML中并且在该特定的强类型环境中未必已知的元素相关联的节点。步骤502将强类型树和弱类型树相关,以使弱类型树具有对应于强类型树上的已知节点的节点。
树的相关能以任何适当的方式执行。在上述过程中,弱类型树包含对应于强类型元素的节点的占位符,且相关是通过并行地走查两棵树、并为对应于强类型节点的弱类型节点插入或制造条目而发生的。
一旦树已被创建并被相关,步骤504即将强类型树返回给应用程序、过滤器集合或某个其它组件,以使强类型树可被操作以提供经修改的强类型树。一旦强类型树已被操作,它即被返回以与弱类型树进行相关。由此,步骤506将弱类型树与所返回的经修改的强类型树相关,而步骤508以保存所插入的未知元素的方式,将已相关的弱类型树重新串行化。
伪代码示例
以下伪代码示例提供可实现上述方法的一种方式。本领域技术人员将能理解该伪代码,它构成上述方法的一种示例性实现。应当认识到并理解,可使用实现所述实施例的其它手段,而不会偏离要求保护的本发明的精神和范围。
class  TreeNode
{
       bool isPlaceHolderForStronglyTyped;
       object stronglyTypedObject;
       string preserveMarkupElement;
       TreeNodeCollection children;
}
class PreserveMarkupLoader:CustomXamlDeserializer
{
      TreeNode weaklyTypedTree;
PreserveMarkupLoader( )
{
      weaklyTypedTree=new TreeNode( );
      //创建空树用于标记保存
}
      SerializationAction LoadNode(reader,node)
//为每个经语法分析的XML节点调用
      {
          如果节点是来自应被保存的未知名字空间:
              ●   取得未知元素的标记串(通过读入器或通过收集多个节点)
              ●  向weaklyTypedTree添加新的TreeNode:
                    ○  设TreeNode.isPlaceHolderForStronglyTyped为
                       false
                    ○  设TreeNode.preserveMarkupElement为所保存的标记
              ●  返回SerializationAction skip
        如果节点是来自应由强类型运行时间环境实例化的已知名字空间:
          ●  向weaklyTypedTree添加新的TreeNode
                ○  设TreeNode.isPlaceHolderForStronglyTyped为true
                ○  返回SerializationAction Normal
    }
    void PopulateTreeWithReferences(Document doc)
    {
      ●  并行地走查doc的树和weaklyTypedTree
            ○  如果weaklyTypedTree中的TreeNode有
               isPlaceHolderForStronglyType==true,则设
               stronglyTypedObject引用来自doc树的对象。前移两树中的当前节
               点
            ○  如果weaklyTypedTree中的TreeNode有
               isPlaceHolderForStronglyTyped==false,则只前移
               weaklyTypedTree中的当前节点
    }
}
main( )
{
//...语法分析器调用
PreserveMarkupLoader preserveMarkupLoader=new PreserveMarkupLoader( );
ParserContext pc=new ParserContext( );
   用PreserveMarkupLoader填充pc
Document doc=Parser.LoadXaml(stream,pc,...)as Document;
PreserveMarkupLoader.PopulateTreeWidthReferences(doc);
//现在我们有两个情况:
  1)  doc是强类型文档树(或FixedPage,或我们想要处理的任何强类型树)
  2)  preserveMarkupLoader包含weaklyTypedTree,其中每个节点是以下两者中的一
    个:
      a.对强类型树中的对象的引用节点
      b.持有所保存的标记的节点
      以对称方式处理串行化:
      ●  创建DesignerHelper的子类PreserveMarkupSerializer,它从
          preserveMarkupLoader取weaklyTypedTree作为输入
      ●  串行化器接收PreserveMarkupSerializer的实例
      ●  PreserveMarkupSerializer的SerializeNode( )方法在
          weaklyTypedTree中找到引用当前被串行化的元素的TreeNode的位置.
      ●  如果在该元素和前一元素之间有另一个TreeNode,检查该间隔所覆盖的所有
          TreeNode;如果TreeNode.isPlaceHolderForStronglyTyped==false,
          则将TreeNode.preserveMarkupElement作为原始xml串行化。
}
示例性计算环境
如以上所提及,可结合诸如在图6中的620所示等计算设备实现各个实施例。计算设备620包括处理单元621、系统存储器622、以及将包括系统存储器在内的各个系统组件耦合到处理单元621的系统总线623。系统总线623可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任何一种的局部总线。系统存储器包括只读存储器(ROM)624和随机存取存储器(RAM)625。包含诸如在启动期间帮助在计算设备620的各元件之间传递信息的基本例程的基本输入/输出系统(BIOS)626存储在ROM 624中。计算设备620还包括用于读和写硬盘660的硬盘驱动器627以及用于读或写可移动磁盘629的磁盘驱动器628。
硬盘驱动器627和磁盘驱动器628分别由硬盘驱动器接口632和磁盘驱动器接口633连接到系统总线623。各驱动器及其相关联的计算机可读介质为计算设备620提供计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管本文中所描述的示例性环境使用硬盘660和可移动磁盘629,本领域技术人员将可认识到,还可在示例性操作环境中使用能存储可由计算机访问的数据的其它类型的计算机可读介质,诸如光盘驱动器和光盘、磁带盒、闪存卡、数字视频盘、贝努利盒式磁带、随机存取存储器、只读存储器、等等。
若干程序模块可被存储在硬盘660、磁盘629、ROM 624或RAM 625上,包括操作系统635、一个或多个应用程序636、其它程序模块637、以及程序数据638。用户可通过诸如键盘640和定位设备642等输入设备将命令和信息输入到计算设备620中。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些及其它输入设备常常通过耦合到系统总线的串行端口接口646连接得到处理单元621,但也可由诸如并行端口634、游戏端口或通用串行总线(USB)等其它接口连接。监视器647或其它类型的显示设备也经由诸如视频适配器648等接口连接到系统总线623。除了监视器以外,计算设备通常还包括诸如扬声器和打印机630等其它外围输出设备,它们通过并行端口接口连接到系统总线623。
计算设备620可使用到诸如打印服务器649等一个或多个远程计算机的逻辑连接在联网环境中工作。打印服务器649可以是另一个计算设备、服务器、路由器、网络计算设备、对等设备或其它普通网络节点,并通常包括以上相对于计算设备620所描述的许多元件,尽管通常一打印服务器649被专用于将来自计算设备620的打印请求路由到所连接的打印机650。图1中所示的逻辑连接包括局域网(LAN)651和广域网(WAN)652。此类网络环境常见于办公室、企业范围的计算机网络、内联网和因特网。
当在LAN网络环境中使用时,计算设备620通过网络接口或适配器653连接到局域网651。当在WAN网络环境中使用时,计算设备620通常包括调制解调器654或用于通过WAN 652建立通信的其它装置。可以是内置或外置的确调制解调器654经由串行端口接口646连接到系统总线623。在联网环境中,相对于计算设备620所描述的程序模块或其部分可存储在远程记忆存储设备中。可以认识到,所示网络连接是示例性的,并且可以使用建立计算机之间的通信链路的其它装置。
在以上描述中,除非另有指示,否则用对由一个或多个计算机执行动作的引用和的操作的符号表示来描述各实施例。由此,将可理解有时被称为计算机执行的这些动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。此操纵在计算机的存储器系统中的各个位置转换或维护数据,它以本领域技术人员所公知的方式重新配置或改变计算机的操作。在其中维护数据的数据结构是存储器的物理位置,它们具有由数据的格式所定义的特定属性。但是,尽管在上文中描述了各个实施例,但是并不意味着限制,如本领域技术人员将可认识到,上述的各种动作和操作还可在硬件中实现。
结论
上述的方法和系统可在强类型环境的上下文中保存与未知名字空间元素相关联的标记。至少在一些实施例中,这是通过实例化与已知的基于XML的元素相关联的所谓强类型树,以及与已知和未知的基于XML的元素相关联的弱类型树来实现的。然后使用一种相关过程,在基于XML的标记的解除串行化期间,将强类型树和弱类型树相关。一种解除相互关联的过程随即以保存任何未知名字空间的元素的方式将基于XML的标记重新串行化。
尽管是以专属于结构特征和/或方法步骤的语言描述了本发明,但是应当理解,在所附权利要求书中定义的本发明不必限于所述的具体特征或步骤。相反,揭示这些具体特征和步骤是将其作为实现要求保护的本发明的较佳形式。

Claims (18)

1.一种用于在强类型环境中保存未知的基于XML的元素的方法,包括:
在强类型环境中:
接收可能包含已知和未知的基于XML的元素的基于XML的标记,其中未知的基于XML的元素与未知的名字空间关联并且不被指定确定的类型;
实例化与所述已知的基于XML的元素相关联的强类型树;
实例化与所述已知和未知的基于XML的元素都相关联的弱类型树,包括:
对于所述基于XML的标记中的每个已知元素,在所述弱类型树中创建一个占位符节点;以及
对于所述基于XML的标记中的每个未知元素,创建保存对应于所述未知元素的未知标记的节点;以及
以保存所述未知的基于XML的元素的方式通过用来自所述强类型树的对象或节点来填充所述弱类型树将所述强类型树和所述弱类型树相关;
其中在所述强类型环境中,类实例子属性仅能持有从基类派生的内容。
2.如权利要求1所述的方法,其特征在于,所述实例化的动作是在所述基于XML的标记的解除串行化期间执行的。
3.如权利要求1所述的方法,其特征在于,所述相关的动作是由配置成将所述基于XML的标记解除串行化的解除串行化器组件执行的。
4.如权利要求1所述的方法,其特征在于,还包括在接收所述基于XML的标记以后,将所述基于XML的标记转换为二进制表示。
5.如权利要求4所述的方法,其特征在于,所述实例化强类型树的动作包括对所述二进制表示进行操作以实例化所述强类型树。
6.如权利要求1所述的方法,其特征在于,所述创建保存对应于所述未知元素的未知标记的节点的动作包括将所述未知元素的文本串与所述节点相关联。
7.如权利要求1所述的方法,其特征在于,还包括在创建所述占位符节点以后,对于每个占位符节点,将各占位符节点设为所述强类型树中的对应节点。
8.如权利要求1所述的方法,其特征在于,还包括向一组件返回所述强类型树,以使所述组件能够对所述强类型树进行操作以提供经修改的强类型树。
9.如权利要求8所述的方法,其特征在于,还包括将所述经修改的强类型树串行化为基于XML的标记。
10.如权利要求9所述的方法,其特征在于,还包括在串行化期间,将所述弱类型树与所述经修改的强类型树相关。
11.如权利要求9所述的方法,其特征在于,还包括在串行化期间,允许应用定义哪些节点应或不应被串行化的一个或多个规则。
12.一种用于在强类型环境中保存未知的基于XML的元素的系统,包括:
在强类型环境中:
用于接收可能包含已知和未知的基于XML的元素的基于XML的标记的装置,其中未知的基于XML的元素与未知的名字空间关联并且不被指定确定的类型;
用于实例化与所述已知的基于XML的元素相关联的强类型树的装置;
用于实例化与已知和未知的基于XML的元素都相关联的弱类型树的装置,包括:
用于对于所述基于XML的标记中的每个已知元素,在所述弱类型树中创建一个占位符节点的装置;以及
用于对于所述基于XML的标记中的每个未知元素,创建保存对应于所述未知元素的未知标记的节点的装置;以及
用于以保存所述未知的基于XML的元素的方式通过用来自所述强类型树的对象或节点来填充所述弱类型树将所述强类型树和所述弱类型树相关的装置;
其中在所述强类型环境中,类实例子属性仅能持有从基类派生的内容。
13.如权利要求12所述的系统,其特征在于,所述系统进一步包括:
用于对所述基于XML的标记进行语法分析的装置;以及
用于接收已由所述用于对所述基于XML的标记进行语法分析的装置进行语法分析的每个标记元素的通知的装置,其被配置成实例化所述弱类型树。
14.如权利要求12所述的系统,其特征在于,所述系统进一步包括:
用于对所述基于XML的标记进行语法分析的装置;以及
用于接收被语法分析的每个标记元素的通知的装置,并且该装置用于实例化所述弱类型树,并将所述强类型树和所述弱类型树相关。
15.如权利要求12所述的系统,其特征在于,所述系统进一步包括用于对所述基于XML的标记进行语法分析,并将所述基于XML的标记转换为二进制表示的装置。
16.如权利要求12所述的系统,其特征在于,所述系统进一步包括用于对所述基于XML的标记进行语法分析,将所述基于XML的标记转换为二进制表示,以及使用所述二进制表示实例化所述强类型树的装置。
17.如权利要求12所述的系统,其特征在于,所述系统进一步包括用于对所述基于XML的标记进行语法分析,并向另一个组件返回所述强类型树,以使所述的另一个组件能够对所述强类型树进行操作以返回经修改的强类型树的装置。
18.如权利要求12所述的系统,其特征在于,所述系统进一步包括用于对所述基于XML的标记进行语法分析,并向另一个组件返回所述强类型树,以使所述的另一个组件能够对所述强类型树进行操作以返回经修改的强类型树的装置,以及
用于将所述经修改的强类型树串行化为基于XML的标记,并在串行化期间将所述弱类型树与所述经修改的强类型树重新相关的装置。
CNB2005101287391A 2004-12-30 2005-11-30 用于在强类型环境中保存未知标记的方法和系统 Expired - Fee Related CN100561472C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/026,341 2004-12-30
US11/026,341 US7559020B2 (en) 2004-12-30 2004-12-30 Methods and systems for preserving unknown markup in a strongly typed environment

Publications (2)

Publication Number Publication Date
CN1797404A CN1797404A (zh) 2006-07-05
CN100561472C true CN100561472C (zh) 2009-11-18

Family

ID=36032119

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101287391A Expired - Fee Related CN100561472C (zh) 2004-12-30 2005-11-30 用于在强类型环境中保存未知标记的方法和系统

Country Status (6)

Country Link
US (1) US7559020B2 (zh)
EP (1) EP1677206B1 (zh)
JP (1) JP4943002B2 (zh)
KR (1) KR101169169B1 (zh)
CN (1) CN100561472C (zh)
AT (1) ATE524780T1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080141112A1 (en) * 2004-10-27 2008-06-12 Jumpei Aoki Document Processing Device and Document Processing Method
US20070288893A1 (en) * 2006-06-08 2007-12-13 Microsoft Corporation Extending configuration sections in configuration
US20080016182A1 (en) * 2006-07-11 2008-01-17 Nokia Corporation Dynamic device profile interfaces
US8255790B2 (en) * 2006-09-08 2012-08-28 Microsoft Corporation XML based form modification with import/export capability
US8015483B2 (en) * 2006-10-20 2011-09-06 Microsoft Corporation Processing an XML feed with extensible or non-typed elements
CN101355437A (zh) * 2007-07-25 2009-01-28 华为技术有限公司 告警/事件信息的处理方法和装置
GB2492096B (en) * 2011-06-21 2014-02-19 Canon Kk Method for processing a structured document to render, and corresponding processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085198A (en) * 1998-06-05 2000-07-04 Sun Microsystems, Inc. Integrated three-tier application framework with automated class and table generation
US6507856B1 (en) * 1999-01-05 2003-01-14 International Business Machines Corporation Dynamic business process automation system using XML documents
US20010054172A1 (en) * 1999-12-03 2001-12-20 Tuatini Jeffrey Taihana Serialization technique
US20040015840A1 (en) * 2001-04-19 2004-01-22 Avaya, Inc. Mechanism for converting between JAVA classes and XML
AU2002334721B2 (en) * 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
ES2326073T3 (es) * 2001-11-23 2009-09-30 Research In Motion Limited Sistema y metodo para tratar o procesar documentos en lenguaje de marcaje extensible (xml).
US7373595B2 (en) 2002-06-27 2008-05-13 Microsoft Corporation System and method for validating an XML document and reporting schema violations

Also Published As

Publication number Publication date
KR101169169B1 (ko) 2012-07-30
EP1677206A3 (en) 2008-01-23
US7559020B2 (en) 2009-07-07
US20060150083A1 (en) 2006-07-06
CN1797404A (zh) 2006-07-05
KR20060079086A (ko) 2006-07-05
JP2006323816A (ja) 2006-11-30
JP4943002B2 (ja) 2012-05-30
EP1677206A2 (en) 2006-07-05
ATE524780T1 (de) 2011-09-15
EP1677206B1 (en) 2011-09-14

Similar Documents

Publication Publication Date Title
CN100561472C (zh) 用于在强类型环境中保存未知标记的方法和系统
US7296226B2 (en) XML-based multi-format business services design pattern
US7734091B2 (en) Pattern-matching system
JP2514152B2 (ja) 情報処理システムを構築する方法
US8219901B2 (en) Method and device for filtering elements of a structured document on the basis of an expression
KR100692172B1 (ko) 종합 문자열 분석기 및 그 분석 방법
EP1672526A2 (en) File formats, methods, and computer program products for representing documents
US20030226116A1 (en) Method and system for implementing a historical buffer
US20180321831A1 (en) Smart controls for user interface design and implementation
CN1987783A (zh) 用于模拟服务器页面的处理的系统和方法
EP1600860A2 (en) Method and system for embedding context information in a document
US20060271850A1 (en) Method and apparatus for transforming a printer into an XML printer
US8112500B2 (en) Technique of relaying communications between client apparatus and server apparatus
CN112559344A (zh) 远程mock测试方法及系统
US20070179961A1 (en) Hierarchical storage
US20020147624A1 (en) System of supporting development of business process
US7437714B1 (en) Category partitioning markup language and tools
WO2009105459A2 (en) Methods and systems to test airline information systems
US20090313628A1 (en) Dynamically batching remote object model commands
KR100349657B1 (ko) 분산 협력으로 개발된 프로그램 분석을 위한 순차다이어그램 생성 방법
JP2004145736A (ja) 文字認識装置および文字認識データ出力方法およびプログラムおよび記録媒体
CN116991421A (zh) 低代码平台事件处理方法、装置、设备及存储介质
Marinos et al. Towards an XML-based user interface for electronic health record
CN116450976A (zh) 一种字体展现的方法及装置
CN116820936A (zh) 一种应用分析方法、装置、计算设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150430

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150430

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091118

Termination date: 20191130