US20090299983A1 - System and Method of Accelerating Document Processing - Google Patents

System and Method of Accelerating Document Processing Download PDF

Info

Publication number
US20090299983A1
US20090299983A1 US12/535,902 US53590209A US2009299983A1 US 20090299983 A1 US20090299983 A1 US 20090299983A1 US 53590209 A US53590209 A US 53590209A US 2009299983 A1 US2009299983 A1 US 2009299983A1
Authority
US
United States
Prior art keywords
isomorphic
data
digest
hierarchical structure
document
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.)
Abandoned
Application number
US12/535,902
Inventor
Eric T. Lemoine
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.)
LSI Corp
Original Assignee
LSI 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 LSI Corp filed Critical LSI Corp
Priority to US12/535,902 priority Critical patent/US20090299983A1/en
Assigned to LSI CORPORATION reassignment LSI CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LEMOINE, ERIC T.
Publication of US20090299983A1 publication Critical patent/US20090299983A1/en
Abandoned legal-status Critical Current

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/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • 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]

Definitions

  • the invention relates to a system and method for processing structured documents such as extended markup language (XML) documents.
  • structured documents such as extended markup language (XML) documents.
  • Extensible markup language is a data description language that provides a mechanism to represent structured data in way that retains the logical structure and interrelationship of the underlying data.
  • data is represented as Unicode text using standardized markup syntax to express the structural information about that data.
  • an XML document may be constructed to conform to a document type declaration (DTD).
  • DTD is a formal description of a particular type of document. It sets forth what elements the particular type of document may contain, the structure of the elements, and the interrelationship of the elements.
  • XML documents While XML is human readable, XML documents, particularly those which conform to a well-known or standardized DTD, provide a convenient means of data exchange between computer programs in general, and on the Internet in particular.
  • XML's features, as well as the use of text and the structures encoded within the text make XML document processing processor intensive.
  • XML processing may tend to consume so much of a server's processing power that the amount of processing power remaining to actually apply the XML data to the relevant application may be impacted.
  • One embodiment is system for processing XML documents.
  • the system includes a tokenizer configured to identify tokens in an XL document.
  • the system further includes a plurality of speculative processing modules configured to receive the tokens and to at least partially process the XML document and to generate data indicative of the XML document.
  • the system further includes a first module configured to receive the data indicative of the XML document and configured to perform further processing of the XML document using the data indicative of the XML document and configured to output the processed XML document.
  • Each of the plurality of speculative processing modules is configured to asynchronously provide the data indicative of the XML document to the first module.
  • Another embodiment includes a method of processing a document having structured data.
  • the method includes determining a first indicator that identifies structure of a first document, determining at least one property of the first document, and storing the first indicator with the at least one property.
  • the method further includes determining a second indicator that identifies structure of a second document, matching the second indicator to the first indicator, and retrieving the at least one property stored with the first indicator.
  • Another embodiment is a content processor containing software defining a process which when executed causes the content processor to perform the acts of: determining a first indicator that identifies structure of a first document having structured data, determining at least one property of the first document; and storing the first indicator with the at least one property.
  • Another embodiment is a method of searching in structured documents.
  • the method includes storing a plurality of isomorphic digest values in a data structure that associates each of the plurality of isomorphic digest values with data indicative of at least a portion of a respective hierarchical structure.
  • the method further includes identifying a portion of an XML document. Said portion may comprise a hierarchical structure.
  • the method further includes determining an isomorphic digest indicative of the portion.
  • the method further includes identifying the isomorphic digest value with a stored one of the plurality of isomorphic digest values.
  • the method further includes outputting the associated data indicative of the at least a portion of a respective hierarchical structure.
  • Another embodiment is a method of transforming an XML document into a predetermined format.
  • the method includes identifying at least a portion of the XML document that is noncompliant with the predetermined format.
  • the method further includes transforming the portion of the XML document into compliance with the predetermined format using the one of the plurality of transformations and outputting the transformed portion of the XML document when the portion of the XML document can be transformed into compliance using at least one of plurality of transformations.
  • the method further includes outputting data indicative of the portion of the XML document.
  • Another embodiment is a system for transforming an XML document into a predetermined format.
  • the system includes means for identifying a portion of the XML document that is noncompliant with the predetermined format, means for transforming the portion of the XML document into the predetermined format using at least one one of the plurality of transformations and providing the transformed portion when the XML document can be transformed into compliance using the at least one of plurality of a transformation, and means for outputting data indicative of the portion of the XML document when the XML document cannot be transformed into compliance using at least one of plurality of transformations.
  • FIG. 1 is a block diagram illustrating an exemplary system for processing XML documents.
  • FIG. 2 is a flowchart illustrating an exemplary method of using a system such as illustrated in FIG. 1 to identify and cache documents having substantially similar structures.
  • FIG. 3 is a flowchart illustrating an exemplary method of using a system such as illustrated in FIG. 1 to define points of interest in XML documents.
  • FIG. 4 is a flowchart illustrating an exemplary method of identifying points of interest, such as defined by the method of FIG. 3 , in a XML document.
  • FIG. 5 is a flowchart illustrating an exemplary method of canonicalization processing of an XML document in a system such as illustrated in FIG. 1 .
  • FIG. 6 is a block diagram illustrating in more detail one embodiment of the system of FIG. 1 .
  • Processing of XML documents is typically performed as set of sequential steps.
  • the steps used in that sequence to process a particular document may vary with the content of the XML document.
  • a system may first identity the type of document.
  • data in a certain element of the XML document may be desired.
  • the document may be more fully processed to, for example, resolve namespaces in the document to properly identity the desired data element.
  • One way of improving processing performance is by using customized hardware to perform part of the XML processing.
  • overall throughput of an XML document processing system in general, and applicability of hardware acceleration for such processing, in particular, can be improved by speculatively performing certain functions of processing XML documents in parallel upon receipt of such documents for processing.
  • the data derived by the speculatively processed functions is available without delay for continued processing by other XML processing functions.
  • XML documents in many applications are computer generated.
  • Computer generated XML documents tend to have a very consistent structure from document to document, even though the actual data content itself varies.
  • XML documents that describe an “employee,” e.g., produced to comply with a DTD that includes an “employee,” may be structurally identical, e.g., providing the same elements of each employee with the same structure and with the same order within the structure, with only the actual attribute values of each document varying.
  • most XML documents received by a system for processing are in fact well formed, valid, designed against an available schema, in canonical XML form, and include namespaces that are known in advance.
  • XML documents can be simplified and thus accelerated by assuming that documents are in such regular forms until data in the document shows otherwise.
  • such documents can be processed more efficiently by identifying documents that share the structure of a previously processed document so that data structures or other data associated with the prior processing of structural data can be reused.
  • FIG. 1 is a block diagram illustrating an exemplary system 100 for processing XML documents.
  • the system 100 includes one or more processors in communication with memory and storage.
  • the system 100 includes speculative processing modules 102 that process functions of an XML document received by the system 100 and provide data regarding those functions to an XML processing module 104 .
  • one or more of the speculative processing modules 102 execute in parallel,
  • the system 100 includes one or more general purpose processors and one or more content processors configured to execute software instructions for performing at least some of the functions attributed to the system 100 .
  • the content processors may include general purpose microprocessors or other digital logic circuits, e.g., a programmable gate array (PGA) or an application specific integrated circuit (ASIC) configured to perform at least some of the functions attributed to the system 100 .
  • the speculative processing modules 102 are executed in parallel on or more of the general purpose processors and/or the content processors. The speculative processing modules 102 perform particular functions in the processing of XML documents that may or may not be needed for any given document and provide that data asynchronously, e.g., without the data being requested, to the XML processing module 104 for further processing.
  • the speculative processing modules 102 include one or more of a tokenizer 110 that processes XML documents into syntactic tokens, a well-formed document check module 111 that at least partially determines whether the XML document is well formed according to the X specification, and a validator 112 that at least partially determines whether the XML document is valid.
  • the tokenizer 110 may include hardware for performing tokenization such as described in U.S. patent application Ser. No. 10/831,956 entitled “SYSTEM AND METHOD OF TOKENIZING DOCUMENTS,” filed Apr. 26, 2004, and incorporated by reference in its entirety.
  • the speculative processing modules 102 include a digest hashing module 114 that maintains a cache of data associated with XML documents having particular structures.
  • the speculative processing modules 102 may also include a conformance engine 116 that determines whether a document conforms to a particular structure, and identifies data in the document that does so conform.
  • the speculative processing modules 102 may also include a type inference module 120 that infers the types of attributes of processed XML documents.
  • the speculative processing modules 102 include a canonicalization (AS4N) module 118 that determines and whether an XML document is in a particular “canonical” form, such as the canonical XML form defined by the World Wide Web Consortium (W3C).
  • the speculative processing modules 102 may also include a namespace resolution module 124 that resolves names within the XML document structure according to the proper namespace.
  • an XML document is received by the system 100 for processing.
  • Each of the speculative processing modules 102 processes the incoming XML document.
  • each of the speculative processing modules 102 processes the XML document concurrently or in parallel using multiple processors and/or digital logic circuits.
  • the results of the speculative processing are provided to the XML processing module 104 for further processing.
  • processed data provided by the speculative processing modules 102 is available to the XML processing module 104 without further processing delay.
  • the XML processing module 104 can obtain data already located in the document by the conformance engine 116 .
  • the digest caching module 114 is configured to calculate a hash or digest value that identifies the structure of an AL document.
  • the digest value is then stored in a data cache so as to identify cached data associated with the structure or other properties of the document.
  • the cache is a hashtable that identifies the cached data with the respective digest value.
  • the cached document properties may include data or data structures derived by processing the XML document.
  • FIG. 2 is a flowchart illustrating an exemplary method 150 of using the system 100 to identify and cache documents having substantially similar structures.
  • data obtained during processing of a first document is cached for later use while processing later received documents that have substantially the same XML structure.
  • the method 150 begins at a block 152 in which the system 100 receives an XML document.
  • the system 100 processes the XML document, e.g., performs initial tokenization and parsing, to determine the structure of the document.
  • the digest caching module determines an isomorphic digest value indicative of the structure of the XML document.
  • Two XML documents may be referred to as being isomorphic if the documents have the same structure.
  • a digest value refers to a representation of the document in the form of a short string or numeric value such as calculated by a one-way or hash function.
  • a hash table used to cache data may be limited by the effectiveness of the hash function for uniquely identifying the data being hashed.
  • a cryptographic hash function e.g., SHA-1, is used to calculate the digest value for each document.
  • An isomorphic digest value is thus a digest value that when calculated for two documents is the same if those two documents have the same structure and different if the two documents have different structure.
  • the digest value for each document is calculated using a string that represents the structure of the document.
  • the string is determined from the document by removing all whitespace, comments, attribute values, and node text values. Additional symbols may be placed within the string to disambiguate elements from attributes.
  • Namespace declarations may include the Uniform Resource Identifier (URI) of the namespace. See Table 1 for an example document and structure string.
  • URI Uniform Resource Identifier
  • the digest caching module 114 looks up the digest value of the current document in the cache to determine whether its digest value is stored in the cache.
  • the cache includes a hashtable that uses digest values as hash keys for identifying cached data. If cached data is identified with the digest value of the current document, the method 150 proceeds to a block 162 in which the cached data, or a pointer to the cached data, is retrieved and provided to other components of the system 100 for use in processing the current XML document.
  • the system 100 processes the current XML document, using the cached data.
  • the method 150 proceeds to the block 164 , in which the current XML document is processed without benefit of any cached data.
  • the digest caching module 114 stores suitable data obtained in processing the document 164 in the cache and identifies that data with the digest value.
  • the hash table stores a pointer to the data at the entry in the hash table for the digest value in order to identify the data with the digest value.
  • FIG. 3 is a flowchart illustrating an exemplary method 170 of using the system 100 to define points of interest in XML documents.
  • the conformance engine 116 is configured to identify points of interest in the structure of an XML document, e.g., to determine whether the document conforms to a particular form. The conformance engine 116 thus searches in parallel for all identified points of interest that may be in the document as the document is processed.
  • the conformance engine 116 maintains a data structure, embodied as a conformance table, for identifying particular XML document structures that have been defined by, e.g., a user of the system 100 , as a point of interest.
  • the conformance table is a hash table.
  • the structure of each point of interest is stored in the hash table according to its digest value.
  • each structure above the point of interest in the hierarchy of the document's structure is also stored in the conformance table. For example, returning to the example in Table 1, the structure of a particular example document can be represented as a string:
  • hash values for each of the structures that are above “e 5 ” in the hierarchical document structure, i.e., its “parent” structures, of “ ⁇ doc>,” and “ ⁇ doc> ⁇ e 1 >” along with the structure of the point of interest, “ ⁇ doc> ⁇ e 1 > ⁇ e 5 >” are stored in the table along with corresponding data.
  • the corresponding data for parent structures “ ⁇ doc>” and “ ⁇ doc> ⁇ e 1 >” may include a “further processing” token.
  • the corresponding data for the actual point of interest structure may include a particular token identifying the point of interest, e.g., a numeric code that, for example, indexes a table containing other data relating to a defined group of points of interest.
  • the corresponding data includes a pointer to a data structure containing further information about the point of interest.
  • the corresponding data may include a pointer to instructions that are executed upon identifying the point of interest.
  • the method 170 of generating the entries for a particular point of interest in the conformance table begins at a block 172 in which the conformance engine 116 receives a nested structure identifying a point of interest;
  • the levels of nested structure may be referred to by a number from 1 to N, with the level 1 being associated with the top most level of the structure and level N being associated with the most deeply nested level of structure.
  • the conformance engine 116 determines a digest value for each level of the structure.
  • the hash value is calculated using a cryptographic hash function such as SHA-1.
  • the conformance engine 116 identifies the digest values for each of the structure levels, except for the full structure, N, with a “further processing” indicator or token.
  • the conformance engine 116 identifies the digest values with the structure levels by storing the further processing token in a hash table using the digest value as the hash key.
  • the hash table may include entries associating the structure strings “ ⁇ doc>” and “ ⁇ doc> ⁇ e>” with the “further processing” token.
  • the conformance engine 116 determines the digest value of the full structure of the point of interest, e.g., structure level N. with data for processing the point of interest.
  • the conformance engine 116 stores the data in a hash table using the digest value of the structure string as the hash key.
  • the data for processing the point of interest includes data identifying the point of interest, such as a token or numeric reference indicator associated with the point of interest.
  • the conformance engine stores in the conformance table one or more pointers to data associated with the point of interest.
  • the pointers may include a pointer to executable instructions for processing the point of interest. For example, the conformance engine 116 calculates the hash key for the string “ ⁇ doc> ⁇ e 1 > ⁇ e 5 >” and stores a pointer in the hash table to data obtained in the processing of the exemplary document.
  • FIG. 4 is a flowchart illustrating an exemplary method 180 of identifying points of interest, such as defined by the method 170 , in a XML document that is being processed.
  • the conformance engine 116 receives a portion of the document structure, e.g., the top level structure in an XML document.
  • the conformance engine 116 determines an isomorphic digest value indicative of the portion of the document structure.
  • the digest value is a calculated using a hash function, e.g., a cryptographic hash such as SHA-1.
  • the conformance engine 116 calculates a hash value for the structure string “ ⁇ doc>” associated with this substructure.
  • the conformance engine 116 determines whether the hash key for the current portion of the structure has been stored. Continuing with the example from Table 1, as discussed with reference to FIG. 3 , the conformance engine 116 retrieves a “further processing” token from the hash table for the hash key of the string “ ⁇ doc>”. If the conformance engine 116 identifies any data, e.g., finds the data in the hash table, with the digest value of the current portion of the structure, the method 180 proceeds to a block 186 . If, in the block 184 , the conformance engine 116 fails to identifies any data, e.g., the digest value is not in the hash table, the method 180 proceeds to an end state and the conformance engine finishes processing of the portion of the structure.
  • the conformance engine 116 determines whether the data identified with the digest value denotes further processing, for example, whether the data includes the “further processing” token. If further processing is indicated, the method 180 proceeds to a block 188 . If no further processing is indicated, the method 180 proceeds to a block 190 . Returning to the block 188 , the conformance engine 116 receives data regarding further structure of the document, e.g., the next deeper level of nested structure (“ ⁇ doc> ⁇ e 1 >” in the example of Table 1). In one embodiment, the conformance engine 116 receives one or more tokens until the next level of structure of the current XML document is defined. Next, the method 180 proceeds back to the block 182 to process this next level of structure.
  • the conformance engine 116 receives data regarding further structure of the document, e.g., the next deeper level of nested structure (“ ⁇ doc> ⁇ e 1 >” in the example of Table 1). In one embodiment, the conformance engine 116 receives one or more tokens until the next level
  • the conformance engine 116 returns data indicative of the located point of interest in the document.
  • the data includes a token associated with the point of interest in the document.
  • the conformance engine 116 outputs the token indicating the presence of the particular point of interest to the XML processing module 104 .
  • the data includes a pointer to executable instructions for processing the point of interest.
  • the conformance engine 116 executes these instructions.
  • the conformance engine 116 provides the pointer to the executable instruction to the XML processing module 104 for execution.
  • W3C canonicalization (C14N) of XML includes generating a form for an XML document in which certain differences in representation have been removed, for example, converting empty elements to start-end tag pairs, normalizing whitespace outside of document elements and within start and end tags, setting attribute value delimiters to quotation marks (double quotes), adding default attributes to each element, and imposing lexicographic order on the namespace declarations and attributes of each element within the output XML document.
  • the content of two or more documents in canonical XML form can be more easily compared to each other than can documents not in canonical form in order to determine when such documents include equivalent content. Because such documents do not include all possible syntactic constructions in XML, such documents can also be easier to process.
  • One canonical XML format is defined by the World Wide Web Consortium, e.g., “Canonical XML, Version 1.0 (Mar. 15, 2001) available at www.w3c.org.
  • Methods for fully performing C14N processing may be performed in hardware using an ASIC or a gate array. Such a hardware solution may not be cost effective due to the complexity of full C14N processing. However, by performing only selected portions of the C14N processing in hardware logic, C14N processing can be substantially accelerated.
  • FIG. 5 is a flowchart illustrating an exemplary method 200 of canonicalization processing of an XML document by, for example, the canonicalization module (C14N module) 118 .
  • the C14N module 118 receives each token in the XML document from the tokenizer 110 and processes the token according to the method 200 .
  • the C14N module 118 includes a processor programmed to perform at least a portion of the method 200 .
  • the C14N module includes hardware logic configured to perform at least a portion of the method 200 .
  • the method 200 begins at a block 202 in which the C14N module 118 identifies, based on one or more recent tokens, that the document is not in C14N form.
  • the C14N module 118 determines whether the non-C14N form can be corrected by one of a set of simple transformations.
  • Such simple transformations include extra whitespace in the document.
  • the simple transformations include transformations of the document that can be performed efficiently by hardware logic such as in a PGA. If the transformation is a simple transformation, the method 180 proceeds to block 206 in which the C14N module 118 performs the simple transformation.
  • Such simple transformations may include discarding extra whitespace (white space in excess of that defined for canonical form) in the document or encoding special characters. If the transformation is not a simple transformation, the method 180 proceeds to a block 208 .
  • the C14N module outputs a token noting the presence, location, and other details of the non-canonical form. For example, transformations such as changing the order of elements to be in canonical lexicographic ordering may be performed in software after the entire document is processed.
  • the C14N module 118 includes software for performing such non-simple transformations.
  • the C14N module 118 performs only the simple transformations, in hardware logic, during the initial speculative processing of the document. In one such embodiment, the C14N module 118 processes the outputted tokens to more fully place the document in C14N form after the speculative processing phase.
  • the system 100 may speculatively perform any number of XML processing functions depending on the amount of system resources that are available and the particular application.
  • One such function may include making type inferences using the type inference module 120 .
  • the type inference module 120 evaluates each attribute of each element in an XML document and returns a list of possible types for each token. For example, for an attribute value containing “1” the possible types may include boolean (with a value corresponding to “true”) and integer (with a value corresponding to the number 1). In one embodiment, this processing is performed speculatively, e.g., before the need for such data is identified for a particular document, and in hardware logic.
  • Later processing of the XML document can thus be accelerated by having attribute data at least partially processed.
  • attribute data For example, because the data of each attribute is processed for each possible type, another component of the system 100 can quickly and efficiently bind the values to a strongly typed (e.g., C or C++) data structure.
  • a strongly typed e.g., C or C++
  • the namespace resolution module 124 performs namespace resolution of names in the XML document speculatively, e.g., before the need for such data is identified for a particular document, and in hardware logic, so as to reduce the overall time to process each document.
  • FIG. 6 is a block diagram illustrating one embodiment of the system 100 .
  • the exemplary system 100 includes a processor 302 operably connected to a network interface 304 and a memory 306 .
  • the processor 302 is also connected to a content processor 310 .
  • the content processor 310 includes a processor 312 .
  • the content processor 310 includes a logic circuit 314 .
  • the content processor 310 may also include a memory 316 .
  • the content processor 310 is embodied as an ASIC or a PGA.
  • embodiments of the invention overcome many of the longstanding problems in the art by simplifying XML processing so that such processing can be further accelerated using hardware.
  • numerous XML processing functions can be performed in parallel in hardware in advance so that data from these functions is nearly instantly available to later processing functions.
  • Overall XML processing system throughput and latency can thus be improved.
  • each of the modules described above may include various sub-routines, procedures, definitional statements and macros.
  • Each of the modules may be separately compiled and linked into a single executable program.
  • the description of each of the modules is used for convenience to describe the functionality of one embodiment of a system.
  • the processes that are performed by each of the modules may be redistributed to one of the other modules, combined together in a single module, or made available in, for example, a shareable dynamic link library.
  • the modules may be executed concurrently or in parallel as distinct threads or processes.
  • the modules may be produced using any computer language or environment, including general-purpose languages such as C, Java, C++, or FORTRAN.
  • the functions described with respect to the modules may be performed, in all or in part, by either the general purpose processor 302 or the content processor 310 of FIG. 6 .

