1. Technical Field
The present invention relates generally to an improved data processing system and in particular to a data processing system and method for caching markup language content. Still more particularly, the present invention provides a mechanism for an extensible markup language fragment cache.
2. Description of Related Art
The Extensible Stylesheet Language Transformations (XSLT) is a standard for transforming XML documents into other XML documents or documents of other formats. The use of XSLT is becoming more prevalent but requires significant overhead that is frequently prohibitive. In a typical application server/XSLT interaction, a servlet will generate an XML document that will subsequently be transformed to HTML for end user presentation.
In conventional XSLT usage, the servlet builds the complete XML representation of the end user response. In some cases, the contained information is completely dynamic in that it is unique to the particular request. However, in other cases, the page may contain a mixture of dynamic content and relatively static content. In such cases, the conversion of the static content from XML to HTML is wasteful. For example, the static information has to be retrieved for each request and assembled by the application. Additionally, the XSL transform processor has to process this data in the form of XML.
Thus, it would be advantageous to provide a system and method for transforming a markup language document in a manner that reduces the retrieval and processing of static information. It would be further advantageous to provide a system and method that facilitates an XSLT transformation of XML by reducing the number of retrievals and transformations of static information.
The present invention provides a method, computer program product, and a data processing system for transforming markup language documents. A first markup language document in a first format to be transformed into a second document of a second format is obtained. A reference to a source of a data fragment to be inserted into the second document is identified. A data fragment cache is interrogated. A determination of whether the data fragment is located in the data fragment cache is made. The first markup language document is transformed into the second document. The second document includes the data fragment.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
With reference now to the figures,
In the depicted example, servers 108-112 are connected to network 102 along with storage unit 106. In addition, client 104 is connected to network 102. Client 104 may be, for example, a personal computer or network computer. In the depicted example, servers 108-112 provide data, such as boot files, operating system images, applications, or web pages to client 104. Client 104 is a client to one or more of servers 108-112. Network data processing system 100 may include additional servers, clients, and other devices not shown. In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
Referring to
Peripheral component interconnect (PCI) bus bridge 214 connected to I/O bus 212 provides an interface to PCI local bus 216. A number of modems may be connected to PCI local bus 216. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients 108-112 in
Additional PCI bus bridges 222 and 224 provide interfaces for additional PCI local buses 226 and 228, from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers. A memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
Those of ordinary skill in the art will appreciate that the hardware depicted in
The data processing system depicted in
With reference now to
An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 in
Those of ordinary skill in the art will appreciate that the hardware in
As another example, data processing system 300 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces As a further example, data processing system 300 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
The depicted example in
Turning now to
In order to produce the formatted HTML file, XSLT transformation processor 406 incorporates XSL stylesheet 407 to transform a root document with no content into an HTML document that includes dynamic content. Using the mechanism of the present invention, the sources of the dynamic content may be specified in XSL stylesheet 407 using a document expression. In this example, XSL stylesheet 407 includes two sources: one source from servlet 409, which is executing on server 408, and another source servlet 411, which is executing on server 412.
When the document expression is evaluated by XSL transformation processor 406, XSL transformation processor 406 requests the dynamic content from servlet 409 and 411 in a form of XML fragments. Responsive to receiving the request, servlet 409 and 411 generate XML fragments 410 and 413 respectively and return XML fragments 410 and 413 to XSL transformation processor 406. XSL transformation processor 406 then places XML fragments 410 and 413, which include the dynamic content, in XML fragment cache 414 for future use. XML fragment cache 414 may be stored on storage unit 106 shown in
Subsequently, client browser 403 sends a similar request to servlet 405 for a Web page, which requires the same dynamic content. Instead of immediately requesting the dynamic content from servlet 409 and 411, XSL transformation processor 406 examines the specified dynamic content in XSL stylesheet 407 and determines if XML fragments 410 and 413 already exist in XML fragment cache 414.
If XML fragments 410 and 413 already exist in XML fragment cache 414, XSL transformation processor 406 then retrieves cached XML fragments 410 and 413 from XML fragment cache 414 and generates the resulting HTML file. Otherwise, XSL transformation processor 406 invokes servlet 409 and 411 to generate the dynamic content required.
Each record 520a-520b, or row, comprises data elements in respective fields 530a-530b. Fields 530a-530b have a respective label, or identifier, that facilitates insertion, deletion, querying, or other data operations or manipulations of table 500. In the illustrative example, fields 530a-530b have respective labels of “Reference” and “XML_fragment”. In the illustrative example, field 530a is the key field and values of key field 530a specify the address of an XML source, such as XML servlet 409 or 411, that produces XML code to be inserted into an XML document.
In the illustrative example, data elements of key field 530a comprise uniform resource locators (URLs) that reference an XML fragment source. Other fragment identifiers may be suitably substituted for fragment URLs. Field 530b contains XML code generated or otherwise obtained from the reference in a corresponding record. For example, field 530b of record 520a contains an XML fragment in a file Sample1.xml that is generated from an XML servlet at the URL http://host/example1/XMLServlet. Likewise, field 530b of record 520b contains an XML fragment in a file Sample2.xml that is generated from an XML servlet at the URL http://host/eample2/XMLServlet.
In the event that no fragment identifier is located, the transformation process completes the document transformation (step 620) in a conventional fashion.
If a fragment identifier is located within the XSL stylesheet at step 610, the transformation processor preferably interrogates a fragment cache to determine if the fragment has been previously cached (step 612). In the event that the fragment has not been previously cached, the transformation processor then obtains the fragment by invoking the servlet or other fragment source referenced by the fragment identifier (step 614). Subsequently, the transformation processor caches the obtained fragment (step 616), and then completes the transformation process according to step 620.
Returning again to step 612, if the transformation processor determines the fragment is cached, the fragment is retrieved from the cache (step 618), and the document transformation is completed according to step 620. The transformed document is then returned, and the transformation routine cycle then ends (step 624).
Thus, a system and method for transforming a markup language document in a manner that reduces the retrieval and processing of relatively static information is provided. XML fragments are cached during an XSLT transformation when the XML fragment has not been previously generated. Advantageously, subsequent document transformations that require the cached XML fragment do not result in invocation of the XML fragment source but instead retrieve the XML fragment from the fragment cache.
It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.