1-27. (canceled)
28. A method comprising:
configuring, by a processor of a first computer, a software stub for storage, installation and execution on a processor of a second computer, the software stub is configured for:
receiving over the network connection a data stream comprising an executable code of at least one software program from a third computer disparate from the first and second computers,
extracting the executable code of the software program from the data stream,
determining an amount of dynamic memory required for the executable code from the data stream,
causing the second computer to allocate a specified amount of dynamic memory for the executable code of the software program,
loading the executable code of the software program directly from the data stream into the allocated dynamic memory, and
executing the software program from the dynamic memory; and
transmitting, by the first computer, the software stub to the second computer.
29. The method of claim 28, configuring the software stub further comprises:
configuring, by the processor of the first computer, the software stub for receiving a Uniform Resource Identifier (URI) of the software program for execution on the second computer.
30. The method of claim 29, configuring the software stub for receiving a URI further comprises:
associating, by the processor of the first computer, a user interface (UI) with the software stub such that the user interface facilitates bookmarking respective individual identifiers of a plurality of software programs wherein the at least one software program comprises the plurality of software programs and the received URI is comprised in the bookmarked individual identifiers.
31. The method of claim 30 wherein the individual identifiers are mapped to respective Internet Protocol (IP) addresses of servers providing the plurality of software programs.
32. The method of claim 28 wherein the executable code is associated with a latest version of the software program.
33. The method of claim 28, wherein configuring the software stub further comprises:
configuring, by the processor of the first computer, the software stub for:
releasing the dynamic memory upon completing the execution of the software program such that the software program no longer exists on the second computer.
34. The method of 28 wherein configuring the software stub comprises:
configuring, by the processor of the first computer, the software stub for:
caching state and application data associated with the at least one software program within a file container of the software stub via a resource fork.
35. The method of claim 28, configuring the software stub further comprises:
configuring, by the processor of the first computer, the software stub for:
passing a network socket associated with the data stream to the software program during execution such that the software program consumes additional data included in a second portion of the data stream.
36. The method of claim 28, configuring the software stub further comprises:
configuring, by the processor of the first computer, the software stub for:
launching a first executable code object embedded in the data stream such that the first executable code object causes a second process to be generated by requesting another data stream that comprises a second executable code object, the second executable code object is a child of the first executable code object and shares a same sand-boxed system generated by the first executable code object.
37. The method of claim 28, configuring the software stub further comprises:
configuring, by the processor of the first computer, the software stub as a plug-in to be executed by a web browser on the second computer.
38. A first computing apparatus, comprising:
a memory; and
one or more processors coupled to the memory, the memory storing thereon program logic for execution by the processors, the program logic comprising:
configuring logic, executed by the processors, for configuring a software stub to comprise:
receiving logic for receiving over a network connection a data stream comprising an executable code of at least one software program from a third computing apparatus disparate from the first and second computing apparatus,
extracting logic for extracting the executable code of the software program from the data stream,
determining logic for determining an amount of dynamic memory required for the executable code from the data stream,
allocating logic for causing the second computer to allocate a specified amount of dynamic memory for the executable code of the software program,
loading logic for loading the executable code of the software program directly from the data stream into the allocated dynamic memory, and
executing logic for executing the software program from the dynamic memory; and
transmitting logic, executed by the processors, for transmitting the software stub to the second computer.
39. The apparatus of claim 38, wherein the receiving logic of the software stub further comprises:
logic to receive a Uniform Resource Identifier (URI) of the software program to be executed on the second computing apparatus; and
logic to transmit a request comprising the Uniform Resource Identifier (URI) of the software program.
40. The apparatus of claim 39, wherein the configuring logic further comprises:
associating logic, executed by the processors, for associating a user interface (UI) with the software stub such that the user interface facilitates bookmarking respective individual identifiers of a plurality of software programs wherein the at least one software program comprises the plurality of software programs and the received URI is comprised in the bookmarked individual identifiers.
41. The apparatus of claim 38, wherein the software stub further comprises:
releasing logic for releasing the dynamic memory upon completing the execution of the software program such that the software program no longer exists on the second computer.
42. The apparatus of claim 38, wherein the software stub further comprises:
caching logic for caching state and application data associated with the at least one software program within a file container of the software stub via a resource fork.
43. A computer readable storage medium, comprising instructions, which when executed by a processor of a server computer cause the processor to:
configure a software stub for storage, installation and execution on a processor of a first computer, wherein the instructions configure the software stub for:
receiving over a network connection a data stream comprising an executable code of at least one software program from a seco computer disparate from the first computer,
extracting the executable code of the software program from the data stream,
determining an amount of dynamic memory required for the executable code from the data stream,
causing the first computer to allocate a specified amount of dynamic memory for the executable code of the software program,
loading the executable code of the software program directly from the data stream into the allocated dynamic memory, and
executing the software program from the dynamic memory; and
transmit the software stub to the first computer.
44. The computer readable storage medium of claim 43, wherein the instructions configure the software stub as a plug-in to be executed by a web browser on the first computer.
45. The computer readable storage medium of claim 43, wherein the instructions configure the software stub as a stand-alone program.
46. The computer readable storage medium of claim 43, wherein the instruction configure the software stub further for receiving a Uniform Resource Identifier (URI) of the software program for execution on the first computer.
47. A method, comprising:
receiving, by a first computer system, a software stub from a second computer system;
installing, by a first computer system, the received software stub;
transmitting, by the software stub, a request for an executable code of the downloadable software program, the request comprising a URI (Uniform Resource Identifier) identifying a downloadable software program;
receiving, by the software stub on the first computer system, the executable code of the downloadable software program in a data stream transmitted from the second computer system over a network connection between the first computer system and the second computer system;
extracting, by the first computer system, the executable code of the downloadable software program received in the data stream from the second system;
allocating, by the first computer system, an amount of dynamic memory for the executable code of the downloadable software program;
loading, by the first computer system, the executable code of the downloadable software program extracted from the data stream directly into the allocated dynamic memory; and
executing, by the first computer system, the downloadable software program by launching the executable code of the downloadable software program loaded in the allocated dynamic memory.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for converting a markup language representation to a data structure format containing representations of constructs in the markup language representation, the method comprising:
receiving a markup language representation containing encoded items representative of markup language constructs;
identifying a sequence of encoded items within the intermediate representation that represents a respective markup language construct;
establishing, within a buffer of nodes, a new node for the sequence of encoded items that represents a respective markup language construct; and
creating, from the buffer of nodes, a linked data structure that represents relationships between the markup language constructs represented within the markup language representation.
2. The method of claim 1 wherein receiving a markup language representation comprises:
receiving a stream of encoded items containing type, length, value representations of extensible markup language constructs within the markup language representation; and
wherein creating, from the buffer of nodes, a linked data structure comprises:
creating a tree data structure from the buffer of nodes, the tree data structure containing linked nodes that represent a hierarchical relationship existing between the markup language constructs represented within the markup language representation.
3. The method of claim 2 wherein identifying a sequence of encoded items within the intermediate representation that represents a respective markup language construct comprises:
obtaining at least one encoded item from the receive markup language representation;
matching the type of the at least one encoded item to identify a markup language construct that will require creation of at least one of:
i) a new attribute node within the buffer of nodes;
i) a new element node within the buffer of nodes;
i) a new processing instruction node within the buffer of nodes; and
i) a new content node within the buffer of nodes.
4. The method of claim 2 wherein establishing, within a buffer of nodes, a new node for the sequence of encoded items that represents a respective markup language construct comprises:
allocating an appropriate type of node, based on the type of at least one encoded item in the sequence of encoded items, as the new node within the buffer of nodes; and
setting data fields within the new node with corresponding data associated with the at least one encoded item, the data fields including a node type data field and a set of related node data fields associating the new node to at least one other node previously allocated in the buffer.
5. The method of claim 4 wherein setting data fields within the new node with corresponding data associated with the at least one encoded item comprises:
setting a parent node pointer to allow the new node to reference a parent node in the tree data structure; and
setting at least one sibling pointer in the new node to allow the parent node to reference at least one sibling node of the new node in relation to the parent node, such that, in the tree data structure, a parent node references a single sibling node and other child nodes of the parent node are referenced by following sibling pointers beginning from the single sibling node.
6. The method of claim 5 wherein setting at least one sibling pointer in the new node comprises:
setting a sibling forward pointer to point to a next sibling node of the new node in the tree data structure; and
setting a sibling reverse pointer to point to a previous sibling node of the new node in the tree data structure.
7. The method of claim 5 comprising:
maintaining a stack to track hierarchical levels of markup language constructs during processing of sequences of encoded items of the markup language representation; and
wherein setting data fields within the new node with corresponding data associated with the at least one encoded item comprises:
setting at least one pointer associated with the new node to reference at least one other node based on data within the stack such that the at least one pointer associated with the new node to the at least one other node to represent the hierarchical levels of markup language constructs as expressed in the encoded items of the markup language representation.
8. The method of claim 7 wherein maintaining a stack to track hierarchical levels of markup language constructs comprises:
for each hierarchical level represented by encoded items in the markup language representation, maintaining a stack entry that includes:
i) a pointer to a node in the tree data structure to which that hierarchical level of nodes is to be attached;
ii) a pointer to a last sibling node for that hierarchical level; and
iii) a pointer to a last child node for that hierarchical level.
9. The method of claim 8 wherein allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes comprises:
identifying a sequence of encoded items representing a close start element construct within the markup language representation and in response, performing the operations of:
i) resolving any unresolved namespaces;
ii) creating a stack entry in the stack to identify the hierarchical level of an element represented by encoded items in the markup language representation.
10. The method of claim 4 comprising:
determining if a buffer of nodes is available for allocation of the new node, and if not, creating a new buffer of nodes as the buffer of nodes in which new nodes can be allocated; and
determining if sufficient space is available within the buffer of nodes for creation of a new node, and if sufficient space is available within the buffer of nodes for creation of a new node, allocating an appropriate type of node as the new node within the buffer of nodes based on the matched type of the at least one encoded item, and if sufficient space is not available within the buffer of nodes for creation of a new node, providing the buffer of nodes as a branch of the tree data structure to a tree maintaining mechanism and creating a new buffer of nodes as the buffer of nodes in which new nodes can be allocated.
11. The method of claim 10 wherein providing the buffer of nodes as a branch of a tree to a tree maintaining mechanism comprises:
providing, to the tree maintaining mechanism, a pointer to a start node of the buffer of nodes and a pointer to an attachment node in the tree data structure of nodes to which to attach the buffer of nodes as the branch of the tree.
12. The method of claim 4 comprising:
identifying that that the type of the at least one encoded item requires allocation of a node including an numeric representation of the value field of the encoded item;
generating the numeric representation of the value field of the encoded item;
copying data associated with the value field of the at least one encoded item to a text buffer;
assigning the numeric representation of the value field to the new node; and
providing a pointer from the new node to the text buffer containing the data associated with the value field of the encoded item.
13. The method of claim 12 wherein generating the numeric representation of the value field of the encoded item comprises:
generating a QNAME for data within the value field of the at least one encoded item; and
wherein assigning the numeric representation of the value field to the new node comprises:
assigning the QNAME to the new node.
14. The method of claim 13 wherein generating a QNAME for data within the value field of the encoded item comprises:
obtaining QCODE values for a prefix portion, namespace portion, and suffix portion associated with the data in the value field of the at least one encoded item; and
combining the QCODE values for a prefix portion, namespace portion, and suffix portion to produce the QNAME for data within the value field of the at least one encoded item.
15. The method of claim 14 wherein obtaining QCODE values for a prefix portion, namespace portion, and suffix portion associated with the data in the value field of the at least one encoded item comprises:
generating a hash of the data within the value field of the at least one encoded item;
determining if a QCODE has been previously generated based on the hash for the data within the value field of the encoded item, and if a QCODE has been previously generated, obtaining the previously generated QCODE for the data within the value field of the encoded item, and if a QCODE has not been previously generated:
i) generating a QCODE on the data within the value field of the at least one encoded item;
ii) maintaining the generated QCODE in a list of QCODEs.
obtaining a namespace QCODE for the namespace portion associated with the value field of the encoded item; and
obtaining a QCODE for at least one of prefix or suffix data within the value field of the encoded item.
16. The method of claim 4 wherein allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes comprises:
identifying a sequence of encoded items representing an element within the markup language representation and in response, allocating an element node within the buffer of nodes;
and wherein setting data fields within the new node with corresponding data associated with the at least one encoded item comprises:
setting a value pointer of the element node to point to a memory location containing a value of text of a markup language construct represented by the value field of the at least one encoded item; and
setting a QNAME field of the element node to contain a QNAME generated based on data in the value field of the at least one encoded item.
17. The method of claim 4 wherein allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes comprises:
identifying a sequence of encoded items representing an attribute element within the markup language representation and in response, allocating an attribute node within the buffer of nodes;
and wherein setting data fields within the new node with corresponding data associated with the at least one encoded item comprises:
setting a value pointer of the attribute node to point to a memory location containing a value of an attribute of a markup language construct represented by the value field of the at least one encoded item;
setting a QNAME field of the attribute node to contain a QNAME generated based on data in the value field of the at least one encoded item; and
setting a related node data field to reference at least one of:
i) a sibling node existing in the buffer as a child of a parent node that is an element node; and
ii) a parent node that is an element node.
18. The method of claim 4 wherein allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes comprises:
identifying a sequence of encoded items representing an text element within the markup language representation and in response, allocating a text node within the buffer of nodes;
and wherein setting data fields within the new node with corresponding data associated with the at least one encoded item comprises:
setting a value pointer of the text node to point to a memory location containing a value of text of a markup language construct represented by the value field of the at least one encoded item.
19. The method of claim 4 wherein allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes comprises:
identifying a sequence of encoded items representing a processing instruction construct within the markup language representation and in response, allocating a processing instruction node within the buffer of nodes;
and wherein setting data fields within the new node with corresponding data associated with the at least one encoded item comprises:
setting a value pointer of the element node to point to a memory location containing a value of text of a markup language construct represented by the value field of the at least one encoded item; and
setting a QNAME field of the element node to contain a QNAME generated based on data in the value field of the at least one encoded item.
20. The method of claim 4 wherein the processing steps are performed as embedded instructions in a hardware device.
21. A processing device for converting a markup language representation to a data structure format containing representations of constructs in the markup language representation, the processing device comprising:
an input interface for receiving a markup language representation containing encoded items representative of markup language constructs;
logic processing coupled to the input interface and configured to identifying a sequence of encoded items within the intermediate representation that represents a respective markup language construct and configured to establish, within a buffer of nodes, a new node for the sequence of encoded items that represents a respective markup language construct; and
the logic processing creating, via an output interface coupled to the logic processing, from the buffer of nodes, a linked data structure that represents relationships between the markup language constructs represented within the markup language representation.
22. The processing device of claim 21 wherein when the logic processing performs the operation of receiving a markup language representation, the logic processing performs the operation of:
receiving a stream of encoded items containing type, length, value representations of extensible markup language constructs within the markup language representation; and
wherein when the logic processing performs the operation of creating, from the buffer of nodes, a linked data structure the logic processing performs the operation of:
creating a tree data structure from the buffer of nodes, the tree data structure containing linked nodes that represent a hierarchical relationship existing between the markup language constructs represented within the markup language representation.
23. The processing device of claim 22 wherein when the logic processing performs the operation of identifying a sequence of encoded items within the intermediate representation that represents a respective markup language construct, the logic processing performs the operations of:
obtaining at least one encoded item from the receive markup language representation; and
matching the type of the at least one encoded item to identify a markup language construct that will require creation of at least one of:
i) a new attribute node within the buffer of nodes;
i) a new element node within the buffer of nodes;
i) a new processing instruction node within the buffer of nodes; and
i) a new content node within the buffer of nodes.
24. The processing device of claim 22 wherein when the logic processing performs the operation of establishing, within a buffer of nodes, a new node for the sequence of encoded items that represents a respective markup language construct, the logic processing performs the operations of:
allocating an appropriate type of node, based on the type of at least one encoded item in the sequence of encoded items, as the new node within the buffer of nodes; and
setting data fields within the new node with corresponding data associated with the at least one encoded item, the data fields including a node type data field and a set of related node data fields associating the new node to at least one other node previously allocated in the buffer.
25. The processing device of claim 24 wherein when the logic processing performs the operation of setting data fields within the new node with corresponding data associated with the at least one encoded item, the logic processing performs the operations of:
setting a parent node pointer to allow the new node to reference a parent node in the tree data structure; and
setting at least one sibling pointer in the new node to allow the parent node to reference at least one sibling node of the new node in relation to the parent node, such that, in the tree data structure, a parent node references a single sibling node and other child nodes of the parent node are referenced by following sibling pointers beginning from the single sibling node.
26. The processing device of claim 25 wherein when the logic processing performs the operation of setting at least one sibling pointer in the new node, the logic processing performs the operations of:
setting a sibling forward pointer to point to a next sibling node of the new node in the tree data structure; and
setting a sibling reverse pointer to point to a previous sibling node of the new node in the tree data structure.
27. The processing device of claim 25 wherein the logic processing performs the operations of:
maintaining a stack to track hierarchical levels of markup language constructs during processing of sequences of encoded items of the markup language representation; and
wherein when the logic processing performs the operation of setting data fields within the new node with corresponding data associated with the at least one encoded item, the logic processing performs the operation of:
setting at least one pointer associated with the new node to reference at least one other node based on data within the stack such that the at least one pointer associated with the new node to the at least one other node to represent the hierarchical levels of markup language constructs as expressed in the encoded items of the markup language representation.
28. The processing device of claim 27 wherein when the logic processing performs the operation of maintaining a stack to track hierarchical levels of markup language constructs, the logic processing performs the operation of:
for each hierarchical level represented by encoded items in the markup language representation, maintaining a stack entry that includes:
i) a pointer to a node in the tree data structure to which that hierarchical level of nodes is to be attached;
ii) a pointer to a last sibling node for that hierarchical level; and
iii) a pointer to a last child node for that hierarchical level.
29. The processing device of claim 28 wherein when the logic processing performs the operation of allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes, the logic processing performs the operation of:
identifying a sequence of encoded items representing a close start element construct within the markup language representation and in response, performing the operations of:
i) resolving any unresolved namespaces;
ii) creating a stack entry in the stack to identify the hierarchical level of an element represented by encoded items in the markup language representation.
30. The processing device of claim 24 wherein the logic processing performs the operations of:
determining if a buffer of nodes is available for allocation of the new node, and if not, creating a new buffer of nodes as the buffer of nodes in which new nodes can be allocated; and
determining if sufficient space is available within the buffer of nodes for creation of a new node, and if sufficient space is available within the buffer of nodes for creation of a new node, allocating an appropriate type of node as the new node within the buffer of nodes based on the matched type of the at least one encoded item, and if sufficient space is not available within the buffer of nodes for creation of a new node, providing the buffer of nodes as a branch of the tree data structure to a tree maintaining mechanism and creating a new buffer of nodes as the buffer of nodes in which new nodes can be allocated.
31. The processing device of claim 30 wherein when the logic processing performs the operation of providing the buffer of nodes as a branch of a tree to a tree maintaining mechanism, the logic processing performs the operation of:
providing, to the tree maintaining mechanism, a pointer to a start node of the buffer of nodes and a pointer to an attachment node in the tree data structure of nodes to which to attach the buffer of nodes as the branch of the tree.
32. The processing device of claim 24 wherein the logic processing performs the operations of:
identifying that that the type of the at least one encoded item requires allocation of a node including an numeric representation of the value field of the encoded item;
generating the numeric representation of the value field of the encoded item;
copying data associated with the value field of the at least one encoded item to a text buffer;
assigning the numeric representation of the value field to the new node; and
providing a pointer from the new node to the text buffer containing the data associated with the value field of the encoded item.
33. The processing device of claim 32 wherein when the logic processing performs the operation of generating the numeric representation of the value field of the encoded item, the logic processing performs the operation of:
generating a QNAME for data within the value field of the at least one encoded item; and
wherein when the logic processing performs the operation of assigning the numeric representation of the value field to the new node, the logic processing performs the operation of:
assigning the QNAME to the new node.
34. The processing device of claim 33 wherein when the logic processing performs the operation of generating a QNAME for data within the value field of the encoded item, the logic processing performs the operations of:
obtaining QCODE values for a prefix portion, namespace portion, and suffix portion associated with the data in the value field of the at least one encoded item; and
combining the QCODE values for a prefix portion, namespace portion, and suffix portion to produce the QNAME for data within the value field of the at least one encoded item.
35. The processing device of claim 34 wherein when the logic processing performs the operation of obtaining QCODE values for a prefix portion, namespace portion, and suffix portion associated with the data in the value field of the at least one encoded item, the logic processing performs the operations of:
generating a hash of the data within the value field of the at least one encoded item;
determining if a QCODE has been previously generated based on the hash for the data within the value field of the encoded item, and if a QCODE has been previously generated, obtaining the previously generated QCODE for the data within the value field of the encoded item, and if a QCODE has not been previously generated:
i) generating a QCODE on the data within the value field of the at least one encoded item;
ii) maintaining the generated QCODE in a list of QCODEs.
obtaining a namespace QCODE for the namespace portion associated with the value field of the encoded item; and
obtaining a QCODE for at least one of prefix or suffix data within the value field of the encoded item.
36. The processing device of claim 24 wherein when the logic processing performs the operation of allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes, the logic processing performs the operation of:
identifying a sequence of encoded items representing an element within the markup language representation and in response, allocating an element node within the buffer of nodes;
and wherein when the logic processing performs the operation of setting data fields within the new node with corresponding data associated with the at least one encoded item, the logic processing performs the operations of:
setting a value pointer of the element node to point to a memory location containing a value of text of a markup language construct represented by the value field of the at least one encoded item; and
setting a QNAME field of the element node to contain a QNAME generated based on data in the value field of the at least one encoded item.
37. The processing device of claim 24 wherein when the logic processing performs the operation of allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes, the logic processing performs the operations of:
identifying a sequence of encoded items representing an attribute element within the markup language representation and in response, allocating an attribute node within the buffer of nodes;
and wherein when the logic processing performs the operation of setting data fields within the new node with corresponding data associated with the at least one encoded item, the logic processing performs the operations of:
setting a value pointer of the attribute node to point to a memory location containing a value of an attribute of a markup language construct represented by the value field of the at least one encoded item;
setting a QNAME field of the attribute node to contain a QNAME generated based on data in the value field of the at least one encoded item; and
setting a related node data field to reference at least one of:
i) a sibling node existing in the buffer as a child of a parent node that is an element node; and
ii) a parent node that is an element node.
38. The processing device of claim 24 wherein when the logic processing performs the operation of allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes, the logic processing performs the operation of:
identifying a sequence of encoded items representing an text element within the markup language representation and in response, allocating a text node within the buffer of nodes;
and wherein when the logic processing performs the operation of setting data fields within the new node with corresponding data associated with the at least one encoded item, the logic processing performs the operation of:
setting a value pointer of the text node to point to a memory location containing a value of text of a markup language construct represented by the value field of the at least one encoded item.
39. The processing device of claim 24 wherein when the logic processing performs the operation of allocating an appropriate type of node based on the type of the at least one encoded item as the new node within the buffer of nodes, the logic processing performs the operation of:
identifying a sequence of encoded items representing a processing instruction construct within the markup language representation and in response, allocating a processing instruction node within the buffer of nodes;
and wherein when the logic processing performs the operation of setting data fields within the new node with corresponding data associated with the at least one encoded item, the logic processing performs the operations of:
setting a value pointer of the element node to point to a memory location containing a value of text of a markup language construct represented by the value field of the at least one encoded item; and
setting a QNAME field of the element node to contain a QNAME generated based on data in the value field of the at least one encoded item.
40. A computer program product having a computer-readable medium including computer program logic encoded thereon that, when executed on processor within a computerized device, provides a tree builder that converts a markup language representation to a data structure format containing representations of constructs in the markup language representation by performing the operations of:
receiving a markup language representation containing encoded items representative of markup language constructs;
identifying a sequence of encoded items within the intermediate representation that represents a respective markup language construct;
establishing, within a buffer of nodes, a new node for the sequence of encoded items that represents a respective markup language construct; and
creating, from the buffer of nodes, a linked data structure that represents relationships between the markup language constructs represented within the markup language representation.
41. A processing device for converting a markup language representation to a data structure format containing representations of constructs in the markup language representation, the processing device comprising:
an input interface including means for receiving a markup language representation containing encoded items representative of markup language constructs;
logic processing coupled to the input interface and configured with means for identifying a sequence of encoded items within the intermediate representation that represents a respective markup language construct and establishing, within a buffer of nodes, a new node for the sequence of encoded items that represents a respective markup language construct; and
the logic processing including means for creating, via an output interface coupled to the logic processing, from the buffer of nodes, a linked data structure that represents relationships between the markup language constructs represented within the markup language representation.
42. A method for converting a markup language representation to a data structure format, the method comprising:
receiving a markup language representation containing encoded items representative of markup language constructs;
identifying data within the markup language representation that represents a respective markup language construct;
generating a numeric representation for the data, the numeric representation providing a unique searchable value that corresponds to the data and that may be searched faster than searching for the data itself;
establishing a new node in a linked data structure of nodes that represent respective markup language constructs within the markup language representation, the new node containing the numeric representation for the data.
43. The method of claim 42 wherein generating a numeric representation for the data comprises generating a QNAME for the data.
44. The method of claim 43 wherein generating a QNAME for the data comprises:
maintaining pools of QNAMES for previously identified data within already encountered markup language constructs;
receiving data associated with a markup language construct for which a QNAME is to be generated; and
determining that the data for which the QNAME is to be generated already has an existing QNAME in a QNAME pools, and in response, providing the QNAME from the QNAME pool for that data.