Abstract

Embodiments include methods and systems for processing XML documents. One embodiment is a system that includes a tokenizer configured to identify tokens in an XML document. A plurality of speculative processing modules are configured to receive the tokens and to at least partially process the XML document and to provide data indicative of the XML document. A first module is configured to perform further processing of the XML document using the data indicative of the XML document and configured to output the processed XML document. Each of the plurality of speculative processing modules is configured to asynchronously provide the data indicative of the XML document to the first module. Other embodiments include method and systems for performing the speculative processing.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The invention relates to a system and method for processing structured documents such as extended markup language (XML) documents.
  • 2. Description of the Related Technology
  • Extensible markup language (XML) is a data description language that provides a mechanism to represent structured data in way that retains the logical structure and interrelationship of the underlying data. In XML, data is represented as Unicode text using standardized markup syntax to express the structural information about that data. In brief, XML syntax includes tags (a string bracketed by ‘<’ and ‘>’) and attributes (syntax of the form attribute_name=“value”). The particular tags and attributes used in a document may be selected with reference to the type of data that is represented by a particular document. Moreover, an XML document may be constructed to conform to a document type declaration (DTD). A DTD is a formal description of a particular type of document. It sets forth what elements the particular type of document may contain, the structure of the elements, and the interrelationship of the elements.
  • While XML is human readable, XML documents, particularly those which conform to a well-known or standardized DTD, provide a convenient means of data exchange between computer programs in general, and on the Internet in particular. However, many of XML's features, as well as the use of text and the structures encoded within the text, make XML document processing processor intensive. Thus, in systems that exchange a high volume of XML data, e.g., e-commerce systems that process XML encoded security data, XML processing may tend to consume so much of a server's processing power that the amount of processing power remaining to actually apply the XML data to the relevant application may be impacted. One solution to this problem is to offload processing of XML queries to dedicated content processors that employ hardware specifically configured to process XML. However, the memory and processor requirements associated with XML processing have limited the cost effective implementation of content processing for XML queries. Thus, simpler yet resource efficient systems and methods of processing XML documents are needed.
  • SUMMARY OF CERTAIN INVENTIVE ASPECTS
  • The system, method, and devices of the invention each have several aspects, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this invention as expressed by the claims which follow, its more prominent features will now be discussed briefly. After considering this discussion, and particularly after reading the section entitled “Detailed Description of Certain Embodiments” one will understand how the features of this invention provide advantages that include faster and more efficient processing of XML documents.
  • One embodiment is system for processing XML documents. The system includes a tokenizer configured to identify tokens in an XL document. The system further includes a plurality of speculative processing modules configured to receive the tokens and to at least partially process the XML document and to generate data indicative of the XML document. The system further includes a first module configured to receive the data indicative of the XML document and configured to perform further processing of the XML document using the data indicative of the XML document and configured to output the processed XML document. Each of the plurality of speculative processing modules is configured to asynchronously provide the data indicative of the XML document to the first module.
  • Another embodiment includes a method of processing a document having structured data. The method includes determining a first indicator that identifies structure of a first document, determining at least one property of the first document, and storing the first indicator with the at least one property. In one embodiment, the method further includes determining a second indicator that identifies structure of a second document, matching the second indicator to the first indicator, and retrieving the at least one property stored with the first indicator.
  • Another embodiment is a content processor containing software defining a process which when executed causes the content processor to perform the acts of: determining a first indicator that identifies structure of a first document having structured data, determining at least one property of the first document; and storing the first indicator with the at least one property.
  • Another embodiment is a method of searching in structured documents. The method includes storing a plurality of isomorphic digest values in a data structure that associates each of the plurality of isomorphic digest values with data indicative of at least a portion of a respective hierarchical structure. The method further includes identifying a portion of an XML document. Said portion may comprise a hierarchical structure. The method further includes determining an isomorphic digest indicative of the portion. The method further includes identifying the isomorphic digest value with a stored one of the plurality of isomorphic digest values. The method further includes outputting the associated data indicative of the at least a portion of a respective hierarchical structure.
  • Another embodiment is a method of transforming an XML document into a predetermined format. The method includes identifying at least a portion of the XML document that is noncompliant with the predetermined format. The method further includes transforming the portion of the XML document into compliance with the predetermined format using the one of the plurality of transformations and outputting the transformed portion of the XML document when the portion of the XML document can be transformed into compliance using at least one of plurality of transformations. When the portion of the XML document cannot be transformed into compliance using at least one of plurality of transformations, the method further includes outputting data indicative of the portion of the XML document.
  • Another embodiment is a system for transforming an XML document into a predetermined format. The system includes means for identifying a portion of the XML document that is noncompliant with the predetermined format, means for transforming the portion of the XML document into the predetermined format using at least one one of the plurality of transformations and providing the transformed portion when the XML document can be transformed into compliance using the at least one of plurality of a transformation, and means for outputting data indicative of the portion of the XML document when the XML document cannot be transformed into compliance using at least one of plurality of transformations.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram illustrating an exemplary system for processing XML documents.
  • FIG. 2 is a flowchart illustrating an exemplary method of using a system such as illustrated in FIG. 1 to identify and cache documents having substantially similar structures.
  • FIG. 3 is a flowchart illustrating an exemplary method of using a system such as illustrated in FIG. 1 to define points of interest in XML documents.
  • FIG. 4 is a flowchart illustrating an exemplary method of identifying points of interest, such as defined by the method of FIG. 3, in a XML document.
  • FIG. 5 is a flowchart illustrating an exemplary method of canonicalization processing of an XML document in a system such as illustrated in FIG. 1.
  • FIG. 6 is a block diagram illustrating in more detail one embodiment of the system of FIG. 1.
  • DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS
  • The following detailed description is directed to certain specific embodiments of the invention. However, the invention can be embodied in a multitude of different ways as defined and covered by the claims. In this description, reference is made to the drawings wherein like pails are designated with like numerals throughout.
  • Processing of XML documents is typically performed as set of sequential steps. The steps used in that sequence to process a particular document may vary with the content of the XML document. For example, after receiving an XML document, a system may first identity the type of document. For a particular type of document, data in a certain element of the XML document may be desired. Thus, the document may be more fully processed to, for example, resolve namespaces in the document to properly identity the desired data element.
  • One way of improving processing performance is by using customized hardware to perform part of the XML processing. For example, overall throughput of an XML document processing system, in general, and applicability of hardware acceleration for such processing, in particular, can be improved by speculatively performing certain functions of processing XML documents in parallel upon receipt of such documents for processing. As such documents are further processed, the data derived by the speculatively processed functions is available without delay for continued processing by other XML processing functions.
  • Moreover, XML documents in many applications are computer generated. Computer generated XML documents tend to have a very consistent structure from document to document, even though the actual data content itself varies. For example, XML documents that describe an “employee,” e.g., produced to comply with a DTD that includes an “employee,” may be structurally identical, e.g., providing the same elements of each employee with the same structure and with the same order within the structure, with only the actual attribute values of each document varying. More generally, most XML documents received by a system for processing are in fact well formed, valid, designed against an available schema, in canonical XML form, and include namespaces that are known in advance. Thus, the overall processing performance of XML documents can be simplified and thus accelerated by assuming that documents are in such regular forms until data in the document shows otherwise. In particular, such documents can be processed more efficiently by identifying documents that share the structure of a previously processed document so that data structures or other data associated with the prior processing of structural data can be reused.
  • FIG. 1 is a block diagram illustrating an exemplary system 100 for processing XML documents. In one embodiment, the system 100 includes one or more processors in communication with memory and storage. The system 100 includes speculative processing modules 102 that process functions of an XML document received by the system 100 and provide data regarding those functions to an XML processing module 104. In one embodiment, one or more of the speculative processing modules 102 execute in parallel, In one embodiment, the system 100 includes one or more general purpose processors and one or more content processors configured to execute software instructions for performing at least some of the functions attributed to the system 100. In one embodiment, the content processors may include general purpose microprocessors or other digital logic circuits, e.g., a programmable gate array (PGA) or an application specific integrated circuit (ASIC) configured to perform at least some of the functions attributed to the system 100. In one embodiment, the speculative processing modules 102 are executed in parallel on or more of the general purpose processors and/or the content processors. The speculative processing modules 102 perform particular functions in the processing of XML documents that may or may not be needed for any given document and provide that data asynchronously, e.g., without the data being requested, to the XML processing module 104 for further processing. However, by performing portions of the processing in parallel and asynchronously, overall processing time, e.g., system latency, of XML documents can be decreased as compared to serial processing where particular functions of processing are performed only as needed. Moreover, by selecting suitable functions to perform speculatively, such functions can be implemented in hardware to further improve performance.
  • hi one embodiment, the speculative processing modules 102 include one or more of a tokenizer 110 that processes XML documents into syntactic tokens, a well-formed document check module 111 that at least partially determines whether the XML document is well formed according to the X specification, and a validator 112 that at least partially determines whether the XML document is valid. hi one embodiment, the tokenizer 110 may include hardware for performing tokenization such as described in U.S. patent application Ser. No. 10/831,956 entitled “SYSTEM AND METHOD OF TOKENIZING DOCUMENTS,” filed Apr. 26, 2004, and incorporated by reference in its entirety. In addition, U.S. patent application Ser. No. 10/774,663, filed Jul. 2, 2004, which is hereby incorporated by reference in its entirety, describes one embodiment of the validator 112 that identifies documents that are not well-formed by using statistics obtained by, for example, the tokenizer 110.
  • In one embodiment, the speculative processing modules 102 include a digest hashing module 114 that maintains a cache of data associated with XML documents having particular structures. The speculative processing modules 102 may also include a conformance engine 116 that determines whether a document conforms to a particular structure, and identifies data in the document that does so conform.
  • The speculative processing modules 102 may also include a type inference module 120 that infers the types of attributes of processed XML documents. In one embodiment, the speculative processing modules 102 include a canonicalization (AS4N) module 118 that determines and whether an XML document is in a particular “canonical” form, such as the canonical XML form defined by the World Wide Web Consortium (W3C). The speculative processing modules 102 may also include a namespace resolution module 124 that resolves names within the XML document structure according to the proper namespace.
  • In operation, an XML document is received by the system 100 for processing. Each of the speculative processing modules 102 processes the incoming XML document. In one embodiment, each of the speculative processing modules 102 processes the XML document concurrently or in parallel using multiple processors and/or digital logic circuits. The results of the speculative processing are provided to the XML processing module 104 for further processing. As the XML processing module 104 proceeds with processing, processed data provided by the speculative processing modules 102 is available to the XML processing module 104 without further processing delay. For example, the XML processing module 104 can obtain data already located in the document by the conformance engine 116.
  • In one embodiment, the digest caching module 114 is configured to calculate a hash or digest value that identifies the structure of an AL document. The digest value is then stored in a data cache so as to identify cached data associated with the structure or other properties of the document. In one embodiment, the cache is a hashtable that identifies the cached data with the respective digest value. The cached document properties may include data or data structures derived by processing the XML document. When a second XML document is received having the same stricture, and thus the same digest value as the first XML document in the cache, the cached data may be used to process the second document without requiring additional processing time to derive the cached data.
  • FIG. 2 is a flowchart illustrating an exemplary method 150 of using the system 100 to identify and cache documents having substantially similar structures. In one embodiment, data obtained during processing of a first document is cached for later use while processing later received documents that have substantially the same XML structure. The method 150 begins at a block 152 in which the system 100 receives an XML document. Next at a block 154, the system 100 processes the XML document, e.g., performs initial tokenization and parsing, to determine the structure of the document. Moving to a block 156, the digest caching module determines an isomorphic digest value indicative of the structure of the XML document. Two XML documents may be referred to as being isomorphic if the documents have the same structure. A digest value refers to a representation of the document in the form of a short string or numeric value such as calculated by a one-way or hash function. Generally, the effectiveness of a hash table used to cache data may be limited by the effectiveness of the hash function for uniquely identifying the data being hashed. In one embodiment, a cryptographic hash function, e.g., SHA-1, is used to calculate the digest value for each document. By using such a hash function, there is no reasonable likelihood that two different structures hash to the same value.
  • An isomorphic digest value is thus a digest value that when calculated for two documents is the same if those two documents have the same structure and different if the two documents have different structure. In one embodiment, the digest value for each document is calculated using a string that represents the structure of the document. In one embodiment, the string is determined from the document by removing all whitespace, comments, attribute values, and node text values. Additional symbols may be placed within the string to disambiguate elements from attributes. Namespace declarations may include the Uniform Resource Identifier (URI) of the namespace. See Table 1 for an example document and structure string.
  • TABLE 1
    Document <doc>
    <e1>
    <e5></e5>
    </e1>
    <e2></e2>
    <e3 attr1=“attr1value”></e3>
    <e4 attr1=“attr1value”></e4>
    </doc>
    Structure <doc><e1><e5></e1><e2><e3#attr1><e4#attr2></doc>
  • Proceeding to a block 160, the digest caching module 114 looks up the digest value of the current document in the cache to determine whether its digest value is stored in the cache. In one embodiment, the cache includes a hashtable that uses digest values as hash keys for identifying cached data. If cached data is identified with the digest value of the current document, the method 150 proceeds to a block 162 in which the cached data, or a pointer to the cached data, is retrieved and provided to other components of the system 100 for use in processing the current XML document. Next at a block 164, the system 100 processes the current XML document, using the cached data. Referring again to the block 160, if no cache data is identified with the digest value, the method 150 proceeds to the block 164, in which the current XML document is processed without benefit of any cached data. Next at a block 166, the digest caching module 114 stores suitable data obtained in processing the document 164 in the cache and identifies that data with the digest value. In one embodiment, the hash table stores a pointer to the data at the entry in the hash table for the digest value in order to identify the data with the digest value.
  • FIG. 3 is a flowchart illustrating an exemplary method 170 of using the system 100 to define points of interest in XML documents. In particular, in one embodiment, the conformance engine 116 is configured to identify points of interest in the structure of an XML document, e.g., to determine whether the document conforms to a particular form. The conformance engine 116 thus searches in parallel for all identified points of interest that may be in the document as the document is processed. In one embodiment, the conformance engine 116 maintains a data structure, embodied as a conformance table, for identifying particular XML document structures that have been defined by, e.g., a user of the system 100, as a point of interest. In one embodiment, the conformance table is a hash table. In one embodiment, the structure of each point of interest is stored in the hash table according to its digest value. In addition, in order to facilitate processing of the structure of the document in a top down fashion as each level of structure is encountered, each structure above the point of interest in the hierarchy of the document's structure is also stored in the conformance table. For example, returning to the example in Table 1, the structure of a particular example document can be represented as a string:
  • “<doc><e1><e5></e1><e2><e3#attr1><e4#attr2></doc>.”
  • If the “e5” element represents a point of interest, then hash values for each of the structures that are above “e5” in the hierarchical document structure, i.e., its “parent” structures, of “<doc>,” and “<doc><e1>” along with the structure of the point of interest, “<doc><e1><e5>” are stored in the table along with corresponding data. In one embodiment, the corresponding data for parent structures “<doc>” and “<doc><e1>” may include a “further processing” token. The corresponding data for the actual point of interest structure, “<doc><e1><e5>,” may include a particular token identifying the point of interest, e.g., a numeric code that, for example, indexes a table containing other data relating to a defined group of points of interest. In one embodiment, the corresponding data includes a pointer to a data structure containing further information about the point of interest. In another embodiment, the corresponding data may include a pointer to instructions that are executed upon identifying the point of interest.
  • The method 170 of generating the entries for a particular point of interest in the conformance table begins at a block 172 in which the conformance engine 116 receives a nested structure identifying a point of interest; For convenience of description, the levels of nested structure may be referred to by a number from 1 to N, with the level 1 being associated with the top most level of the structure and level N being associated with the most deeply nested level of structure. For example, using the example document of Table 1 and the example point of interest at “<doc><c1><e5>”, the “<doc> level may be identified as level 1, the “<e1>” entity as level 2 and the “<e5>” entity as level 3, with N=3.
  • Next at a block 174, the conformance engine 116 determines a digest value for each level of the structure. In one embodiment, the conformance engine 116 calculates a hash value for the string indicative of each level of structure. For example, a hash value may be calculated for “<doc><e1><e5>” at level N=3, the “<doc><e1>” at level 2 and “<doc>” at level 1. In one embodiment, the hash value is calculated using a cryptographic hash function such as SHA-1.
  • Proceeding to a block 176, the conformance engine 116 identifies the digest values for each of the structure levels, except for the full structure, N, with a “further processing” indicator or token. In one embodiment, the conformance engine 116 identifies the digest values with the structure levels by storing the further processing token in a hash table using the digest value as the hash key. For example, continuing with the example of Table 1, the hash table may include entries associating the structure strings “<doc>” and “<doc><e>” with the “further processing” token.
  • Next at a block 178, the conformance engine 116 determines the digest value of the full structure of the point of interest, e.g., structure level N. with data for processing the point of interest. In one embodiment, the conformance engine 116 stores the data in a hash table using the digest value of the structure string as the hash key. In one embodiment, the data for processing the point of interest includes data identifying the point of interest, such as a token or numeric reference indicator associated with the point of interest. In another embodiment, the conformance engine stores in the conformance table one or more pointers to data associated with the point of interest. In one embodiment, the pointers may include a pointer to executable instructions for processing the point of interest. For example, the conformance engine 116 calculates the hash key for the string “<doc><e1><e5>” and stores a pointer in the hash table to data obtained in the processing of the exemplary document.
  • FIG. 4 is a flowchart illustrating an exemplary method 180 of identifying points of interest, such as defined by the method 170, in a XML document that is being processed. Beginning at a block 182, the conformance engine 116 receives a portion of the document structure, e.g., the top level structure in an XML document. The conformance engine 116 determines an isomorphic digest value indicative of the portion of the document structure. In one embodiment, the digest value is a calculated using a hash function, e.g., a cryptographic hash such as SHA-1. For example, after receiving the “<doc>” top-level element of a document, the conformance engine 116 calculates a hash value for the structure string “<doc>” associated with this substructure. Next at block 184, the conformance engine 116 determines whether the hash key for the current portion of the structure has been stored. Continuing with the example from Table 1, as discussed with reference to FIG. 3, the conformance engine 116 retrieves a “further processing” token from the hash table for the hash key of the string “<doc>”. If the conformance engine 116 identifies any data, e.g., finds the data in the hash table, with the digest value of the current portion of the structure, the method 180 proceeds to a block 186. If, in the block 184, the conformance engine 116 fails to identifies any data, e.g., the digest value is not in the hash table, the method 180 proceeds to an end state and the conformance engine finishes processing of the portion of the structure.
  • Moving to the block 186, the conformance engine 116 determines whether the data identified with the digest value denotes further processing, for example, whether the data includes the “further processing” token. If further processing is indicated, the method 180 proceeds to a block 188. If no further processing is indicated, the method 180 proceeds to a block 190. Returning to the block 188, the conformance engine 116 receives data regarding further structure of the document, e.g., the next deeper level of nested structure (“<doc><e1>” in the example of Table 1). In one embodiment, the conformance engine 116 receives one or more tokens until the next level of structure of the current XML document is defined. Next, the method 180 proceeds back to the block 182 to process this next level of structure.
  • Returning to the block 190, as no further processing is indicated, the conformance engine 116 returns data indicative of the located point of interest in the document. In one embodiment, the data includes a token associated with the point of interest in the document. The conformance engine 116 outputs the token indicating the presence of the particular point of interest to the XML processing module 104. In another embodiment, the data includes a pointer to executable instructions for processing the point of interest. In one embodiment, the conformance engine 116 executes these instructions. In another embodiment, the conformance engine 116 provides the pointer to the executable instruction to the XML processing module 104 for execution.
  • Generally, it is possible for XML documents which are equivalent for the purposes of many applications to differ in physical representation. For example, such XML documents may differ in their entity structure, attribute ordering, and character encoding. W3C canonicalization (C14N) of XML includes generating a form for an XML document in which certain differences in representation have been removed, for example, converting empty elements to start-end tag pairs, normalizing whitespace outside of document elements and within start and end tags, setting attribute value delimiters to quotation marks (double quotes), adding default attributes to each element, and imposing lexicographic order on the namespace declarations and attributes of each element within the output XML document. The content of two or more documents in canonical XML form can be more easily compared to each other than can documents not in canonical form in order to determine when such documents include equivalent content. Because such documents do not include all possible syntactic constructions in XML, such documents can also be easier to process. One canonical XML format is defined by the World Wide Web Consortium, e.g., “Canonical XML, Version 1.0 (Mar. 15, 2001) available at www.w3c.org. Methods for fully performing C14N processing may be performed in hardware using an ASIC or a gate array. Such a hardware solution may not be cost effective due to the complexity of full C14N processing. However, by performing only selected portions of the C14N processing in hardware logic, C14N processing can be substantially accelerated.
  • FIG. 5 is a flowchart illustrating an exemplary method 200 of canonicalization processing of an XML document by, for example, the canonicalization module (C14N module) 118. In operation, the C14N module 118 receives each token in the XML document from the tokenizer 110 and processes the token according to the method 200. hi one embodiment, the C14N module 118 includes a processor programmed to perform at least a portion of the method 200. In one embodiment, the C14N module includes hardware logic configured to perform at least a portion of the method 200.
  • The method 200 begins at a block 202 in which the C14N module 118 identifies, based on one or more recent tokens, that the document is not in C14N form. Moving to a block 204, the C14N module 118 determines whether the non-C14N form can be corrected by one of a set of simple transformations. Such simple transformations include extra whitespace in the document. In one embodiment, the simple transformations include transformations of the document that can be performed efficiently by hardware logic such as in a PGA. If the transformation is a simple transformation, the method 180 proceeds to block 206 in which the C14N module 118 performs the simple transformation. Such simple transformations may include discarding extra whitespace (white space in excess of that defined for canonical form) in the document or encoding special characters. If the transformation is not a simple transformation, the method 180 proceeds to a block 208. At the block 208, the C14N module outputs a token noting the presence, location, and other details of the non-canonical form. For example, transformations such as changing the order of elements to be in canonical lexicographic ordering may be performed in software after the entire document is processed. In one embodiment, the C14N module 118 includes software for performing such non-simple transformations. In one embodiment, the C14N module 118 performs only the simple transformations, in hardware logic, during the initial speculative processing of the document. In one such embodiment, the C14N module 118 processes the outputted tokens to more fully place the document in C14N form after the speculative processing phase.
  • The system 100 may speculatively perform any number of XML processing functions depending on the amount of system resources that are available and the particular application. One such function may include making type inferences using the type inference module 120. In one embodiment, the type inference module 120 evaluates each attribute of each element in an XML document and returns a list of possible types for each token. For example, for an attribute value containing “1” the possible types may include boolean (with a value corresponding to “true”) and integer (with a value corresponding to the number 1). In one embodiment, this processing is performed speculatively, e.g., before the need for such data is identified for a particular document, and in hardware logic. Later processing of the XML document can thus be accelerated by having attribute data at least partially processed. For example, because the data of each attribute is processed for each possible type, another component of the system 100 can quickly and efficiently bind the values to a strongly typed (e.g., C or C++) data structure.
  • Another such function that may be speculatively processed is XML namespace processing. In one embodiment, the namespace resolution module 124 performs namespace resolution of names in the XML document speculatively, e.g., before the need for such data is identified for a particular document, and in hardware logic, so as to reduce the overall time to process each document.
  • FIG. 6 is a block diagram illustrating one embodiment of the system 100. The exemplary system 100 includes a processor 302 operably connected to a network interface 304 and a memory 306. In the exemplary system 100, the processor 302 is also connected to a content processor 310. In one embodiment, the content processor 310 includes a processor 312. In one embodiment, the content processor 310 includes a logic circuit 314. The content processor 310 may also include a memory 316. In one embodiment, the content processor 310 is embodied as an ASIC or a PGA.
  • In view of the above, one will appreciate that embodiments of the invention overcome many of the longstanding problems in the art by simplifying XML processing so that such processing can be further accelerated using hardware. In particular, numerous XML processing functions can be performed in parallel in hardware in advance so that data from these functions is nearly instantly available to later processing functions. Overall XML processing system throughput and latency can thus be improved.
  • It is to be recognized that each of the modules described above may include various sub-routines, procedures, definitional statements and macros. Each of the modules may be separately compiled and linked into a single executable program. The description of each of the modules is used for convenience to describe the functionality of one embodiment of a system. Thus, the processes that are performed by each of the modules may be redistributed to one of the other modules, combined together in a single module, or made available in, for example, a shareable dynamic link library. In some embodiments, the modules may be executed concurrently or in parallel as distinct threads or processes. The modules may be produced using any computer language or environment, including general-purpose languages such as C, Java, C++, or FORTRAN. Moreover, the functions described with respect to the modules may be performed, in all or in part, by either the general purpose processor 302 or the content processor 310 of FIG. 6.
  • While the above detailed description has shown, described, and pointed out novel features of the invention as applied to various embodiments, it will be understood that various omissions, substitutions, and changes in the form and details of the device or process illustrated may be made by those skilled in the art without departing from the spirit of the invention. As will be recognized, the present invention may be embodied within a form that does not provide all of the features and benefits set forth herein, as some features may be used or practiced separately from others. The scope of the invention is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (20)

