WO2005043413A1 - System for data format conversion for use in data centers - Google Patents
System for data format conversion for use in data centers Download PDFInfo
- Publication number
- WO2005043413A1 WO2005043413A1 PCT/US2004/035166 US2004035166W WO2005043413A1 WO 2005043413 A1 WO2005043413 A1 WO 2005043413A1 US 2004035166 W US2004035166 W US 2004035166W WO 2005043413 A1 WO2005043413 A1 WO 2005043413A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- appliance
- format
- recited
- markup language
- request
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Definitions
- This invention is related to the field of processing and transforming structured documents, such as extensible markup language (XML), standardized generalized markup language (SGML), hypertext markup language (HTML), and unstructured data and documents in databases and/or filesystems in a data center.
- structured documents such as extensible markup language (XML), standardized generalized markup language (SGML), hypertext markup language (HTML), and unstructured data and documents in databases and/or filesystems in a data center.
- a data center may comprise various servers providing application service to the user, including access to various databases that may be maintained in the data center as well as other application services such as content management services, filesystem services, etc.
- various applications may generate data in different formats and/or in a different format than that desired by the user.
- different users may desire different formats for their data. Accordingly, application servers, web servers, and/or the user's computer system may often be tasked with converting between various formats.
- the conversion software consumes computing resources, reducing the effectiveness of the servers at the tasks for which they were originally designed. Additionally, the latency experienced by the user when using the services of the data center may be increased.
- an appliance and method for use with a computer system executing a database management system DBMS.
- the appliance is configured to generate a request.
- the computer system is coupled to the appliance to receive the request, and the DBMS is configured to process the request in at least one of the one or more databases.
- the computer system is configured to return a result of the request to the appliance in a first format.
- the appliance is configured to transform the result to a second format for return to a requestor corresponding to the request.
- An apparatus comprising the appliance and the computer system is also contemplated.
- the appliance may be used with a computer system configured to execute other backend applications such as content management systems, filesystems, etc.
- an appliance and method may be used with a plurality of servers.
- the an appliance coupled to the plurality of servers, and may receive first output data from a first server of the plurality of servers.
- the first output is to be supplied as first input data to a second server of the plurality of servers, wherein the first output data is in a first format different than-a second format used by the second server for the first input data.
- the appliance is configured to transform the first output data to a first markup language format and to transform the first markup language format to the second format.
- An apparatus comprising the appliance and a plurality of servers is also contemplated.
- the appliance may implement other functions in a datacenter or other computing facility.
- the appliance may implement a rendering engine, an XML router, a firewall (e.g. virus detection), etc.
- Fig. 1 is a block diagram of one embodiment of a appliance.
- Fig. 2 is a block diagram of one embodiment of document processor shown in Fig. 1.
- Fig. 3 is a block diagram of one embodiment of a data center including one or more appliances.
- Fig. 4 is a block diagram of one embodiment of the appliance being used as a database proxy.
- Fig. 5 is a diagram illustrating one embodiment of a default output format employed by one embodiment of the appliance shown in Fig. 4.
- Fig. 6 is a diagram illustrating a second embodiment of a default output format employed by one embodiment of the appliance shown in Fig. 4.
- Fig. 1 is a block diagram of one embodiment of a appliance.
- Fig. 2 is a block diagram of one embodiment of document processor shown in Fig. 1.
- Fig. 3 is a block diagram of one embodiment of a data center including one or more appliances.
- Fig. 4 is a block diagram of one embodiment of the appliance being used as a database proxy.
- FIG. 7 is a block diagram illustrating a second embodiment of the appliance being used as a database proxy.
- Fig. 8 is a block diagram illustrating one embodiment of a appliance being used as a rendering engine.
- Fig. 9 is a block diagram illustrating one embodiment of the appliance being used as a data integration switch.
- Fig. 10 is a block diagram illustrating one embodiment of the transformation of source data to target data through extensible markup language (XML) constructs.
- Fig. 11 is a block diagram illustrating portions of one embodiment of the appliance operating on source data to generate target data.
- Fig. 12 is a block diagram of one embodiment of the appliance being used as an XML router.
- Fig. 13 is a flowchart illustrating operation of one embodiment of the appliance as a virus checker.
- the appliance 10 may include a network interface circuit 12, one or more processors such as processors 14A and optionally 14B, a document processor 16, and a memory 18.
- the network interface circuit 12 is coupled, via one or more network connections, to a network or networks.
- Various computer systems may also be coupled to the network or networks.
- the network interface circuit 12 is also coupled to the processors 14A-14B.
- the processors are coupled to the memory 18 and to the document processor 16, which is also coupled to the memory 18.
- the memory 18 stores a stylesheet compiler 20, a schema compiler 22, one or more symbol tables 24, one or more parse-time expression trees 26, an instruction table 30, a whitespace table 32, document type definition (DTD) tables 34, an expression list table 36, a template list table 38, various document processor data structures 39, and optionally other software 28.
- the appliance 10 may be configured to provide one or more services for other computer systems that may be included in a data center. Various examples given below may include a database proxy, a rendering engine, a data integration switch, a markup language router, and a firewall, although these examples are not intended to be exhaustive.
- the appliance 10 may include hardware/software designed to transform input documents to output documents, in some cases according to a transformation specified by a stylesheet.
- the various services handled by the appliance 10 may, in some cases, use the transformation functionality to accomplish the desired services.
- the appliance 10 may be used to offload services from servers in a data center, permitting the servers to dedicate more resources to the services that the servers were designed to provide.
- the term "appliance" may refer to any combination of hardware and optionally software that is sold as a unit for installation on a network.
- the appliance may typically be designed to be installed on the network with relatively little, if any, configuration (as compared to a general purpose computer system such as a server or personal computer, for example), and may typically be designed to operate with relatively little, if any, support.
- the software is typically preinstalled in the appliance (although software upgrades may be downloaded to the appliance or additional software may be installed onto the appliance, in some embodiments, via the network).
- An administrator may access the appliance, in some embodiments, via the network (e.g. a web browser interface may be provided).
- the term "document" refers to any content that has a corresponding defined structure that can be used to interpret the content.
- the content may be highly structured (such as an XML document, HTML document, pdf document, word processing document, database, etc.) or may be as simple as a plain text document (whose structure may be, e.g., a stream of characters) or data (whose structure may be, e.g., a set of data items arranged in a particular order).
- Examples of various applications of the appliance 10 described below may provide document content that comprises a request (e.g. to access a database), data, or other types of documents.
- the appliance 10 may receive, via the network connections, stylesheets to be applied to documents, schema to be applied to documents, and/or the documents themselves (with a request to apply a stylesheet/schema to the document).
- the appliance 10 may apply the stylesheet to the document and generate a transformed document to be transmitted through the network to the requestor (or to another destination specified by the requestor).
- the appliance 10 may also receive a request to parse a document (e.g. into a defined format such as simple application programming interface (API) for XML (SAX) or document object model (DOM)).
- API application programming interface
- SAX simple application programming interface
- DOM document object model
- the appliance 10 may validate the document according to the schema or DTD and generate a success message or a fail message (with an indication of the failure) to the requestor.
- the appliance 10 may receive a request, and may include other software 28 to interpret the request.
- the appliance 10 may generate communications to other network devices (e.g. servers) based on the request, and may also use the transformation functionality to aid in handling the request.
- the transformation functionality may be optimized for XML documents and the corresponding XML stylesheet language for transformation (XSLT). Additional details related to XML and XSLT stylesheets are given below.
- XSLT is based on the XPath language for expressions.
- XQuery an additional language being developed that is based on XPath, may also be used in other embodiments.
- other embodiments may be based on any markup language and corresponding expression languages.
- a "markup language" is any language that may be used to define the structure of a document's content.
- the markup may generally include various tags that identify content and may provide information about the nature of the content.
- XML permits element tags to be defined, which may be used to describe the structure of the content.
- elements may include various attributes which further describe the element or provide additional information about the content.
- An XML document has a hierarchical tree structure, where the root of the tree identifies the document as a whole and each other node in the document is a descendent of the root.
- Various elements, attributes, and document content form the nodes of the tree.
- the elements define the structure of the content that the elements contain. Each element has an element name, and the element delimits content using a start tag and an end tag that each include the element name.
- An element may have other elements as sub-elements, which may further define the structure of the content. Additionally, elements may include attributes (included in the start tag, following the element name), which are name/value pairs that provide further information about the element or the structure of the element content.
- XML documents may also include processing instructions that are to be passed to the application reading the XML document, comments, etc.
- a "node" of a document may include structural definition (e.g. elements and/or attributes in XML) and/or document content.
- a node may include elements, attributes, processing instructions, comments, and text.
- An XSLT stylesheet may be viewed as a set of templates. Each template may include: (i) an expression that selects nodes in the source document's tree structure; and (ii) a body that specifies a corresponding portion of the output document's structure to be instantiated for each matching node of the source document.
- Applying a stylesheet to a source document may comprise attempting to find a matching template for each node in the source document, and instantiating the body of the matching template in the output document's tree.
- the body of the template may include one or more of: (i) literal content to be instantiated in the output document; (ii) selection of content from the matching nodes to be copied into the output document; and (iii) statements that are to be evaluated, with the result of the statements being instantiated in the output document.
- the content to be instantiated and the statements to be evaluated may be referred to as "actions" to be performed on the nodes that match the template.
- the body of the template may include one or more "apply templates” statements, which include an expression selecting one or more nodes and causing the templates in the stylesheet to be applied to the selected nodes, thus effectively nesting the templates. If a match to the apply templates statement is found, the resulting template is instantiated within the instantiation of the template that includes the apply templates statement. Other statements in the body of the template may also include expressions to be matched against nodes (and the statements may be evaluated on the matching nodes). While XSLT stylesheets may be used in one example herein, generally a "stylesheet" may comprise any specification for transforming a source document to an output document. The source and output documents may be in the same language (e.g.
- stylesheets may be cascading stylesheets defined for HTML and/or XML Query.
- the expressions used in a stylesheet may generally comprise node identifiers and/or values of nodes, along with operators on the node identifiers to specify parent/child (or ancestor/descendant) relationships among the node identifiers and/or values. Expressions may also include predicates, which may be extra condition(s) for matching a node.
- a predicate is an expression that is evaluated with the associated node as the context node (defined below), where the result of the expression is either true (and the node may match the expression node) or false (and the node does not match the expression).
- an expression may be viewed as a tree of nodes to be matched against a document's tree.
- an expression may be evaluated in the context of a "context node” as well (that is, expressions may be relative to the context node, specifying node names in the expression as ancestors, descendents, parents, or children of the context node as well as relationships to other node names).
- a given document node may satisfy an expression if the given document node is selected via evaluation of the expression. That is, the expression node identifiers in the expression match the given document node's identifier or document node identifiers having the same relationship to the given document node as specified in the expression, and any values used in the expression are equal to corresponding values related to the given document node.
- a document node may also be referred to as a "matching node" for a given expression if the node satisfies the given expression. In some cases in the remainder of this discussion, it may be helpful for clarity to distinguish nodes in expression trees from nodes in a document.
- a node may be referred to as an "expression node” if the node is part of an expression tree, and a node may be referred to as a "document node” if the node is part of the document being processed.
- a node identifier may comprise a name (e.g. element name, attribute name, etc.) or may comprise an expression construct that identifies a node by type (e.g. a node test expression may match any node, or a text test expression may match any text node).
- a name may belong to a specific namespace. In such cases, the node identifier may be a name associated with a namespace.
- the namespace provides a method of qualifying element and attribute names by associating them with namespace names identified by a universal resource identifier (URI).
- URI universal resource identifier
- the node identifier may be the qualified name (the optional namespace prefix, followed by a colon, followed by the name).
- a name, as used herein (e.g. element name, attribute name, etc.) may include a qualified name.
- applying the stylesheets to documents may be performed in the following manner:
- the stylesheet compiler 20 may comprise software (i.e. a plurality of instructions) executed on one of the processors 14A-14B to compile the stylesheet into one or more data structures and code for use by the document processor 16.
- the document processor 16 may apply the data structures to the source document and generate the output document.
- the stylesheet compiler 20 may assign serial numbers to node identifiers so that expression evaluation may be performed by the document processor by comparing numbers, rather than node identifiers (which would involve character string comparisons).
- the stylesheet compiler 20 may store a mapping of node identifiers to serial numbers in the symbol tables 24. Additionally, the stylesheet compiler 20 may extract the expressions from the stylesheet and generate expression tree data structures to be used by the document processor for expression matching (e.g. the parse-time expression tree 26). Still further, the stylesheet compiler 20 may generate an instruction table 30 with instructions to be executed for each matching expression (and also instructions to be executed to evaluate run-time predicates, in one embodiment).
- the instructions in the instruction table when executed by the document processor 16, may result in performing the actions defined to be executed when the expression is matched.
- the instructions may comprise the actions to be performed (i.e. there may be a one-to-one correspondence between instructions and actions). In other embodiments, at least some actions may be realized by executing two or more instructions.
- the stylesheet compiler 20 may also generate whitespace tables 32 defining how various types of whitespace in the source document are to be treated (e.g. preserved, stripped, etc.), an expression list table 36 and a template list table 38.
- the schema compiler 22 may similarly comprise instructions executed on one of the processors 14A-14B.
- the schema compiler 22 may compile a schema or DTD to generate one or more symbol tables 24 (replacing node identifiers with serial numbers) as well as the DTD tables 34.
- a DTD or schema may comprise a definition of both the permissible document structure and the required document structure. An author of the document may thus describe, with a DTD and/or schema, the required and permitted structure of a valid document. In some cases, the DTD or schema may also include default values for attributes.
- the DTD/schema may include a variety of information: entity declarations that are used to replace entity references in the document, attributes of a given element that are required attributes for a valid document, attribute default values for attributes that may not be specified in a given element of the document, requirements for the structure of the document (e.g. a required minimum/maximum/specific number of a certain subelement, etc.), and a definition of the permissible structure of the document.
- the DTD tables 34 may include a table of the entity reference replacements, a table of the required attributes, a table of the attribute defaults, and a skeleton tree identifying the permissible structure (and required structure, if applicable).
- the document processor 16 may comprise hardware circuitry to parse the document and to match document nodes to expression nodes in the parse-time expression tree. That is, the hardware circuitry that parses the document and matches document nodes to expression nodes may perform these operations without executing any software instructions.
- the hardware may generate various data structures storing the parsed content and indications, for each expression, of the matching document nodes.
- the hardware may then execute the instructions from the instruction table 30 for a given expression on each matching document node of that given expression, generating results which are then combined to produce the output document. Additional details of one embodiment are provided below. As mentioned above, in the illustrated embodiment, the stylesheet compiler 20 and the schema compiler 22 are implemented in software and the document processor 16 is implemented in hardware.
- the critical factor in the performance of the appliance 10 may be the processing of the document when a transformation request is made and the document is provided. That is, stylesheets and/or schemas may, in many cases, change relatively infrequently as compared to the number of documents being processed. A given stylesheet may be applied to multiple documents (e.g. at least on the order of tens of documents) prior to the stylesheets being changed (to an updated stylesheet or to a different stylesheet altogether). A similar relationship may hold for schema and the documents to which they are to be applied. Accordingly, capturing the relatively invariant information from the stylesheets/schema (using software) into data structures that may be efficiently accessed by dedicated, custom hardware may provide a high performance solution.
- stylesheet/schema compilation in hardware may provide, in some embodiments, flexibility to implement different stylesheet/schema languages and/or to implement changes in the language specifications without having to change the custom hardware.
- XSLT, XPath, and XML schema may be still evolving, and new features may be added to these languages in the future.
- the compilers may be adapted to handle these new features.
- the stylesheet/schema to be used may be provided beforehand, and thus the time to compile the stylesheet/schema may be less critical.
- one or both of the stylesheet compiler 20 and the schema compiler 22 may be implemented in hardware, or a combination of hardware and software.
- the network interface circuit 12 may handle the low-level electrical and protocol details on the network connections, and may pass received packets to the processors 14A-14B for processing.
- Any type of network may be used.
- the network connections may be Gigabit Ethernet connections. More than one connection may be provided, as desired, to achieve a given level of bandwidth and/or to provide redundancy in the network connections.
- the processors 14A-14B may comprise any type of processor.
- the processors 14A-14B may be PowerPC network processors.
- the processors 14A-14B may implement other instruction set architectures such as ARM, Intel's IA-32, MIPS, etc.
- any interconnect may be used to couple the processors 14A-14B, the document processor 16, and the memory 18.
- the processors 14A-14B may be coupled to the document processor 16 separate from the connection of the processors 14A-14B and the document processor 16 to the memory 18.
- the processors 14A-14B may be coupled to the document processor 16 using one or more peripheral component interconnect express (PCI-X) buses.
- PCI-X peripheral component interconnect express
- a DTD, schema, or stylesheet may be embedded in a document (either directly or as a pointer to the schema or stylesheet). In such cases the DTD, schema, or stylesheet may be extracted from the document and processed as described for a separately-provided schema or stylesheet.
- the memory 18 may comprise any type of volatile or non-volatile memory.
- the memory 18 may include one or more of RAM (e.g. SDRAM, RDRAM, SRAM, etc.), non-volatile memory such as Flash memory or battery-backed RAM, magnetic or optical storage such as disk or CD-ROM, etc.
- the memory 18 may comprise multiple memories that are separately accessible (e.g. a partition or partitions accessible only to the processors 14A-14B and another partition or partitions accessible only to the document processor 16).
- Fig. 1 illustrates the stylesheet compiler 20, the schema compiler 22, and the other software 28 stored in the memory 18.
- the stylesheet compiler 20, the schema compiler 22, and/or the other software 28 may be encoded on any computer accessible medium.
- a computer accessible medium may include any media accessible by a computer during use to provide instructions and/or data to the computer.
- a computer accessible medium may include storage media such as magnetic or optical media, e.g., disk (fixed or removable), CD-ROM, or DVD-ROM, volatile or non-volatile memory media such as RAM (e.g. SDRAM, RDRAM, SRAM, etc.), ROM, Flash memory, etc., as well as media accessible via transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link.
- the computer accessible medium may be included in a separate computer system or systems which may execute the stylesheet compiler 20 and/or the schema compiler 22 to perform the compilation.
- the data structures/code resulting from the compilation may be communicated to the appliance 10 (e.g. through the network connection to the appliance 10).
- the description herein may include examples in which a stylesheet is applied to a document, other examples may include applying multiple stylesheets to a document (either concurrently or serially, as desired) and applying a stylesheet to multiple documents (either concurrently with context switching or serially, as desired).
- Fig. 2 a block diagram of one embodiment of the document processor 16 is shown.
- the document processor 16 includes a parser circuit 40, an expression processor 42, a transformation engine 44, an output generator 46, and a validator circuit 48.
- the parser circuit 40 is coupled to the expression processor 42 and to the output generator 46.
- the expression processor 42 is coupled to the transformation engine 44, which is coupled to the output generator 46.
- the validator 48 is coupled to the output generator 46.
- Units in Fig. 2 may be coupled to each other directly (e.g. using signal lines between the units), may be coupled through the memory 18 (e.g. a source unit may write information to be communicated to a destination unit to the memory 18, and the destination unit may read the information from the memory 18), or both.
- the parser circuit 40 may receive a document and parse the document, identifying events for the expression processor 42 and the validator circuit 48, and also generating data structures with the parsed content.
- the parsed content may be stored in data structures in memory 18 for the transformation engine 44.
- the parser circuit 40 may provide the output generator 46 with the parsed content to be output in SAX or DOM format.
- the parser circuit 40 may provide the output generator 46 with the parsed content through memory 18 as well.
- the parser circuit 40 may accesses the symbol tables 24, the DTD tables 34, and the whitespace tables 32 from the memory 18. The parser circuit 40 parses the document and generates events related to the detected document nodes.
- the parser circuit 40 converts the node identifiers in the document to the corresponding serial numbers in the symbol tables 24, and transmits the serial numbers as part of the events to the expression processor 42 (and the validator circuit 48). Additionally, the parser circuit 40 generates parsed content tables storing the parsed content of the document for the transformation engine 44.
- the expression processor 42 receives events from the parser circuit 40 (identifying document nodes parsed from the document), and compares document nodes identified by the parser circuit 40 against the parse-time expression tree 26. The expression processor 42 outputs lists of matching document nodes for each expression to the transformation engine 44.
- the transformation engine 44 receives the data structures of parsed content built by the parser circuit 40 and the lists of matching document nodes, and executes the corresponding instructions from the instruction table 30 to generate the results for the output document.
- the transformation engine 44 may also evaluate any run-time expressions and eliminate document nodes from the template and expression match lists that do not satisfy the run-time expressions.
- each instruction may be independent of the others, and thus execution may occur in any order.
- the output generator 46 may reassemble the results in order and may write the output document to the memory 18 (or may send the output document to the processors 14A-14B without passing through the memory 18).
- the processors 14A-14B may execute software to read the output document and transmit the output document to the requestor.
- the parser circuit 40 may receive the document inline, and the parser circuit 40 may transmit events to the expression processor 42 inline as well. That is, as the portions of the document are received and reassembled (e.g. by the processor 14A), the processor 14A passes the portion of the document to the parser circuit 40. The parser circuit 40 may thus begin parsing prior to the processor 14A receiving the entirety of the document. Similarly, the events are passed to the expression processor 42 as they are identified. On the other hand, the parsed content tables and template/expression match lists are passed through the memory 18 (indicated by the dotted oval over the communications to the transformation engine 44).
- the validator circuit 48 may also receive the events sent by the parser circuit 40 and may apply the schema/DTD (as represented by the skeleton tree and DTD tables 34), and may determine if the document is valid as indicated in the schema. If the document is valid, the validator circuit 48 may generate a success message to be transmitted to the output generator 46. If the document is not valid, the validator circuit 48 may generate a fail message (indicating the reason(s) for failure) and may transmit the fail message to the output generator 46. The output generator 46 may store the message to the memory 18 (and the processors 14A-14B may subsequently transmit the message to the requestor).
- the schema/DTD as represented by the skeleton tree and DTD tables 34
- Fig. 3 a block diagram illustrating one embodiment of a data center in which the appliance 10 may be used for various purposes is shown.
- the data center may be coupled to the Internet or to any other desired network (e.g. local area network (LAN), metropolitan area network (MAN), wide area network (WAN), wireless network, etc. or any combination of the above networks).
- LAN local area network
- MAN metropolitan area network
- WAN wide area network
- wireless network etc. or any combination of the above networks.
- the data center may include a firewall 50 (that may, in some embodiments, include one or more instances of the appliance 10), one or more routers 52 (that may, in some embodiments, include one or more instances of the appliance 10), web servers such as web servers 54A-54B, one or more data integration switches 56 (that may, in some embodiments, include one or more instances of the appliance 10), application servers such as application servers 58A-58B, a database proxy 60 (that may, in some embodiments, include one or more instances of the appliance 10), and a server 62 running a relational database management system (RDBMS).
- the couplings shown in Fig. 3 may be logical. That is, various logical communication paths are illustrated in Fig. 3.
- the firewall 50 may be logically coupled to the router(s) 52, which may be logically coupled to the web servers 54A-54B (and potentially the application servers 58A-58B).
- the data integration switches 56 may be logically coupled to the web servers 54A-54B and the application servers 58A-58B.
- the application server 54A may be logically coupled to the database proxy 60, which is logically coupled to the RDBMS server 62.
- the various devices shown in Fig. 3 may be coupled to a network (e.g. LAN, WAN, MAN, wireless, etc., or combinations thereof), to multiple separate networks that are geographically near or geographically distributed, etc. Exemplary networks may include Ethernet networks, Token Rings, etc.
- the firewall 50 may protect the data center from unauthorized access/attack from the Internet or other network.
- the appliance 10 may be implemented within the firewall 50 to detect viruses in documents being provided to the data center.
- An exemplary embodiment is described below with regard to Fig. 13.
- the router(s) 52 may receive packets that pass through the firewall, and may route the packets within the data center to the appropriate receiver (e.g. a web server, application server, etc.).
- the appliance 10 may be used as an XML router, routing XML packets.
- An exemplary embodiment is described below with regard to Fig. 12.
- the web servers such as web servers 54A-54B, may generally be responsible for supplying web content (e.g.
- the web servers may communicate with the application servers if a portion of the web content is drawn from an application (such as the RDBMS).
- the application servers such as application servers 58A-58B, are configured to provide application services.
- application servers provide the interface between the backend applications in the data center (e.g. the RDBMS, a content management system, a filesystem, etc.) and the users making requests (e.g. from the Internet or other network).
- the web servers 54A-54B may communicate with the application servers 58A-58B and vice versa.
- the data integration switches 56 may be used to convert the data format output by a source server to the format required by the destination server.
- the appliance 10 may be used as a data integration switch 56.
- An exemplary embodiment is discussed below with regard to Figs. 9-11.
- a "server” may comprise a computer system that may include software designed to provide the service(s) assigned to the server.
- the application server 58A in the illustrated embodiment is configured to provide application interface to the RDBMS server 62.
- the application server 58A may be configured to communicate with the RDBMS server 62 in a different fashion than the RDBMS server 62 is configured to communicate.
- the application server 58A may view the database as XML, whereas the database may have a relational data format.
- the database may store XML objects, wherein the content of the object is the data of interest to an application, but the application server 58A may expect a relational data formatted output (e.g. records, each record having multiple columns, or fields, of information) or other format for the data.
- the database proxy 60 may be included as a "frontend" to the RDBMS server 62.
- the database proxy 60 may communicate with the application server 58A in the manner that the application server 58A expects, and may communicate with the RDBMS server 62 in the manner that the RDBMS server 62 expects.
- the database proxy 60 may thus convert the communications from one form to another.
- the appliance 10 may be used as a database proxy 60. Exemplary embodiments are described below with regard to Figs. 4-7.
- the RDBMS server 62 executes the RDBMS. While the illustrated embodiment may implement a relational database (in which a record is stored in various related tables, to permit flexibility in searching the database for specific records based on different fields), other embodiments may implement non-relational databases (e.g. flat-file databases), if desired.
- Exemplary RDBMS 's may include structured query language (SQL) databases such as Oracle, DB2, etc.
- a database management system may comprise software that permits entry of data into the database, permits searching of the database, organizes data in the database, etc.
- An RDBMS is the DBMS software for a relational database.
- a server may execute a content management system (which may manage access and update to content by multiple users, where content may include software source code, documents, or any other data files), a filesystem, etc. and the proxy 60 may be used as a frontend similar to the database proxy.
- the appliance 10 is illustrated in various locations in Fig. 3, various embodiments may implement the appliance 10 at any of one or more of the illustrated locations, as desired.
- the applications of the appliance 10 in Fig. 3 are shown in the context of the data center, each application may be used outside of a data center, in other environments.
- FIG. 4 illustrates one embodiment of the appliance 10 being used as the database proxy 60 for the RDBMS server 62.
- the database proxy 60 includes the appliance 10 and optionally the stylesheets 70 and 72.
- the appliance 10 may be coupled to receive requests 74 from a requestor (e.g. from the application server 58A), and may be configured to generate corresponding requests 76 to the RDBMS server 62.
- the RDBMS server 62 may respond with a result 78 of the request, which the appliance 10 may receive and may convert to the result 80 in a format desired by the application server 58A.
- an input stylesheet 70 and/or an output stylesheet 72 may be used by the appliance 10.
- the request received by the appliance 10 may be in any format.
- the request may be an XPath expression or expressions, if the application server 58A views the database as an XML database.
- the appliance 10 may transform the XPath expressions into SQL requests, and may transmit the SQL requests to the RDBMS server 62.
- the input stylesheet 70 may be used for this transformation.
- the software 28 may receive the XPath expression(s), and may generate the corresponding SQL statement(s) for each expression.
- the request from the application server may be in the form of a stylesheet that contains several XPath expressions to be applied to the database.
- the input stylesheet 70 may be included as part of the request 74, in some embodiments.
- the request may be one or more SQL statements to access the database.
- the appliance 10, in this case, may transmit the SQL statements to the RDBMS server 62.
- the result 78 from the DBMS server 62 may still be transformed by the appliance 10 to another desired format for the result 80, in some such embodiments.
- the request may be provided in another format, and the input stylesheet 70 may be used to transform the input format to one or more SQL statements.
- the appliance 10 may transmit the SQL statements to the RDBMS 62.
- the software 28 may be configured to transmit the statements, whether they are received directly from the requestor or are generated by the appliance 10 from the input request received from the requestor.
- the RDBMS server 62 processes the request 76 and provides the result 78 in a relational format.
- the format of the result 78 may be tabular: a table of records that result'from the SQL statements.
- Each record may have a set of columns, or fields, as defined in the database(s) managed by the RDBMS server 62. More particularly, at least one of the columns may contain a primary key of the database.
- a "key” may be a field of the database that may be used to sort data.
- a "primary key” may be a key that has a unique value in each record in the database. In some cases, the primary key may be one column in the record. In other cases, the primary key may be a combination of two or more of the columns in the record.
- the appliance 10 may transform the result 78 from the output format of the RDBMS 62 to the desired format for the result 80.
- the output stylesheet 72 may be used to specify the desired format, in some embodiments.
- a default output format may be supported by the appliance 10.
- a default XML format may be supported, which is illustrated in Figs. 5 and 6.
- Other embodiments may support a default format in any markup language, or in any other desired format.
- Fig. 5 illustrates one embodiment of a default format 82 in the case that each record includes a primary key in one column.
- the primary key is mapped to an XML element.
- Each other column, or field, of the record is mapped to an attribute of the element (e.g.
- Attrl is equal to the value in column 1 of the record
- Attr2 is equal to the value in column 2 of the record
- AttrN is equal to column N of the record.
- Fig. 6 illustrates one embodiment of a default format 84 in the case that each record includes a primary key that is the combination of two or more columns.
- a parent element is created.
- the parent element may include attributes for each non-primary key column in the record, similar to the embodiment of Fig.5.
- the parent element may include child elements. Each child element may be one of the columns of the primary key.
- the appliance 10 may support predefined services.
- Each service may be loaded onto the appliance 10, and may include the SQL statements to be transmitted to the RDBMS server 62 when the service is invoked.
- the service may specify one or more triggering conditions that cause the service to be invoked, and the appliance 10 may monitor the triggering conditions to invoke the service. Alternatively, an external event may be used to invoke the service, or an explicit invocation may be transmitted by a user.
- the service may also, in some cases, specify the receiver of the result, which may be viewed as the requestor of the access to the database.
- the service may include an output stylesheet 72 or another specification of the output result format.
- the software 28 shown in Fig. 1 may include software to support the predefined services, in some embodiments. Embodiments similar to the embodiment of Fig. 4 may be used as proxies for content management systems or filesystems.
- Fig. 7 illustrates a second embodiment of the appliance 10 being used as the database proxy 60 for the
- the database proxy 60 includes the appliance 10 and optionally the stylesheets 70 and 72. Similar to the embodiment of Fig. 4, the appliance 10 may be coupled to receive requests 74 from the application server 58A and to generate corresponding requests 76 (or a service on the appliance 10 may be used instead of receiving a request 74). Also similar to the embodiment of Fig. 4, the RDBMS server 62 may return a result 78 that the appliance 10 may transform to the result 80 desired by the application server 58A. Stylesheets 70 and 72 may optionally be used. In some embodiments, the predefined services described above with regard to Fig. 4 may be used. In the embodiment of Fig.
- a database 86 is shown in the RDBMS server 62, and the database stores XML objects such as XML objects 88A-88B.
- Other embodiments may include other markup language objects.
- a markup language object may be a complete markup language structure. Each markup language object may contain a record, multiple records, or a portion of a record, as desired.
- the database 86 may store the XML objects as records, or columns of records. Accordingly, the result 78 may comprise one or more XML objects from the database 86.
- the output stylesheet 72 may specify the transformation of the XML objects to the desired result format for the result 80.
- the desired format may be the records inside the XML objects, in a relational format (e.g.
- the request 74 may include one or more SQL statements to be applied to the database 86 to generate the result 78, and the appliance may pass the SQL statements on the to the RDBMS server 62 unmodified.
- the request 74 may include one or both of the stylesheets 70 and/or 72.
- the database 86 may store XML data in relational form (e.g. index tables on various elements and attributes, etc.) rather than as objects in the database.
- the database proxy 60 may still be used in such embodiments to provide transformation of the output data from the database 86.
- the rendering engine 90 includes the appliance 10 and one or more stylesheets 92 to be applied to input documents in order to generate output documents.
- the input documents may be in any format, and the output documents may be in any format as well.
- formats may include: email; word processor formats such as Microsoft Word; spreadsheet formats; portable document format (PDF); various markup language formats such as SGML, HTML, XML, etc.; postscript format; etc.
- the rendering engine 90 may extract portions or all of one or more input documents, and construct one or more output documents from the extracted portions.
- the output documents are then returned to the requestor.
- the input documents may be transmitted with a request to apply the stylesheets 92.
- the request and/or stylesheets may identify the documents (e.g. with a uniform resource locator (URL)) and the appliance 10 may fetch the documents).
- URL uniform resource locator
- the appliance 10 may support predefined services loaded into the appliance 10, similar to the discussion above of the database proxy 60.
- the service may define the input document(s), the output document(s), and the stylesheet(s) to be applied.
- the rendering engine 90 may cache the input documents and apply each stylesheet separately to generate a corresponding output document.
- Fig. 9 is a block diagram illustrating one embodiment of a portion of the data center illustrated in Fig. 3.
- application servers 58A-58D are illustrated along with a data integration switch 56 that employs the appliance 10.
- web servers such as the web servers 54A-54B in Fig. 3 may be included as well.
- Each application server 58A-58D may be configured to output data and input data in various formats.
- the application server 58A may output data and input data in a format 1.
- the application server 58C may output data and input data in a format 4; and the application server 58D may output data and input data in a format 5.
- the output data format and input data format for a given application server may differ (e.g. the application server 58B outputs data in a format 2 and inputs data in a format 3).
- the formats used by the various application servers 58A-58D may differ from each other.
- the data integration switch 56 may transform the data from the source application server's output format to the target application server's input format. More particularly, the appliance 10 may perform the transformation of the output format to the input format, passing through XML as an intermediate format. That is, the appliance 10 may covert the data from the source format to XML, and from XML to the target format.
- a pair of stylesheets may be used for each transformation, one stylesheet that converts from the source format to XML, and another stylesheet that converts from XML to the target format.
- the source data may comprise a set of separate data items arranged in a fashion dictated by the source data format (e.g. a data structure, or an ordered set of data items, or a document of any desired structure such as: email; word processor formats such as Microsoft Word; spreadsheet formats; portable document format (PDF); postscript format; database formats; electronic data interchange (EDI) formats; etc.).
- the source-to-XML stylesheet may be applied to a source data item to generate one or more XML constructs corresponding to the source data item, and the XML constructs may then be applied to the XML-to-target stylesheet to generate the corresponding target data item.
- Application of the XML-to-target stylesheet to the XML construct may be performed independent of the transformation of other source data items to XML constructs.
- the target data item may be generated prior to the generation of XML constructs for at least some of the other source data items.
- application of the XML-to-target stylesheet may begin prior to completion of applying the source-to-XML stylesheet to all of the source data items.
- the application of two stylesheets to a data item prior to completion of all data items through the first stylesheet may, in some embodiments, improve the throughput of the data integration switch 56 and may reduce the response time when individual data items are being transmitted between application servers 58A-58D. Fig.
- FIG. 10 illustrates diagrammatically one embodiment of applying a source-to-XML stylesheet 100 to a source data item to generate XML construct(s), to which the XML-to-target stylesheet 102 is applied to generate the target data item.
- Fig. 11 is a block diagram one embodiment of a portion of the document processor 16 (from Fig. 2), illustrating the flow of data in one embodiment of the data integration switch 56.
- the stylesheets 100 and 102 are each separately compiled into parse-time expression trees (PET1 and PET2, respectively, in Fig. 11) and instruction tables for transformation engine 44 (ITl and IT2, respectively, in Fig. 11)
- the source data is supplied to the parser circuit 40, which generates source events to the expression processor 42.
- the source events may identify data items within the source data.
- the expression processor 42 applies the source events to the PET1, and generates corresponding matches for each source data time in the source- to-XML stylesheet 100 to the transformation engine 44.
- the transformation engine 44 executes the instructions from ITl to generate the XML construct corresponding to a given source data item.
- the transformation engine 44 may generate XML construct events from the XML construct, and may pass those events to the expression processor 42.
- the expression processor 42 may apply the XML construct events to the PET2, generating matches for the XML construct events in the XML-to-target stylesheet 102.
- the transformation engine 44 may execute the instructions from IT2 to generate the output data to the output generator 46.
- the transformation engine may apply the XML constructs to the XML-to-target stylesheet (e.g. the XML-to-target stylesheet may be implemented entirely in instructions executed by the transformation engine 44).
- the XML construct may be passed from the transformation engine 44 to the parser circuit 40, which may parse the XML construct to generate the XML construct events for the expression processor 42.
- the software 28 (Fig. 1) may be used to take the XML constructs output by the transformation engine 44 and generate the XML construct events to the expression processor 42, in other embodiments.
- Fig. 12 is a block diagram of one embodiment of the appliance 10 being used as an XML router 110.
- the XML router 110 may be included in the router(s) 52 in the data center shown in Fig. 3.
- the XML router 110 includes the appliance 10 and a stylesheet 112.
- the appliance receives an input XML document and outputs an output XML document and a routing label or location.
- the routing label identifies the destination for the XML document.
- the software 28 on the appliance 10 may include software to convert the routing label to a destination IP address or addresses (e.g. through a table lookup), and the appliance 10 may route the output document to the destination IP address or addresses.
- the routing label may be used by the router(s) 52 to lookup the destination IP address or addresses, and the router(s) 52 may route the XML document to the destination IP address or addresses.
- the routing label may be the destination IP address or addresses.
- the stylesheet 112 may include a set of XPath expressions to be applied to the input document, one of which may match a given input document. A corresponding routing label may be determined from the stylesheet.
- the stylesheet 112 may include a template for each expression (e.g.
- the template body may include outputting the routing label (e.g. Routing Label 1, Routing Label 2, etc.).
- a stylesheet may also be included in the template body. • If a stylesheet is included, the appliance 10 may apply the stylesheet to the input document to generate the output document. Otherwise, the input document may be supplied unchanged as the output document. In other embodiments, a transformation stylesheet may be applied unconditionally (i.e. not as a function of which expression is matched).
- Fig. 13 a flowchart illustrating operation of one embodiment of the appliance 10 when used in a firewall (e.g. the firewall 50).
- the appliance 10 may perform document validation against a DTD/schema and may also perform intrusion detection (e.g. virus detection).
- viruses may include viruses as well as worms, Trojan horse software, etc.
- viruses may comprise software written with a nefarious intent for the computer system on which the software executes (e.g. destruction of data or software on the computer system, reduction of computer system resources available for other software, etc.), with the intent to replicate to other computer systems, or to execute on the computer system with nefarious intent for another computer system (e.g. launching a denial of service attack).
- XML documents may present additional difficulties for virus detection as compared to standard virus detection.
- the incoming bit stream is compared to a database of bit strings of known viruses and, if a portion of the incoming bit stream matches the database, it is identified as a virus.
- the virus may be distributed across the XML document. For example, portions of the virus may be in different elements. When the elements are combined (e.g. through processing the document by a stylesheet), the virus is created. Still further, the virus may be partly included in the XML document and partly included in a corresponding DTD/schema (e.g. in an entity reference or attribute default) and/or stylesheet to be applied to the XML document.
- a virus may be created by processing the XML document with the DTD/schema and/or stylesheet.
- the XML document, the DTD/schema, and the stylesheet may arrive at different times, thus making a virus distributed among them difficult to detect.
- An attacker may even write an XML document that, when processed using existing, valid DTD/schema and/or stylesheets, creates a virus.
- the appliance 10 may address the virus creation in a two step process. In the first step, the XML document may be validated using the DTD/schema and transformed using the stylesheet, as needed.
- the resulting document may then be passed through the appliance 10 again in the second step, in which case the validator 48 may check for viruses in the resulting document.
- the validator 48 may be provided within a virus database as described above.
- coarser levels of intrusion detection may be applied (e.g. traffic from or two certain addresses may be detected).
- Fig. 13 illustrates the two step process.
- the input document is received, and is checked for validity (against the DTD/schema, e.g. in the validator 48) and the document is transformed (using the DTD/schema and the stylesheet) (block 120).
- the output document is returned to the validator 48 to check for viruses (block 124). If a virus is detected (decision block 126, "yes” leg), the appliance 10 may take corrective action (block 128). For example, the virus may be repaired as a corrective action. Alternatively, the document may be dropped (not permitted to pass into the data center) or quarantined on the appliance 10 or elsewhere for later review by an administrator. If virus checking is not to be performed (decision block 122, "no" leg) or no virus is detected (decision block 126, "no” leg), the document may be allowed to pass into the data center (block 130). Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04796201A EP1676219A1 (en) | 2003-10-22 | 2004-10-22 | System for data format conversion for use in data centers. |
KR1020067009837A KR101093271B1 (en) | 2003-10-22 | 2004-10-22 | System for data format conversion for use in data centers |
JP2006536852A JP4707670B2 (en) | 2003-10-22 | 2004-10-22 | Data format conversion system for use in data centers |
CN2004800345586A CN1906609B (en) | 2003-10-22 | 2004-10-22 | System for data format conversion for use in data centers |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51385003P | 2003-10-22 | 2003-10-22 | |
US60/513,850 | 2003-10-22 | ||
US10/889,626 | 2004-07-12 | ||
US10/889,626 US7409400B2 (en) | 2003-10-22 | 2004-07-12 | Applications of an appliance in a data center |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2005043413A1 true WO2005043413A1 (en) | 2005-05-12 |
Family
ID=34526914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2004/035166 WO2005043413A1 (en) | 2003-10-22 | 2004-10-22 | System for data format conversion for use in data centers |
Country Status (6)
Country | Link |
---|---|
US (1) | US7409400B2 (en) |
EP (2) | EP1814045A3 (en) |
JP (1) | JP4707670B2 (en) |
KR (1) | KR101093271B1 (en) |
CN (1) | CN1906609B (en) |
WO (1) | WO2005043413A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009500732A (en) * | 2005-06-29 | 2009-01-08 | ビザ ユー.エス.エー. インコーポレイテッド | Dynamic parsing / build engine that parses multi-format messages |
JP2010511222A (en) * | 2006-11-24 | 2010-04-08 | エヌエイチエヌ コーポレーション | Peer management server and peer management method in P2P system |
US11544285B1 (en) * | 2021-08-23 | 2023-01-03 | Accenture Global Solutions Limited | Automated transformation of hierarchical data from a source data format to a target data format |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509573B1 (en) * | 2004-02-17 | 2009-03-24 | Microsoft Corporation | Anti-virus security information in an extensible markup language document |
ATE532142T1 (en) * | 2004-03-16 | 2011-11-15 | Microdasys Inc | CONTENT MONITORING FOR XML |
US20050223316A1 (en) * | 2004-04-01 | 2005-10-06 | Sun Microsystems, Inc. | Compiled document type definition verifier |
US7602972B1 (en) * | 2005-04-25 | 2009-10-13 | Adobe Systems, Incorporated | Method and apparatus for identifying white space tables within a document |
US7925971B2 (en) * | 2005-10-31 | 2011-04-12 | Solace Systems, Inc. | Transformation module for transforming documents from one format to other formats with pipelined processor having dedicated hardware resources |
US7986685B2 (en) * | 2005-11-08 | 2011-07-26 | Avaya Inc. | Real-time XML messaging protocol |
US8984397B2 (en) * | 2005-12-15 | 2015-03-17 | Xerox Corporation | Architecture for arbitrary extensible markup language processing engine |
US9286272B2 (en) * | 2005-12-22 | 2016-03-15 | Xerox Corporation | Method for transformation of an extensible markup language vocabulary to a generic document structure format |
US20080126317A1 (en) * | 2006-07-07 | 2008-05-29 | Adam David Stout | Method and system for converting source data files into database query language |
US20070150494A1 (en) * | 2006-12-14 | 2007-06-28 | Xerox Corporation | Method for transformation of an extensible markup language vocabulary to a generic document structure format |
GB2446624A (en) * | 2007-02-13 | 2008-08-20 | Ali Guryel | Secure network used in educational establishments |
US8265457B2 (en) * | 2007-05-14 | 2012-09-11 | Adobe Systems Incorporated | Proxy editing and rendering for various delivery outlets |
US8156149B2 (en) * | 2007-07-24 | 2012-04-10 | Microsoft Corporation | Composite nested streams |
US20090106282A1 (en) * | 2007-10-19 | 2009-04-23 | Siemens Product Lifecycle Management Software Inc. | System and method for interformat data conversion |
US7937392B1 (en) * | 2008-03-31 | 2011-05-03 | Sonoa Networks India (PVT) Ltd. | Classifying uniform resource identifier (URI) using xpath expressions |
US8639086B2 (en) | 2009-01-06 | 2014-01-28 | Adobe Systems Incorporated | Rendering of video based on overlaying of bitmapped images |
US8495005B2 (en) * | 2009-01-14 | 2013-07-23 | International Business Machines Corporation | Methods for matching metadata from disparate data sources |
CN102053994B (en) * | 2009-11-10 | 2013-06-05 | 阿里巴巴集团控股有限公司 | Language parser and parsing method using same |
US8412510B2 (en) * | 2010-04-21 | 2013-04-02 | Fisher-Rosemount Systems, Inc. | Methods and apparatus to display localized resources in process control applications |
EP2570921A1 (en) * | 2011-06-14 | 2013-03-20 | Siemens Aktiengesellschaft | Devices and method for exchanging data |
CN102332002B (en) * | 2011-07-28 | 2013-11-13 | 深圳市万兴软件有限公司 | Method and system for converting file from portable document format (PDF) to electronic publication (EPUB) format |
US8688624B2 (en) * | 2011-08-30 | 2014-04-01 | Bank Of America Corporation | Seed data automation |
US20130226944A1 (en) * | 2012-02-24 | 2013-08-29 | Microsoft Corporation | Format independent data transformation |
CN102750350B (en) * | 2012-06-08 | 2015-04-22 | 北京天地云箱科技有限公司 | Monitoring system and method |
US8706783B2 (en) * | 2012-08-09 | 2014-04-22 | Sap Ag | Storing hierarchical table as a markup language file |
CN102831243A (en) * | 2012-09-12 | 2012-12-19 | 北京播思软件技术有限公司 | Method for flexibly deploying and searching |
WO2014145230A1 (en) * | 2013-03-15 | 2014-09-18 | Recent Memory Incorporated | Object-oriented data infrastructure |
JP5664703B2 (en) * | 2013-06-06 | 2015-02-04 | セイコーエプソン株式会社 | Distribution system and data distribution method |
CN103744949B (en) * | 2013-12-31 | 2017-12-12 | 金蝶软件(中国)有限公司 | data integrating method and system |
US10528021B2 (en) | 2015-10-30 | 2020-01-07 | Rockwell Automation Technologies, Inc. | Automated creation of industrial dashboards and widgets |
CN105335523A (en) * | 2015-12-01 | 2016-02-17 | 深圳市迪菲特科技股份有限公司 | Data interaction method and Web server |
US10313281B2 (en) | 2016-01-04 | 2019-06-04 | Rockwell Automation Technologies, Inc. | Delivery of automated notifications by an industrial asset |
CN105610983A (en) * | 2016-03-07 | 2016-05-25 | 北京荣之联科技股份有限公司 | Distributive network monitoring method and system |
US11074270B2 (en) * | 2016-03-11 | 2021-07-27 | Sap Se | System and method for data integration |
US10318570B2 (en) | 2016-08-18 | 2019-06-11 | Rockwell Automation Technologies, Inc. | Multimodal search input for an industrial search platform |
US10545492B2 (en) | 2016-09-26 | 2020-01-28 | Rockwell Automation Technologies, Inc. | Selective online and offline access to searchable industrial automation data |
US10319128B2 (en) | 2016-09-26 | 2019-06-11 | Rockwell Automation Technologies, Inc. | Augmented reality presentation of an industrial environment |
US10401839B2 (en) | 2016-09-26 | 2019-09-03 | Rockwell Automation Technologies, Inc. | Workflow tracking and identification using an industrial monitoring system |
US10388075B2 (en) * | 2016-11-08 | 2019-08-20 | Rockwell Automation Technologies, Inc. | Virtual reality and augmented reality for industrial automation |
US10735691B2 (en) | 2016-11-08 | 2020-08-04 | Rockwell Automation Technologies, Inc. | Virtual reality and augmented reality for industrial automation |
US10866631B2 (en) | 2016-11-09 | 2020-12-15 | Rockwell Automation Technologies, Inc. | Methods, systems, apparatuses, and techniques for employing augmented reality and virtual reality |
CN109684324B (en) * | 2017-10-18 | 2023-05-05 | 阿里巴巴集团控股有限公司 | Data processing method and related products thereof |
US11423083B2 (en) * | 2017-10-27 | 2022-08-23 | Ab Initio Technology Llc | Transforming a specification into a persistent computer program |
US10445944B2 (en) | 2017-11-13 | 2019-10-15 | Rockwell Automation Technologies, Inc. | Augmented reality safety automation zone system and method |
CN110020307B (en) * | 2017-11-30 | 2023-06-13 | 阿里巴巴集团控股有限公司 | Drawing method and device for client end view |
PT3595267T (en) * | 2018-07-11 | 2020-07-01 | Siemens Ag | Method, devices and system for exchanging data between a distributed database system and devices |
US12093276B1 (en) * | 2018-11-23 | 2024-09-17 | Amazon Technologies, Inc. | Emulating a non-relational database on a relational database with a distributed data store |
CN111339169A (en) * | 2018-12-18 | 2020-06-26 | 北京奇虎科技有限公司 | Chart generation method and device compatible with various big data chart library engines |
US11140036B2 (en) * | 2019-01-16 | 2021-10-05 | International Business Machines Corporation | Identifying groups of related nodes in an integration flow |
CN111078337B (en) * | 2019-11-27 | 2023-08-29 | 用友网络科技股份有限公司 | Style adjustment method, system and computer readable storage medium |
US20230089365A1 (en) * | 2021-09-20 | 2023-03-23 | Salesforce.Com, Inc. | Data virtualization adapter in an integration platform |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US626332A (en) * | 1899-06-06 | Frank j | ||
EP0727067A4 (en) * | 1993-11-02 | 1998-04-15 | Paracom Corp | Apparatus for accelerating processing of transactions on computer databases |
US6247068B1 (en) * | 1997-03-07 | 2001-06-12 | Advanced Micro Devices Inc. | Winsock-data link library transcoder |
US5936641A (en) * | 1997-06-27 | 1999-08-10 | Object Technology Licensing Corp | Graphics hardware acceleration method, computer program, and system |
EP0917362A1 (en) * | 1997-11-12 | 1999-05-19 | STMicroelectronics S.r.l. | Macroblock variance estimator for MPEG-2 video encoder |
US20010042081A1 (en) * | 1997-12-19 | 2001-11-15 | Ian Alexander Macfarlane | Markup language paring for documents |
US6263332B1 (en) * | 1998-08-14 | 2001-07-17 | Vignette Corporation | System and method for query processing of structured documents |
US6317804B1 (en) * | 1998-11-30 | 2001-11-13 | Philips Semiconductors Inc. | Concurrent serial interconnect for integrating functional blocks in an integrated circuit device |
JP4081934B2 (en) * | 1999-09-17 | 2008-04-30 | ソニー株式会社 | Data distribution method and apparatus, and data reception method and apparatus |
US6615202B1 (en) * | 1999-12-01 | 2003-09-02 | Telesector Resources Group, Inc. | Method for specifying a database import/export operation through a graphical user interface |
US6772413B2 (en) * | 1999-12-21 | 2004-08-03 | Datapower Technology, Inc. | Method and apparatus of data exchange using runtime code generator and translator |
US6947440B2 (en) * | 2000-02-15 | 2005-09-20 | Gilat Satellite Networks, Ltd. | System and method for internet page acceleration including multicast transmissions |
JP3262325B2 (en) * | 2000-05-15 | 2002-03-04 | 有限会社アトリ | Agent system and method for supporting construction of electronic mail service system |
JP2001344147A (en) * | 2000-05-31 | 2001-12-14 | Dainippon Printing Co Ltd | General-purpose database access device |
AU9069301A (en) * | 2000-09-07 | 2002-03-22 | Oracle Corp | Method and apparatus for xml data storage, query rewrites, visualization, mapping and references |
EP1239375B1 (en) | 2001-03-08 | 2014-05-07 | Sap Ag | Document conversion process |
US20030041302A1 (en) * | 2001-08-03 | 2003-02-27 | Mcdonald Robert G. | Markup language accelerator |
CN1407465A (en) * | 2001-08-13 | 2003-04-02 | 深圳市丛文软件技术有限公司 | Data exchanging method and device between different databases with different structure |
JP4039484B2 (en) * | 2002-02-28 | 2008-01-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | XPath evaluation method, XML document processing system and program using the same |
US20030187850A1 (en) * | 2002-03-29 | 2003-10-02 | Reed Michael L. | Remote database access through a table entry |
US7480856B2 (en) | 2002-05-02 | 2009-01-20 | Intel Corporation | System and method for transformation of XML documents using stylesheets |
-
2004
- 2004-07-12 US US10/889,626 patent/US7409400B2/en not_active Expired - Fee Related
- 2004-10-22 EP EP07009681A patent/EP1814045A3/en not_active Ceased
- 2004-10-22 CN CN2004800345586A patent/CN1906609B/en not_active Expired - Fee Related
- 2004-10-22 JP JP2006536852A patent/JP4707670B2/en not_active Expired - Lifetime
- 2004-10-22 KR KR1020067009837A patent/KR101093271B1/en not_active IP Right Cessation
- 2004-10-22 EP EP04796201A patent/EP1676219A1/en not_active Ceased
- 2004-10-22 WO PCT/US2004/035166 patent/WO2005043413A1/en active Application Filing
Non-Patent Citations (3)
Title |
---|
BANERJEE S ET AL: "Oracle8i-the XML enabled data management system", DATA ENGINEERING, 2000. PROCEEDINGS. 16TH INTERNATIONAL CONFERENCE ON SAN DIEGO, CA, USA 29 FEB.-3 MARCH 2000, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 29 February 2000 (2000-02-29), pages 561 - 568, XP010378753, ISBN: 0-7695-0506-6 * |
EMMERICH W ET AL: "Markup meets middleware", DISTRIBUTED COMPUTING SYSTEMS, 1999. PROCEEDINGS. 7TH IEEE WORKSHOP ON FUTURE TRENDS OF CAPE TOWN, SOUTH AFRICA 20-22 DEC. 1999, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 20 December 1999 (1999-12-20), pages 261 - 266, XP010367843, ISBN: 0-7695-0468-X * |
FERNANDEZ M ET AL: "SilkRoute: trading between relations and XML", COMPUTER NETWORKS, ELSEVIER SCIENCE PUBLISHERS B.V., AMSTERDAM, NL, vol. 33, no. 1-6, June 2000 (2000-06-01), pages 723 - 745, XP004304804, ISSN: 1389-1286 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009500732A (en) * | 2005-06-29 | 2009-01-08 | ビザ ユー.エス.エー. インコーポレイテッド | Dynamic parsing / build engine that parses multi-format messages |
JP2013101676A (en) * | 2005-06-29 | 2013-05-23 | Visa Usa Inc | Dynamic parse/build engine for parsing multi-format messages |
US8555262B2 (en) | 2005-06-29 | 2013-10-08 | Visa U.S.A. Inc. | Schema-based dynamic parse/build engine for parsing multi-format messages |
US9215196B2 (en) | 2005-06-29 | 2015-12-15 | Visa U.S.A., Inc. | Schema-based dynamic parse/build engine for parsing multi-format messages |
US9756001B2 (en) | 2005-06-29 | 2017-09-05 | Visa U.S.A. | Schema-based dynamic parse/build engine for parsing multi-format messages |
JP2010511222A (en) * | 2006-11-24 | 2010-04-08 | エヌエイチエヌ コーポレーション | Peer management server and peer management method in P2P system |
US11544285B1 (en) * | 2021-08-23 | 2023-01-03 | Accenture Global Solutions Limited | Automated transformation of hierarchical data from a source data format to a target data format |
Also Published As
Publication number | Publication date |
---|---|
JP2007509445A (en) | 2007-04-12 |
CN1906609A (en) | 2007-01-31 |
EP1814045A3 (en) | 2007-08-29 |
US7409400B2 (en) | 2008-08-05 |
KR20070019960A (en) | 2007-02-16 |
EP1676219A1 (en) | 2006-07-05 |
EP1814045A2 (en) | 2007-08-01 |
JP4707670B2 (en) | 2011-06-22 |
CN1906609B (en) | 2012-05-09 |
KR101093271B1 (en) | 2011-12-14 |
US20050091251A1 (en) | 2005-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7409400B2 (en) | Applications of an appliance in a data center | |
US7458022B2 (en) | Hardware/software partition for high performance structured data transformation | |
US7437666B2 (en) | Expression grouping and evaluation | |
US6487566B1 (en) | Transforming documents using pattern matching and a replacement language | |
US7328403B2 (en) | Device for structured data transformation | |
US7873663B2 (en) | Methods and apparatus for converting a representation of XML and other markup language data to a data structure format | |
US8515999B2 (en) | Method and system providing document semantic validation and reporting of schema violations | |
US20070038930A1 (en) | Method and system for an architecture for the processing of structured documents | |
Bergholz | Extending your markup: An XML tutorial | |
AU2007275507B2 (en) | Semantic aware processing of XML documents | |
Tekli et al. | XML document-grammar comparison: related problems and applications | |
Reschke et al. | Web distributed authoring and versioning (webdav) search | |
Zhang | Efficient XML stream processing and searching | |
Tutorial | Extending Your Markup | |
Tekli et al. | XML document-grammar comparison | |
Davis et al. | Web Distributed Authoring and Versioning (WebDAV) SEARCH | |
Reddy et al. | RFC 5323: Web Distributed Authoring and Versioning (WebDAV) SEARCH | |
Davis et al. | Network Working Group J. Reschke, Ed. Request for Comments: 5323 greenbytes Category: Standards Track S. Reddy Mitrix |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200480034558.6 Country of ref document: CN |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2006536852 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2004796201 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020067009837 Country of ref document: KR |
|
WWP | Wipo information: published in national office |
Ref document number: 2004796201 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 1020067009837 Country of ref document: KR |