WO2004107195A1 - Declarative mechanism for defining a hierarchy of objects - Google Patents
Declarative mechanism for defining a hierarchy of objects Download PDFInfo
- Publication number
- WO2004107195A1 WO2004107195A1 PCT/US2003/015692 US0315692W WO2004107195A1 WO 2004107195 A1 WO2004107195 A1 WO 2004107195A1 US 0315692 W US0315692 W US 0315692W WO 2004107195 A1 WO2004107195 A1 WO 2004107195A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- tag
- property
- class
- attribute
- name
- Prior art date
Links
- 230000007246 mechanism Effects 0.000 title description 9
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000013507 mapping Methods 0.000 claims abstract description 29
- 150000001875 compounds Chemical class 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 9
- 230000003044 adaptive effect Effects 0.000 claims 2
- 230000000712 assembly Effects 0.000 abstract description 8
- 238000000429 assembly Methods 0.000 abstract description 8
- 238000004891 communication Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 239000003973 paint Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/131—Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/137—Hierarchical processing, e.g. outlines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8543—Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
Definitions
- This invention relates generally to computer systems and, more particularly, relates to a method and system to declaratively create hierarchies of objects and object types.
- XML Extensible Markup Language
- W3C World Wide Web Consortium
- HTML hypertext markup language
- XML is a sub-set of the Standard Generalized Markup Language (SGML) that maintains the important architectural aspects of contextual separation while removing nonessential features.
- the XML document format embeds the content within tags that express its structure.
- XML also provides the ability to express rules for the grammar of a document. These two features allow automatic separation of data and metadata, and allow generic tools to validate an XML document against its grammar.
- XML has been designed for system integration. XML provides a structural representation of data that has proved broadly implementable and easy to deploy. A piece of information marked by the presence of tags is called an element. Matching start and end tags are used to mark up information. Elements can be further described by attaching name value pairs called attributes.
- An XML element can declare its associated data to be any desired data element.
- the element can be a retail price, a book title, etc.
- XML has been applied to grammar-based representations of applications data (e.g., business documents, EDI messages, etc.), user-interfaces of applications, XHTML, and other grammars having a fixed set of tags.
- the invention is directed to a mechanism for defining hierarchies of objects declaratively in a markup language. These objects include objects such as common language runtime types of the Microsoft .NET framework. Traditional methods of implementing items such as user interfaces require that the item be created synchronously. For very large items, the time to load the item can be time constrictive.
- the invention provides users the ability to either synchronously or asynchronously create objects in a hierarchy (i.e., a tree).
- the rnarkup language is XML-based.
- the object is written in the markup language based on a mapping.
- the mapping includes a URL attribute for defining a location for a definition file having assemblies and namespaces where object classes are specified.
- the tag name in the markup language is mapped to a class name. Attributes of a tag are mapped to properties and events of a class associated with the tag. Attributes that do not map directly to a class are defined with a definition tag.
- the definition tag is also used to add programming code to a page.
- the invention further includes a method to parse the markup language to create a hierarchy of objects.
- the definition file is used to determine where the object class is located for the mechanism of the invention to search for classes in which a tag is mapped. Once a class is determined, the attribute name is searched in the property section and event section of the class. An instance of an object of the class is created. Attributes may be specified using compound properties.
- the invention provides the capability for items such as user interfaces, vector graphic drawings, and documents to be created synchronously or asynchronously using the markup language.
- the documents include fixed-format documents and adaptive-flow documents.
- the fixed-format documents are documents that explicitly define in a device independent manner the number of pages and the placement of objects on each page.
- Adaptive-fiow documents are documents that can be automatically repaginated, repositioning objects on each page, whenever the page size is changed.
- Figure 1 is a block diagram generally illustrating an exemplary computer system on which the present invention resides;
- Figure 2 is a block diagram generally illustrating an exemplary environment in which the present invention may operate;
- Figure 3 is a block diagram generally illustrating the mapping between a markup language and the exemplary environment of figure 2; and
- Figure 4 is a flow diagram illustrating the steps to parse a markup file in accordance with the present invention.
- the invention provides a mechanism that allows a user to specify a hierarchy of objects and the programmatic logic behind the hierarchy of objects with an XML based markup language. This provides the ability for an object model to be described in XML.
- One result is that the extensible classes such as classes in the Common Language Runtime (CLR) of the .NET Framework by Microsoft Corporation can be accessed in XML.
- CLR Common Language Runtime
- the number of classes in CLR is continuously growing, which means that the XML representation of object models is dynamically growing.
- the mechanism provides a direct mapping of XML tags to CLR objects and the ability to represent related code in the markup.
- the mechanism can be used to create fixed-format documents, adaptive-flow documents, vector graphic drawings, application user- interfaces and controls, and the like in XML markups and any combination of the foregoing.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- program modules may be practiced with other computer system configurations, including handheld devices, multi-processor systems, microprocessor based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like.
- the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote memory storage devices.
- Figure 1 illustrates an example of a suitable computing system environment 100 on which the invention may be implemented.
- the computing system environment 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100.
- the invention is operational with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
- the invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer storage media including memory storage devices.
- an exemplary system for implementing the invention includes a general purpose computing device in the fo ⁇ n of a computer 110.
- Components of computer 110 may include, but are not limited to, a processing unit 120, a system memory 130, and a system bus 121 that couples various system components including the system memory to the processing unit 120.
- the system bus 121 may be any of several types of bus structures including a memory bus or mernory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Associate (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
- ISA Industry Standard Architecture
- MCA Micro Channel Architecture
- EISA Enhanced ISA
- VESA Video Electronics Standards Associate
- PCI Peripheral Component Interconnect
- Computer 110 typically includes a variety of computer readable media.
- Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media.
- Computer readable media may comprise computer storage media and communication media.
- Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD- ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 110.
- Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct- wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
- the system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132.
- ROM read only memory
- RAM random access memory
- BIOS basic input/output system
- RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120.
- Figure 1 illustrates operating system 134, application programs 135, other program modules 136, and program data 137.
- the computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
- Figure 1 illustrates a hard disk drive 141 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 151 that reads from or writes to a removable, nonvolatile magnetic disk 152, and an optical disk drive 155 that reads from or writes to a removable, nonvolatile optical disk 156 such as a CD ROM or other optical media.
- removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
- the hard disk drive 141 is typically connected to the system bus 121 through a non-removable memory interface such as interface 140, and magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such as interface 150.
- hard disk drive 141 is illustrated as storing operating system 144, application programs 145, other program modules 146, and program data 147. Note that these components can either be the same as or different from operating system 134, application programs 135, other program modules 136, and program data 137. Operating system 144, application programs 145, other program modules 146, and program data 147 are given different numbers hereto illustrate that, at a minimum, they are different copies.
- a user may enter commands and information into the computer 110 through input devices such as a keyboard 162 and pointing device 161, commonly referred to as a mouse, trackball or touch pad.
- Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
- These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
- a monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190.
- computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 195.
- the computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180.
- the remote computer 180 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer 110, although only a memory storage device 181 has been illustrated in Figure 1.
- the logical connections depicted in Figure 1 include a local area network (LAN) 171 and a wide area network (WAN) 173, but may also include other networks.
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
- the personal computer 110 When used in a LAN networking environment, the personal computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet.
- the modem 172 which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism.
- program modules depicted relative to the personal computer 110, or portions thereof may be stored in the remote memory storage device.
- Figure 1 illustrates remote application programs 185 as residing on memory device 181. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
- the .NET framework 200 in its most simplest representation consists of the CLR 202, the framework class library 204, a user interface 206, and web services and applications 208.
- the .NET framework resides on the operating system of the machine such as operating system 134.
- the user interface 206 and web services and applications 208 provides for general input/output including file access, XML support, and services. They expose web technology and services from HTTP to HTML, provide user interface elements for building web pages and/or traditional Windows based user interfaces, and exposes ASP.NET and many other services.
- the CLR 202 is responsible for managing memory, starting up and stopping threads and processes, and enforcing security policies. It provides a common type system that provides a programming language-independent concept of data types, which enables numerous programming languages to share data and code in the .NET framework.
- the CLR 202 also has a just-in-time compiler that translates the MSIL (Microsoft intermediate language) code and optimizes it for a specific machine to execute natively on the system processor of the machine.
- MSIL Microsoft intermediate language
- the framework class library includes classes.
- a class defines the operations an object can perform (methods, events, or properties) and defines a value that holds the state of the object (fields). Although a class generally includes both definition and implementation, it can have one or more members that have no implementation.
- the common type system defines how types are declared, used, and managed in the runtime.
- the .NET framework types use a dot syntax naming scheme that connotes a hierarchy. This technique groups related types into namespaces so they can be searched and referenced more easily. The first part of the full name, up to the rightmost dot, is the namespace name. The last part of the name is the type name.
- System.Collections.ArrayList represents the ArrayList type, which belongs to the System.Collections namespace.
- the types in System.Collections can be used to manipulate collections of objects.
- System. Web.Services conveys that the classes will provide a service for some kind of Web functionality.
- System. Windows.Shapes provides a service for shapes.
- namespaces are extensible in that a user can derive her own namespace from an existing one.
- System. Web.UI.ACMECorp could be derived from System. Web.UI and provide custom UI elements.
- the framework namespaces provide the "system," or base functionality, and services needed to build and run solutions.
- the invention provides a direct mapping of CLR concepts 300 to XML 310.
- Namespaces 302 are found via the xmlns declaration 312 using a CLR concept called reflection.
- Classes 304 map directly to XML tags 314.
- Properties 306 and events 308 map directly to attributes 316.
- a user can specify a hierarchy tree of any CLR objects in XML markup files.
- Xaml files are xml files with a .xaml extension and a mediatype of application/xaml+xml.
- Xaml files have one root tag that typically specifies a namespace using the xmlns attribute. No specific root tag is required, thereby allowing users to have different CLR associated tags as the root.
- the namespace may be specified in other types oftags.
- a default set of namespaces is used. In one embodiment, five namespaces are used. These namespaces are System. Windows (having classes for elements), System. Windows.Controls (having classes for control elements such as buttons, panels, text panels, etc.), System. Windows.Documents (having classes for document-centric text rendering elements), System. Windows.Shapes (having classes for Windows Vector Graphics elements), and System. Windows.Controls.Atoms (having classes for building block elements such as scroll viewers) and they are specified in the xmlns declaration. Other namespaces may be used and the default set can be application configurable.
- tags in a xaml file generally map to CLR objects.
- Tags can be elements, compound properties, definitions, or resources.
- Elements are CLR objects that are generally instantiated during runtime and form a hierarchy of objects. These elements remain in the hierarchy. Some elements are instantiated only when needed. Elements are capitalized in a way that is consistent with the .NET framework.
- Controls include Button, RadioButton, and ListBox.
- DocumentElements are used to render and format flowing text. These elements can be placed inside any element which can contain other elements. Examples of DocumentElements are Paragraph, Section, Bold, and Italic. Shapes are elements of Vector Graphics. Examples of Shapes include Ellipse, Line, and Path. Decorators are like Panel elements, except they can only have one child. Examples of Decorators include Border and Glow.
- Compound property tags are used to set a property in a parent tag and are discussed in greater detail below. During runtime, a compound property tag will not be in the hierarchy tree as an element.
- Definition tags are used to add code into a page and define resources. The definition tags are identified in a xaml page or inside a component of a xaml page as ⁇ def:xyz> where xyz is the item being defined. For example, ⁇ def:Code> is used to add code into a page and ⁇ def:Resources> defines one or more reusable resources. Tags that appear inside a ⁇ def:Resources> tag can map to any Element or any arbitrary CLR object. The resource tag provides the ability to reuse a tree of objects merely be specifying the tree as a resource. Definition tags may also be defined within another tag as an xmlns attribute.
- attributes map to properties and events associated with classes. Some attributes aren't associated with real CLR classes, so the definition tag is also used to distinguish these attributes from attributes that map to properties or events. The following table lists these attributes.
- the parser of the invention determines from the root tag which CLR assemblies and namespaces should be searched to find a tag.
- An exemplary root tag is of the form
- the xaml parser looks for a namespace definition file in the URL directory specified by the xmlns attribute. For example, in the exemplary root tag above, the xaml parser will search for the definition file at http://microsoft.com/xaml/2004/xmlns.definition. [0041] In scenarios where the namespace definition is not at the xmlns location, the
- ⁇ ?Mapping?> tag is used in one embodiment.
- a tag is of the form
- the tag is of the form
- the namespace may also be specified in other types of tags. For example, a namespace is specified in the MyCoolButton tag below.
- the namespace definition file provides the name of the assemblies and their install path and a list of CLR namespaces.
- An exemplary definition file is below:
- Button having text, background, and click properties and/or events.
- the parser searches for the text, background, and click names in the properties section of the Button class. If a name is not in the properties section, the parser looks for the name in the event section.
- the parser determines that Text and Background are properties and Click is an event.
- the text string "OK" is set.
- a CLR type converter is used to create an object that converts to and from the string.
- the property Background is determined to be a CLR type of type Paint.
- the CLR type converter for the type Paint is used to convert the string "Red” to an object of type Paint.
- the string is set as the value of the Button's background color.
- the Click event is wired up to the RunHandler method and the ID property is set to bl .
- Properties can be set as a simple attribute, a compound property with a string value, or a compound property with an object as the value.
- a compound property with a string value is of the form
- the tag with a period in it indicates that the tag is a reference to a property.
- the parser sees a tag beginning with the tag name of the parent tag followed by a period (e.g., "Button.” in a "Button.Background” tag), it searches for a property specified by the name after that period (e.g. "Background” in a "Button.Background” tag).
- "Blue” should be interpreted by calling the type converter that knows how to convert a string to an object of type Paint (the type of the Background property). It should then be set as the value of the Button's Background property.
- Properties from another class can also be declared in a tag. For example, a tag of
- the parser sees the period and searches for a property specified by the name after that period (e.g. "Background” in a "Button.Background”) in the class specified by the name before the period (e.g., "Button").
- a compound property with an object as the value is of the form
- the CLR HorizontalGradient object is created and then set as the value of the
- the compound property syntax can be used to provide more than just objects for the value.
- an Animation or a Bind to some data can be accomplished:
- the tags are used to give the Animation or Bind the ability to set up the appropriate systems to provide the feature. For example, after creating the Animation object, the xaml parser queries the object to see if it implemented an interface called IApply Value. If it did, the xaml parser calls
- ColorAnimationObject ApplyValue(elementReference, BackgroundPropertylD). The Color AnimationObject would then wire up the animation. If the object doesn't support the interface, the xaml parser sets the Background property of the Button to the ColorAnimationObject.
- the attribute value starts with *
- the attribute is setting the value equal to a newly instantiated object or an existing object.
- the xaml parser looks for the name after the * and looks for a CLR type of the name after the *.
- Programming languages can be associated with a .xaml page in two places. These places are in the .xaml file and in an associated code-behind file.
- the code-behind files are generally named the same as the .xaml file with the addition of the programming language's typical extension appended to the end. For example, .xaml.cs is used for C#, .xaml.vb is used for VB, and .xaml.js is used for Jscript.
- the user chooses the programming language associated with a xaml page by adding a defiLanguage attribute to the root element of the page.
- CD AT A sections as defined in XML are required in the ⁇ def:Code> section.
- a source attribute is used.
- the source attribute provides a URI to the code behind for the xaml file.
- the URI can be relative or absolute.
- An example of specifying the URI and a simple code-beside file is below.
- the simple code-beside file is below: Simple.xaml.es namespace MyApp ⁇ using System; using System. Windows;
- the xaml parser also supports a feature called ILiteralContent.
- ILiteralContent For objects that implement ILiteralContent, the xaml parser treats the tag for the object as a string and does not parse the tag. For example, if Public class FooObject implements ILiteralContent, then whenever the xaml parser encounters the tag ⁇ FooObject>"I am a string" ⁇ /FooObject>, the parser creates an instance of FooObject and passes the data within the ⁇ FooObject> tag (e.g., "I am a string") to the newly created FooObject.
- the following rules are used when parsing the root tag or tags that are directly contained by an element/object.
- a definition file having assemblies/namespaces associated with the xmlns attribute is located and stored locally (step 400).
- the assemblies/namespaces are generally found using the URL of the schema in the root tag of the document or in a mapping tag.
- the parser looks at the appropriate set of assemblies/namespaces for a class of that name based on the xml namespace in which the element is specified and an instance of an object of the class is instantiated (step 402).
- the xaml parser checks to see if the containing parent has a property of that name. If it is a property of the containing element, the xaml parser parses the content of that tag using the compound property rules. If the tag is an attribute tag, the property or event associated with the attribute is set (step 404). If the attribute value starts with *, the attribute is not specifying a literal value, but instead is setting the value equal to a newly instantiated object or an existing object. Tags may have tags that are used to set a property on a parent tag. The tag is a compound property. If the tag is a compound property, compound rules are followed (step 406). These rules are below.
- the xaml parser determines if the compound property is a string. If the content is a string, the xaml parser calls a type converter for the appropriate type of the property being set. If the content of the parent tag is another tag, then the xaml parser instantiates the object as normal. After instantiating the object, the xaml parser sets it as the value of the property on the parent object. If the xmlns for the tag is "def:", the xaml parser uses a set of built in meanings as described below (step 408). The next tag in the file is parsed (step 410) and steps 400 to 408 are repeated for each tag until the xaml parser detects the end root tag of the xaml file.
- the invention provides a mechanism that allows object models to be represented in an XML based file using markup tags.
- This ability to represent object models as markup tags can be used to create vector graphic drawings, fixed-format documents, adaptive-flow documents, and application UI.
- These vector graphic drawings, fixed-format documents, adaptive-flow documents, and application UI can be created asynchronously or synchronously. This provides the benefit that these items can be built from markup to create a tree of objects.
- Fixed-format documents are documents that explicitly define in a predetermined device-independent manner the number and size of document pages and the placement of objects on each page.
- one of the root tags for fixed-format documents is ⁇ FixedPanel> and pages are specified using ⁇ Fixed Page> tags.
- elements include text, vector graphics, and images. External resources such as fonts and shared images are specified.
- the tag used for text provides the user with exact control over individual character glyphs and placement for the character glyphs. Additional tags provide the user with control over how text, vector graphics, and images are combined on a page.
- the xaml parser recognizes the tag for fixed-format documents. As with any other type of .xaml file, the parser determines the CLR namespaces and classes associated with the tags and calls the type converters for the tags within the xaml file and renders a fixed-format document.
- An adaptive-flow document does not have a predetermined page size.
- the set of text, images, DocumentElements, and other objects in an adaptive-flow document can flow or be repositioned on the page in order to adapt to varying page widths.
- a page rendered in a window on the display screen may be a different width on different display screens, depending on the computing system used or on user preferences.
- a printed page will have different width depending on the paper size. Lines of text, for instance, will have shorter length if the page width is narrower, causing the text to flow or reposition additional words onto lines further down the page in a cascading sequence from text line to text line. Attributes are used to specify a user's preferences to how the adaptive-flow document appears.
- the xaml parser passes these attributes to the CLR type converter for objects to create the document.
- the objects can create unpaginated or paginated presentations.
- An unpaginated presentation has a single bottomless page viewed on the display screen with the aid of a control such as a vertical scrollbar.
- a paginated presentation breaks the document content up into segments based on the page height and shows each page separately, viewed on the display screen with the aid of controls such as next and previous buttons.
- Further attributes determine the width and number of columns on a page, the sizes for all text elements, text line spacing, sizes and positions for all images or figures, and the widths of margins and gutters.
- a user also may specify via the attributes whether the objects that create the document should automatically adjust columns, text size and line spacing, image size and placement, margins and gutters, and other page or text parameters, for optimum readability for the page size.
- the xaml parser parses the tags for adaptive-flow documents, determines the CLR namespaces and classes associated with the tags and calls the type converters for the objects specified within the xaml file for rendering an adaptive-flow document.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Document Processing Apparatus (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03808239A EP1639482A4 (en) | 2003-05-16 | 2003-05-16 | DECLARATION MECHANISM FOR DEFINING A HIERARCHY OF OBJECTS |
PCT/US2003/015692 WO2004107195A1 (en) | 2003-05-16 | 2003-05-16 | Declarative mechanism for defining a hierarchy of objects |
JP2004567659A JP2006526180A (ja) | 2003-05-16 | 2003-05-16 | オブジェクトの階層を定義するための宣言的(declative)機構 |
KR1020047007470A KR101292982B1 (ko) | 2003-05-16 | 2003-05-16 | Clr 객체의 계층 구조 결정 방법, 컴퓨터 판독가능 매체, 객체를 선언적으로 정의하는 방법, clr 객체의 계층 구조 결정 메카니즘, 및 clr 객체를 선언적으로 정의하는 장치 |
CNB038015897A CN100338595C (zh) | 2003-05-16 | 2003-05-16 | 定义对象层次的说明机制 |
AU2003248534A AU2003248534A1 (en) | 2003-05-16 | 2003-05-16 | Declarative mechanism for defining a hierarchy of objects |
JP2009193622A JP4988797B2 (ja) | 2003-05-16 | 2009-08-24 | オブジェクトを作成するための方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2003/015692 WO2004107195A1 (en) | 2003-05-16 | 2003-05-16 | Declarative mechanism for defining a hierarchy of objects |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2004107195A1 true WO2004107195A1 (en) | 2004-12-09 |
Family
ID=33488770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2003/015692 WO2004107195A1 (en) | 2003-05-16 | 2003-05-16 | Declarative mechanism for defining a hierarchy of objects |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1639482A4 (zh) |
JP (1) | JP2006526180A (zh) |
KR (1) | KR101292982B1 (zh) |
CN (1) | CN100338595C (zh) |
AU (1) | AU2003248534A1 (zh) |
WO (1) | WO2004107195A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8099370B2 (en) | 2007-04-03 | 2012-01-17 | Microsoft Corporation | System for financial documentation conversion |
US8370399B2 (en) * | 2006-12-04 | 2013-02-05 | Microsoft Corporation | Building, viewing, and manipulating schema sets |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100456785C (zh) * | 2006-03-21 | 2009-01-28 | 梁铁柱 | 用手机或小灵通发送姓名短信获取艺术签名设计的系统与方法 |
US9363258B2 (en) | 2007-12-17 | 2016-06-07 | International Business Machines Corporation | Secure digital signature system |
US9294705B2 (en) * | 2008-06-27 | 2016-03-22 | Universal Electronics Inc. | System and method for ubiquitous appliance control |
CN102004722B (zh) * | 2010-10-19 | 2013-08-21 | 北京红旗中文贰仟软件技术有限公司 | 信息文档的处理方法及装置 |
US8433697B2 (en) * | 2011-09-10 | 2013-04-30 | Microsoft Corporation | Flexible metadata composition |
KR101489677B1 (ko) * | 2014-02-04 | 2015-02-16 | 주식회사아이보우솔루션 | 웹 기반 생애 주기 관리 시스템을 구축하기 위한 동적 어플리케이션 개발 서비스 제공 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6083276A (en) | 1998-06-11 | 2000-07-04 | Corel, Inc. | Creating and configuring component-based applications using a text-based descriptive attribute grammar |
US20020010700A1 (en) * | 2000-06-29 | 2002-01-24 | Wotring Steven C. | System and method for sharing data between relational and hierarchical databases |
US6366934B1 (en) * | 1998-10-08 | 2002-04-02 | International Business Machines Corporation | Method and apparatus for querying structured documents using a database extender |
US6516322B1 (en) * | 2000-04-28 | 2003-02-04 | Microsoft Corporation | XML-based representation of mobile process calculi |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366943B1 (en) * | 1999-03-31 | 2002-04-02 | Brian Martin Clinton | Adder circuit with the ability to detect zero when rounding |
US6990653B1 (en) * | 2000-05-18 | 2006-01-24 | Microsoft Corporation | Server-side code generation from a dynamic web page content file |
AU2001294555A1 (en) * | 2000-09-14 | 2002-03-26 | Bea Systems Inc. | Xml-based graphical user interface application development toolkit |
EP1260911A1 (fr) * | 2001-04-27 | 2002-11-27 | Koninklijke Philips Electronics N.V. | Structure de données interne pour application destinée à s'interfacer avec une interface pour un document de type HTML ou XML |
-
2003
- 2003-05-16 KR KR1020047007470A patent/KR101292982B1/ko active IP Right Grant
- 2003-05-16 WO PCT/US2003/015692 patent/WO2004107195A1/en active Application Filing
- 2003-05-16 AU AU2003248534A patent/AU2003248534A1/en not_active Abandoned
- 2003-05-16 CN CNB038015897A patent/CN100338595C/zh not_active Expired - Fee Related
- 2003-05-16 EP EP03808239A patent/EP1639482A4/en not_active Withdrawn
- 2003-05-16 JP JP2004567659A patent/JP2006526180A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6083276A (en) | 1998-06-11 | 2000-07-04 | Corel, Inc. | Creating and configuring component-based applications using a text-based descriptive attribute grammar |
US6366934B1 (en) * | 1998-10-08 | 2002-04-02 | International Business Machines Corporation | Method and apparatus for querying structured documents using a database extender |
US6516322B1 (en) * | 2000-04-28 | 2003-02-04 | Microsoft Corporation | XML-based representation of mobile process calculi |
US20020010700A1 (en) * | 2000-06-29 | 2002-01-24 | Wotring Steven C. | System and method for sharing data between relational and hierarchical databases |
Non-Patent Citations (1)
Title |
---|
See also references of EP1639482A4 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8370399B2 (en) * | 2006-12-04 | 2013-02-05 | Microsoft Corporation | Building, viewing, and manipulating schema sets |
US8099370B2 (en) | 2007-04-03 | 2012-01-17 | Microsoft Corporation | System for financial documentation conversion |
Also Published As
Publication number | Publication date |
---|---|
CN1615476A (zh) | 2005-05-11 |
CN100338595C (zh) | 2007-09-19 |
AU2003248534A1 (en) | 2005-01-21 |
KR20060061733A (ko) | 2006-06-08 |
KR101292982B1 (ko) | 2013-08-02 |
EP1639482A1 (en) | 2006-03-29 |
JP2006526180A (ja) | 2006-11-16 |
EP1639482A4 (en) | 2009-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7331014B2 (en) | Declarative mechanism for defining a hierarchy of objects | |
US10254925B2 (en) | GUI document management system | |
US10008009B1 (en) | Method for generating dynamic vector graphics | |
US7155705B1 (en) | Techniques for binding an application with a data exchange format based on tags in comments | |
KR100615792B1 (ko) | 대체 포맷으로의 액세스 및 액세스 제공을 위한 방법 및 시스템과, 컴퓨터 판독 가능 기록 매체 | |
US8413070B1 (en) | Declarative resizeable list in electronic form | |
US10061575B2 (en) | Managed execution environment for software application interfacing | |
US20050188350A1 (en) | Data binding | |
US20040046789A1 (en) | Extensible user interface (XUI) framework and development environment | |
US20100011284A1 (en) | Dynamic web page behavior | |
US20020147748A1 (en) | Extensible stylesheet designs using meta-tag information | |
US20050188349A1 (en) | Data association | |
US20040133855A1 (en) | Providing a presentation engine adapted for use by a constrained resource client device | |
CA2414053A1 (en) | System and method for manipulating a document object model | |
JP2002189595A (ja) | リフレッシュ可能なWebクエリを作成するための統合された方法 | |
IL188663A (en) | Web page rendering priority mechanism | |
US8458586B2 (en) | X/HTML support for silverlight applications | |
KR101292982B1 (ko) | Clr 객체의 계층 구조 결정 방법, 컴퓨터 판독가능 매체, 객체를 선언적으로 정의하는 방법, clr 객체의 계층 구조 결정 메카니즘, 및 clr 객체를 선언적으로 정의하는 장치 | |
US20100269032A1 (en) | Advanced text completion, such as for markup languages | |
US8225217B2 (en) | Method and system for displaying information on a user interface | |
US20040044691A1 (en) | Method and browser for linking electronic documents | |
US20050268233A1 (en) | System and method for mixed language editing | |
Whitmer | Document Object Model (DOM) Level 3 Views and Formatting Specification | |
JP4988797B2 (ja) | オブジェクトを作成するための方法およびプログラム | |
Cook et al. | A media-rich online help system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 2003808239 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2004567659 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020047007470 Country of ref document: KR |
|
WWE | Wipo information: entry into national phase |
Ref document number: 20038015897 Country of ref document: CN |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWP | Wipo information: published in national office |
Ref document number: 2003808239 Country of ref document: EP |