1-18. (canceled)
19. A method of searching in structured documents, the method comprising:
storing a plurality of isomorphic digest values in a data structure that associates each of the plurality of isomorphic digest values with data indicative of a respective portion of a hierarchical structure;
determining an isomorphic digest indicative of an XML document portion with an associated hierarchical structure;
matching said isomorphic digest value of the XML document portion with a stored one of the plurality of isomorphic digest values; and
providing the data indicative of the respective portion of the hierarchical structure associated with the matched and stored isomorphic digest value.
20. The method of claim 19, wherein determining said isomorphic digest comprises calculating a hash of a string indicative of said hierarchical structure.
21. The method of claim 19, wherein the step of storing the plurality of isomorphic digest values in the data structure comprises storing at least one isomorphic digest value in the data structure for each level of the hierarchical structure.
22. The method of claim 19, further comprising processing the XML document using the provided data.
23. The method of claim 19, wherein the data indicative of the respective portion of the hierarchical structure comprises a token indicative of the hierarchical structure.
24. The method of claim 23, further comprising based on the token indicative of the hierarchical structure further processing of the XML document.
25-33. (canceled)
34. A machine-readable storage medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method for searching in structured documents, comprising the steps of:
storing a plurality of isomorphic digest values in a data structure that associates each of the plurality of isomorphic digest values with data indicative of a respective portion of a hierarchical structure;
determining an isomorphic digest indicative of an XML document portion with an associated hierarchical structure;
matching said isomorphic digest value of the XML document portion with a stored one of the plurality of isomorphic digest values; and
providing the-data indicative of the respective portion of the hierarchical structure associated with the matched and stored isomorphic digest value.
35. The storage medium of claim 34, wherein determining said isomorphic digest comprises calculating a hash of a string indicative of said hierarchical structure.
36. The storage medium of claim 34, wherein the step of storing the plurality of isomorphic digest values in the-data structure comprises storing at least one isomorphic digest value in the data structure for each level of the hierarchical structure.
37. The storage medium of claim 34, further comprising processing the XML document using the provided data.
38. The storage medium of claim 34, wherein the data indicative of the respective portion of the hierarchical structure comprises a token indicative of the hierarchical structure.
39. The storage medium of claim 38, further comprising, based on the token indicative of the hierarchical structure, further processing of the XML document.
40. Apparatus for searching in structured documents, comprising:
a database having a plurality of isomorphic digest values in a data structure, each of the plurality of isomorphic digest values associated with data indicative of a respective portion of a hierarchical structure;
a processor configured to
i) determine an isomorphic digest indicative of an XML document portion with an associated hierarchical structure;
ii) match said isomorphic digest value of the XML document portion with a stored one of the plurality of isomorphic digest values; and
iii) provide, in concert with the database, the-data indicative of the respective portion of the hierarchical structure associated with the matched and stored isomorphic digest value.
41. The apparatus of claim 40, wherein said isomorphic digest comprises a hash of a string indicative of said hierarchical structure.
42. The apparatus of claim 40, wherein the step of storing the plurality of isomorphic digest values in the-data structure comprises storing at least one isomorphic digest value in the data structure for each level of the hierarchical structure.
43. The apparatus of claim 40, further comprising processing the XML document using the provided data.
44. The apparatus of claim 40, wherein the data indicative of the respective portion of the hierarchical structure comprises a token indicative of the hierarchical structure.
45. The apparatus of claim 44, further comprising, based on the token indicative of the hierarchical structure, further processing of the XML document.
US12/535,902 2005-06-02 2009-08-05 System and Method of Accelerating Document Processing Abandoned US20090299983A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/535,902 US20090299983A1 (en) 2005-06-02 2009-08-05 System and Method of Accelerating Document Processing

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/145,262 US7703006B2 (en) 2005-06-02 2005-06-02 System and method of accelerating document processing
US12/535,902 US20090299983A1 (en) 2005-06-02 2009-08-05 System and Method of Accelerating Document Processing

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/145,262 Division US7703006B2 (en) 2005-06-02 2005-06-02 System and method of accelerating document processing

Publications (1)

Publication Number Publication Date
US20090299983A1 true US20090299983A1 (en) 2009-12-03

Family

ID=37495536

Family Applications (3)

Application Number Title Priority Date Filing Date
US11/145,262 Expired - Fee Related US7703006B2 (en) 2005-06-02 2005-06-02 System and method of accelerating document processing
US12/535,902 Abandoned US20090299983A1 (en) 2005-06-02 2009-08-05 System and Method of Accelerating Document Processing
US12/535,933 Abandoned US20100162102A1 (en) 2005-06-02 2009-08-05 System and Method of Accelerating Document Processing

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/145,262 Expired - Fee Related US7703006B2 (en) 2005-06-02 2005-06-02 System and method of accelerating document processing

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/535,933 Abandoned US20100162102A1 (en) 2005-06-02 2009-08-05 System and Method of Accelerating Document Processing

Country Status (1)

Country Link
US (3) US7703006B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2637482C2 (en) * 2015-12-07 2017-12-04 федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации Method of multi-level control of electronic documents integrity

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156149B2 (en) * 2007-07-24 2012-04-10 Microsoft Corporation Composite nested streams
US20090037876A1 (en) * 2007-07-31 2009-02-05 Microsoft Corporation Visible white space in program code
US20090094263A1 (en) * 2007-10-04 2009-04-09 Microsoft Corporation Enhanced utilization of network bandwidth for transmission of structured data
US7676501B2 (en) 2008-03-22 2010-03-09 Wilson Kelce S Document integrity verification
US7904450B2 (en) 2008-04-25 2011-03-08 Wilson Kelce S Public electronic document dating list
US9110875B2 (en) * 2010-02-11 2015-08-18 International Business Machines Corporation XML post-processing hardware acceleration
US8413047B2 (en) * 2011-05-12 2013-04-02 Qualcomm Incorporated Concurrent parsing and processing of HTML and JAVASCRIPT®
US10223550B2 (en) * 2013-11-06 2019-03-05 Vmware, Inc. Generating canonical representations of JSON documents
CN108494875A (en) * 2018-04-10 2018-09-04 网宿科技股份有限公司 A kind of method and apparatus of feedback resources file
US11444776B2 (en) * 2019-05-01 2022-09-13 Kelce S. Wilson Blockchain with daisy chained records, document corral, quarantine, message timestamping, and self-addressing
US11068595B1 (en) * 2019-11-04 2021-07-20 Trend Micro Incorporated Generation of file digests for cybersecurity applications
US11863678B2 (en) 2020-08-26 2024-01-02 Tenet 3, LLC Rendering blockchain operations resistant to advanced persistent threats (APTs)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324555B1 (en) * 1998-08-31 2001-11-27 Adobe Systems Incorporated Comparing contents of electronic documents
US20020184264A1 (en) * 2001-05-31 2002-12-05 Daniel Berg Method and apparatus for synchronizing an XML document with its object model
US20050015600A1 (en) * 2003-07-15 2005-01-20 Kunihiko Miyazaki Electronic document authenticity assurance method and electronic document disclosure system
US20050273772A1 (en) * 1999-12-21 2005-12-08 Nicholas Matsakis Method and apparatus of streaming data transformation using code generator and translator
US7284192B2 (en) * 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857212A (en) * 1995-07-06 1999-01-05 Sun Microsystems, Inc. System and method for horizontal alignment of tokens in a structural representation program editor
FR2749751B1 (en) * 1996-06-12 1998-11-27 Micro Mega Int Mfg Sa CONTRA-ANGLE HANDPIECE ASSEMBLY WITH A STEPPING MOTOR
US6108676A (en) * 1996-10-28 2000-08-22 Fuji Xerox Co., Ltd. Document processing apparatus, document type determining method, and hierarchical regular expression determining method
US5897637A (en) * 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6542888B2 (en) * 1997-11-26 2003-04-01 International Business Machines Corporation Content filtering for electronic documents generated in multiple foreign languages
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6470333B1 (en) * 1998-07-24 2002-10-22 Jarg Corporation Knowledge extraction system and method
US6289347B1 (en) * 1998-12-09 2001-09-11 Bull Hn Information Systems Inc. Data processing system utilizing web forms
US6538673B1 (en) * 1999-08-23 2003-03-25 Divine Technology Ventures Method for extracting digests, reformatting, and automatic monitoring of structured online documents based on visual programming of document tree navigation and transformation
US6734886B1 (en) * 1999-12-21 2004-05-11 Personalpath Systems, Inc. Method of customizing a browsing experience on a world-wide-web site
US6772413B2 (en) * 1999-12-21 2004-08-03 Datapower Technology, Inc. Method and apparatus of data exchange using runtime code generator and translator
US6883137B1 (en) * 2000-04-17 2005-04-19 International Business Machines Corporation System and method for schema-driven compression of extensible mark-up language (XML) documents
US7080314B1 (en) * 2000-06-16 2006-07-18 Lucent Technologies Inc. Document descriptor extraction method
US6751628B2 (en) * 2001-01-11 2004-06-15 Dolphin Search Process and system for sparse vector and matrix representation of document indexing and retrieval
US20050086584A1 (en) * 2001-07-09 2005-04-21 Microsoft Corporation XSL transform
GB2379041B (en) * 2001-08-22 2005-03-23 Hewlett Packard Co A method of performing a data processing operation
US6687006B2 (en) * 2001-09-28 2004-02-03 Agilent Technologies, Inc. Heterodyne based optical spectrum analysis with reduced data acquisition requirement
US20040186817A1 (en) * 2001-10-31 2004-09-23 Thames Joseph M. Computer-based structures and methods for generating, maintaining, and modifying a source document and related documentation
US20040205617A1 (en) * 2001-11-06 2004-10-14 Ncr Corporation Custom report generation using XML and XSL
JP2003150586A (en) * 2001-11-12 2003-05-23 Ntt Docomo Inc Document converting system, document converting method and computer-readable recording medium with document converting program recorded thereon
GB2383662B (en) * 2001-11-26 2005-05-11 Evolution Consulting Group Plc Creating XML documents
JP4664572B2 (en) * 2001-11-27 2011-04-06 富士通株式会社 Document distribution method and document management method
US20030145278A1 (en) * 2002-01-22 2003-07-31 Nielsen Andrew S. Method and system for comparing structured documents
WO2003067428A2 (en) * 2002-02-04 2003-08-14 Mobileaware Technologies Limited Document transformation
JP4039484B2 (en) 2002-02-28 2008-01-30 インターナショナル・ビジネス・マシーンズ・コーポレーション XPath evaluation method, XML document processing system and program using the same
US8032828B2 (en) * 2002-03-04 2011-10-04 Hewlett-Packard Development Company, L.P. Method and system of document transformation between a source extensible markup language (XML) schema and a target XML schema
JP4366040B2 (en) * 2002-03-07 2009-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーション Network service system, server and program
AU2003245506A1 (en) * 2002-06-13 2003-12-31 Mark Logic Corporation Parent-child query indexing for xml databases
US7437664B2 (en) * 2002-06-18 2008-10-14 Microsoft Corporation Comparing hierarchically-structured documents
US20040268233A1 (en) * 2002-06-27 2004-12-30 Oki Electric Industry Co., Ltd. Information processing apparatus and information processing method
US20040010752A1 (en) 2002-07-09 2004-01-15 Lucent Technologies Inc. System and method for filtering XML documents with XPath expressions
US7069504B2 (en) * 2002-09-19 2006-06-27 International Business Machines Corporation Conversion processing for XML to XML document transformation
JP4388929B2 (en) * 2002-12-27 2009-12-24 富士通株式会社 Structured document structure conversion apparatus, structure conversion method, and recording medium
AU2003277247A1 (en) * 2003-02-28 2004-09-28 Lockheed Martin Corporation Hardware accelerator state table compiler
US20040177325A1 (en) * 2003-03-07 2004-09-09 Keane Robert S. Edit location indicator
US20040194016A1 (en) * 2003-03-28 2004-09-30 International Business Machines Corporation Dynamic data migration for structured markup language schema changes
US7093231B2 (en) * 2003-05-06 2006-08-15 David H. Alderson Grammer for regular expressions
US7257257B2 (en) * 2003-08-19 2007-08-14 Intel Corporation Method and apparatus for differential, bandwidth-efficient and storage-efficient backups
JP4460251B2 (en) * 2003-09-19 2010-05-12 株式会社エヌ・ティ・ティ・ドコモ Structured document signature apparatus, structured document adaptation apparatus, and structured document verification apparatus.
US20050067482A1 (en) * 2003-09-26 2005-03-31 Wu Daniel Huong-Yu System and method for data capture and management
US20050154976A1 (en) * 2003-09-30 2005-07-14 Nelson Brent D. Method and system for automated metamodel system software code standardization
US20050154760A1 (en) * 2004-01-12 2005-07-14 International Business Machines Corporation Capturing portions of an electronic document
US7603654B2 (en) * 2004-03-01 2009-10-13 Microsoft Corporation Determining XML schema type equivalence
US20050273450A1 (en) 2004-05-21 2005-12-08 Mcmillen Robert J Regular expression acceleration engine and processing model
US20050262440A1 (en) * 2004-05-21 2005-11-24 Microsoft Corporation Localization of XML via transformations
US7437558B2 (en) * 2004-06-01 2008-10-14 Cisco Technology, Inc. Method and system for verifying identification of an electronic mail message
DE602004007903T2 (en) * 2004-06-22 2008-04-17 Sap Ag Data processing device of online transaction data
US7594277B2 (en) * 2004-06-30 2009-09-22 Microsoft Corporation Method and system for detecting when an outgoing communication contains certain content
US7512592B2 (en) 2004-07-02 2009-03-31 Tarari, Inc. System and method of XML query processing
US7627589B2 (en) * 2004-08-10 2009-12-01 Palo Alto Research Center Incorporated High performance XML storage retrieval system and method
JP2006157399A (en) * 2004-11-29 2006-06-15 Hitachi Ltd Method for supporting exchange of electronic document with electronic signature, and information processing apparatus
JP4234698B2 (en) * 2005-06-20 2009-03-04 富士通株式会社 Structured document processing system
US7716577B2 (en) * 2005-11-14 2010-05-11 Oracle America, Inc. Method and apparatus for hardware XML acceleration
US20070143324A1 (en) * 2005-12-16 2007-06-21 Sap Ag Graphical user interface icon for documents with status indicator
US20080077613A1 (en) * 2006-09-27 2008-03-27 Ffd, Inc. User Interface Displaying Hierarchical Data on a Contextual Tree Structure

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324555B1 (en) * 1998-08-31 2001-11-27 Adobe Systems Incorporated Comparing contents of electronic documents
US20050273772A1 (en) * 1999-12-21 2005-12-08 Nicholas Matsakis Method and apparatus of streaming data transformation using code generator and translator
US20020184264A1 (en) * 2001-05-31 2002-12-05 Daniel Berg Method and apparatus for synchronizing an XML document with its object model
US20050015600A1 (en) * 2003-07-15 2005-01-20 Kunihiko Miyazaki Electronic document authenticity assurance method and electronic document disclosure system
US7284192B2 (en) * 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Clark et al., XML and Java: Bridging Application Data Structure and XML, 6-7-2002, pages 1-5 *
Wu et al., A Hybrid Parallel Processing for XML Parsing and Schema Validation, 2008, 1-19. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2637482C2 (en) * 2015-12-07 2017-12-04 федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации Method of multi-level control of electronic documents integrity

Also Published As

Publication number Publication date
US20100162102A1 (en) 2010-06-24
US20060277459A1 (en) 2006-12-07
US7703006B2 (en) 2010-04-20

Similar Documents

Publication Publication Date Title
US7703006B2 (en) System and method of accelerating document processing
US7917515B1 (en) System and method of accelerating processing of streaming data
US7409400B2 (en) Applications of an appliance in a data center
US9842090B2 (en) Efficient streaming evaluation of XPaths on binary-encoded XML schema-based documents
US7590644B2 (en) Method and apparatus of streaming data transformation using code generator and translator
US6487566B1 (en) Transforming documents using pattern matching and a replacement language
US7366735B2 (en) Efficient extraction of XML content stored in a LOB
US8136095B2 (en) Relations in fuzzing data
US20030177341A1 (en) Schema, syntactic analysis method and method of generating a bit stream based on a schema
US20030172196A1 (en) Application program interface for network software platform
KR20080066943A (en) Partial xml validation
Takase et al. An adaptive, fast, and safe XML parser based on byte sequences memorization
US9367642B2 (en) Flexible storage of XML collections within an object-relational database
US20080033967A1 (en) Semantic aware processing of XML documents
US7861157B1 (en) System and method of processing streaming XML data
US8407209B2 (en) Utilizing path IDs for name and namespace searches
JP4866844B2 (en) Efficient extraction of XML content stored in a LOB
Reschke et al. Web distributed authoring and versioning (webdav) search
Maruyama et al. Digest values for DOM (DOMHASH)
Turau A caching system for web content generated from xml sources using xslt
Zhang Efficient XML stream processing and searching
Li et al. Structural Join in the'XSQS'Native XML Database.
ADIL et al. Making Artifacts Reliable Using Nanopublications
Suzumura et al. Optimizing differential XML processing by leveraging schema and statistics
Maruyama et al. RFC2803: Digest Values for DOM (DOMHASH)

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION