Software Isolation of Presentation and Mark-up Language Using Intermediate Function Language and Library
BACKGROUND OF THE INVENTION
The present invention relates to the information presentation in a device used in a communication system, and more particularly to a technique, system, and computer program whereby presentation and markup language are isolated using intermediate function language and class library.
A user ofthe Internet typically accesses and uses the Internet by establishing a network connection through the services of an Internet Service Provider (ISP). An ISP provides computer users the ability to establish a connection to a remote computer owned or managed by the ISP. This remote computer then makes services available to the user's computer. Typical services include: providing a search facility to search throughout the interconnected computers ofthe Internet for items of interest to the user; a browse capability, for displaying information located with the search facility; and an electronic mail facility, with which the user can send and receive mail messages from other computer users.
Alternatively, a user ofthe Internet may access and use the Internet by using the computer found in a wireless telephone. The user connects to the Internet via their wireless carrier. The wireless carrier acts as an intermediary to connect to the actual Internet. The wireless carrier receives requests for access to the Internet from the user via radio signal. The wireless carrier uses a proxy computer to convert those requests received from the user to Internet requests, which it then delivers over the actual Internet. When the proxy computer receives its response from the Internet, it then reformats the data received into a special wireless format and broadcasts it back to the user via radio signal.
Still by another method, a user ofthe Internet may access and use the Internet by using plain old telephone service (POTS). The user connects to the Internet via a voice application service provider (Voice ASP). The Voice ASP acts as an
intermediary to connect to the Internet. The Voice ASP receives requests for access to the Internet from the user via spoken sounds and touch-tone sounds delivered over the extended telephone network, either over cable, microwave, or wireless transmission services. The Voice ASP uses a proxy computer to convert those voice and touch tone requests received from the user to Internet requests which it then delivers over the Internet. When the proxy computer receives its response from the Internet, it then reformats the data received into a special spoken voice format and broadcasts those sounds back to the user using POTS.
In each of these three cases, ISP, Wireless Carrier, and Voice ASP, the user relies on a proxy computer at each of these service providers. The proxy computer directs Internet requests over the Internet and receives Internet responses from the Internet.
The present invention deals with using the search, browse, and edit capabilities, whereby the user requests to see or hear information from the Internet, and that information is presented either on the display screen of that user's computer or played as audio on the user's telephone.
The user will have software running either on his computer, his provider's proxy computer, or perhaps both these computers, to allow the user to make search requests, to see or hear the search results, and to edit those results. These functions are typically combined in what is referred to as a "Web Browser" in the ISP scenario, a "Mini-Browser" in the Wireless Scenario, or a "Voice Browser" in the Voice ASP scenario; or jointly all three such items may be referred to simply as a browser. Note that in particular in the Voice ASP case, part ofthe browser technology is delivered via the proxy computer.
After the user has created a search request using the browser, the user sends a message out into the Internet via the provider's proxy computer to carry out the request. The target ofthe request message is one ofthe interconnected computers in the Internet network. That computer will receive the message, attempt to find the data satisfying the user's request, format that data for display with the user's browser, and return the formatted information to the browser software running on the user's computer.
This is an example of a client-server model of computing, where the machine at which the user requests information is referred to as the client, and the computer that locates the information and returns it to the client is the server. When this scenario is implemented using the Internet, the browser, running either on the client's machine or its associated proxy computer, accepts the data it will display in response to the user's request, by convention, as a data stream formatted using the HyperText Markup Language (HTML) for the ISP case, as a data stream formatted using the Wireless Markup Language (WML) or Handheld Device Markup Language (HDML) for the Wireless Carrier case, or as a data stream formatted using the Voice extensible Markup Language (VXML) for the Voice ASP case.
The phrase "data stream", when used herein, is to be construed as applying equally to data received as if it were an incoming stream (for example, from an input buffer) and to data that has been received in this manner and stored in a file. HTML is a standard notation for display text and graphics on a computer display screen, as well as providing more complex information presentation such as input forms, animated video, and sound. WML and HDML are standard notations for the display of mostly text including forms and some limited graphics on the display screens of wireless devices such as cell phones and personal digital assistants (PDA's). VXML is a standard notation for the representation of audio sounds and forms for play over some audio player and receipt of voice commands from some microphone.
Different means of access to the Internet require servers to receive requests and produce data streams in the format provided by the different markup languages corresponding to the means of access. As new means of access to the Internet evolve, presumably new markup languages will emerge tailored to the unique data presentation opportunities and constraints afforded by those new means of access to the Internet.
Servers may be designed so that one set of program code handles both the requests from and the responses to a user in each markup language. This is undesirable because functionality must be duplicated once for each markup language supported. This violates the desirable principle of isolation, meaning that functions for retrieving data will
be repeated once for each markup language, even though the data retrieval is largely be the same for each markup language supported.
Alternatively, as described in US Patent 6,012,098, issued to Bayeh et al. on January 4, 2000, incorporated herein by reference, servlet chaining can be used by servers so that one chain of servlets handles the data retrieval and another chain of servlets handles the data presentation. While this servlet chaining method offers some benefits by isolating data retrieval from data presentation, it suffers from a number of drawbacks. First, the second chain of servlets for data presentation is required to repeat several highly similar tasks for each ofthe functional languages supported. From a programming structure point of view, requesting input, displaying or broadcasting an answer, offering a choice list, or displaying a selectable link are all similar tasks common to the different markup languages such as HTML, VXML, WML, and HDML.
Second, in implementing data presentation, Bayeh et al. relies on a rules based formula via the use of style sheets, such as extensible style sheets language (XSL) or cascading style sheets (CSS). This reliance on rules limits the flexibility available to a developer of server software. If a special case arises where the developer ofthe server software wants to override the behavior of one ofthe style sheet rules dependent on some particular data, server or user related condition, the developer has no object-oriented or widely adopted programmatic technique available via style sheets to provide such dynamic behavioral modification. Thus, Bayeh et al. fail to provide the developer with a convenient programmatic mechanism to arbitrarily override the markup language conversion step based on user and system information.
Accordingly, a need exists for a new technique which empowers server developers to efficiently custom tailor the presentation of their solutions to different target devices and different means of access, and which allows the developers to target a much larger and more diverse Internet audience for their server applications while only having to maintain one base layer of both retrieval and presentation code.
SUMMARY OF THE INVENTION
In accordance with the present invention, a computing environment having a connection to a network includes a sub-process for manipulating data in connection
with a database in response to a user request identifying one of a plurality of markup languages, a sub-process for organizing at least a portion ofthe manipulated data using a functional markup language, the functional markup language providing a common dialect for expressing a predefined group of generic user interface activities, and a sub-process for converting the data organized in the functional markup language into a presentation format ofthe markup language indicated in the user request.
In one embodiment, the sub-process for manipulating is a sub-process for retrieving data from the database.
In one embodiment, the sub-process for organizing indicates which combination ofthe predefined group of generic user interface activities is to be used in returning the retrieved data in response to the user request.
In another embodiment, the sub-process for converting includes a class library of conversion routines for converting expressions in the functional markup language into the markup language indicated by the user request.
In another embodiment, the sub-process for organizing provides a page of functional markup language function tags upon receiving the data, and the class library executes and expands each functional markup tag to a corresponding tag type or block of corresponding tap types in the markup language indicated by the user request. In another embodiment, the corresponding tag type or block of corresponding tap types are mixed with free text.
In another embodiment, each ofthe conversion routines in the class library can be overridden by a server developer to enable implementation of any divergence from markup language standards, or any unique device requirements, or any user preferences specified or implied by the user or data related to the user.
In another embodiment, the functional markup language defines a group of markup language style function calls laid out as markup language tags within programmable server pages such as Java Server Pages or Active Server Pages, wherein
upon executing each function call a block of markup language text is produced in the markup language indicated by the user request.
In another embodiment, the plurality of markup languages includes HTML, HDML, WML, VXML, and other language, which can be expressed as a Document Type Definition (DTD), of Extensible Markup Language (XML).
In another embodiment, the generic user interface activities include gathering a free text input, gathering another type of input such as a date, time, a number or an amount of money, gathering a selection from a choice list, enabling a user to access a selectable link to another page, and displaying or outputting a stream of text.
In another embodiment, the functional markup language supports at least the following function tags: "startMarkup", "endMarkup", "startCard", "endCard", "starfBlock", "endBlock", "dolnput", "doSelect", "startText", "endText", "addText", and "doLinks".
In another embodiment, the sub-process for manipulating includes retrieving data from the database, updating data previously stored in the database, and inserting new data in the database.
Other features and advantages ofthe present invention will be set forth in part in the description and in the drawings, which follow and, in part, will be obvious from the description or may be learned by practice ofthe invention.
BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 illustrates a client-server model for processing four types of user search requests in accordance with a preferred embodiment ofthe present invention.
FIG. 2 illustrates the logical steps in processing a client search request in accordance with the present invention.
DESCRIPTION OF THE SPECIFIC EMBODIMENTS
In accordance with a preferred embodiment ofthe present invention, in a client-server model for processing multiple types of user search requests, one or more computer software programs implement the steps of manipulating data in connection with a data-base (i.e., retrieving data from, or inserting data into, or updating data previously stored in the database) in response to a user's request, optionally performing some type of processing on the manipulated data, organizing the data for presentation using a functional markup language, and converting the organized data into a target markup language (specified in the user request) for presentation. The one or more computer software programs implementing these steps may be arranged in any manner so long as organizing the manipulated (e.g., retrieved) data and converting the organized data are performed as independent processes. For example, in one embodiment, each ofthe organizing and converting processes may be implemented using a stand-alone code, while in another embodiment, they are implemented as separate modules, objects, or even subroutines of one or more programs.
FIG. 1 illustrates a client-server model for processing four types of user search requests 176 in accordance with a preferred embodiment ofthe present invention. Such requests 176 may originate from and be answered to a client computer 162 with an HTML browser 160, a client web-phone 166 (or other WAP enabled device) with an HDML browser 164, a client web-phone 170 (or other WAP enabled device) with a WML browser 168, a client phone supporting plain old telephone service (POTS) 172 via a proxy browser provided by a VXML ASP. Alternative client computing devices (not shown) enabled with a browser supporting some XML compliant markup language may also send and receive information.
When a request 176 is generated from one ofthe browsers, it is sent via the Internet to a server 202 capable of responding to the request. The manner in which the appropriate server is located and the manner in which the search request reaches it are well known in the art and will not be discussed in detail herein. Server 202 includes a number of "servlets" 178, 180, 184 running on the server machine. A servlet is a program typically written in the Java object-oriented-programming language. (Java is a trademark of Sun Microsystems, Inc.) A servlet is created in a way that allows it to be easily added to the code already running on a server, and is intended to extend the functionality
provided by the server. A servlet typically implements code to perform a specific task, such as retrieving information from a particular type of database.
In accordance with the programming model implemented via servlets 178, 180, 184, servlet 178 receives search request 176 and marshals any data sent with the request, including determining what markup language (typically one of HTML, HDML, WML or VXML) is requested. Servlet 178 passes that information to a data manipulation servlet 180 which in response either inserts newly received data into a data base 182, or updates data previously stored in the database, or queries the database to retrieve data from the database. Servlet 180 uses database query statements 204 appropriate to the particular database to query database 182, and in response receives query results 206. In one embodiment, the client request and data manipulation functions may be implemented in a single servlet.
Although the description that follows primarily focuses on the data retrieval function of data manipulation servlet 180 from database 182, the invention is not intended to be limited as such. In accordance with the invention, the capability to update data or insert new data in the database enables the implementation of such processes as, for example, updating the status of a shipment in response to a voice prompt or a handheld device indicating such an update. In one embodiment, markμp language pages may be generated that enable the user to enter information via their browser in the text input controls generated for that markup language by use ofthe functional markup language text input control. When the user submits that page back to the server, data manipulation servlet 180 may invoke insert or update routines to record the data entered into the text input control in the database.
Data manipulation servlet 180 retrieves the requested data from the database, and passes the retrieved data to presentation organization servlet 184. Servlet 180 may optionally include functionality to process the retrieved data. However, servlet 180 does not include any data presentation functionality, and does no explicit or implicit data formatting. All data formatting for presentation is reserved to presentation organization servlet 184 and cross platform class library 186.
Data manipulation servlet 180 and presentation organization servlet 184 may effectively be written as separate servlets (as depicted in the Fig. 1 embodiment), wherein the XML format is used for passing data 208 between them. In another embodiment, the data manipulation and presentation organization servlets are written as a single servlet, and thus the use of an intermediate XML data format is not required.
Presentation organization servlet 184 organizes the retrieved data, either received in XML format from data manipulation servlet 180 or found in code shared with data manipulation servlet 180. Generally, presentation organization servlet describes which types of generic user interface activities a presentation will use. Generic user interface activities include: gathering a free text input; gathering another type of input such as a date, time, a number or an amount of money; gathering a selection from a choice list; enabling a user to access a selectable link to another page; or simply displaying or otherwise outputting a stream of text. While individual markup languages implement each of these generic user interface activities in different ways, many markup languages, inclusive of HTML, HDML, WML and VXML, implement these generic user interface activities.
Presentation organization servlet 184 organizes the data retrieved from database 182 using a Java server pages functional markup language. A functional markup language provides a common dialect for the expression ofthe common user interface activities. A Java class library 186 of a number of conversion routines then translates expressions in the functional markup language into the requested markup language.
The Java server pages functional markup language defines a series of markup language style function calls. These function calls may be laid out as if they were markup language tags within a Java server page. Each function call, when executed on the server, will produce a block of markup language text in the requested markup language.
More specifically, for each supported markup language, an associated Java class library implements a separate conversion function for each supported functional markup language function tag. Upon receiving the data retrieved from database 182, presentation organization servlet 184 produces as output a page consisting of functional
markup language function tags. This page of function tags gets executed by the Java server page (JSP) interpreter ofthe server by invoking the appropriate conversion function for each successive tag and constructing a page of markup language text. The constructed page of markup language is then sent back as a data stream to the user over the Internet. If the requested markup language is HTML, the constructed page of markup language is sent back to HTML browser 160 as an HTML data stream 188. If the requested markup language is HDML, the constructed page of markup language is sent back to HDML browser 164 as an HDML data stream 190. If the requested markup language is WML, the constructed page of markup language is sent back to WML browser 168 as a WML data stream 192. Lastly, if the requested markup language is
VXML, the constructed page of markup language is sent back to VXML browser 172 as a VXML data stream 194.
By separating the organization of tag functions from the generation ofthe requested markup language, the desirable outcome of separation between presentation organization process and the process of conversion into the requested markup language is achieved. This separation provides many benefits for server developers and deployment teams, including the ability to work on, maintain, host and otherwise operate presentation organization and markup language conversion functions independently. The generation of tag functions need only be done once for all the markup languages supported by the Java class library for markup language conversion rather than once for each ofthe markup languages as under the prior art. Stated otherwise, each functional markup language page implies multiple target markup language pages, one for each ofthe markup languages supported by the associated Java class library. Thus, changing the layout in functional markup language, will change the layout on all supported platforms. In the prior art, changing the layout would require independent changes to the XSL style sheets for each of markup languages supported.
By employing function tags in functional markup language, the present invention frees the developer from the need to know the details of multiple markup languages in targeting multiple markup languages with the solution. Further, because each markup language has unique traits that the developer might choose to employ, the use of functional markup language empowers the developer to intersperse actual markup
language generated from Java code for each target platform into the markup language that will be generated from the common functional markup language tags.
As an example, a programmer can program a web page using the functional markup language. When a user request is received by server 202, it identifies the target format and makes the conversion into the target mark-up language, as described above. The entire page can be programmed this way. Alternately, a portion ofthe web page can contain an override, and can go directly to a particular mark-up language for that portion (without going through producing functional markup language function tags and the final translation to the target mark-up language). For example, there may be functionality available on a web phone that has no generic equivalent for a computer display. If the user is using a web-phone, the functional part could be overridden or bypassed. Thus, a portion ofthe web page can be programmed in accordance with the present invention, and a portion can be programmed in accordance with the prior art technique described by Bayeh et al. or however desired constrained only by the limits of the programmable language upon which the functional markup language is based. Another type of overriding can be done based on other factors, such as a TM being displayed only for users from countries where that TM is licensed (this can be implemented as just a substitution of a different functional code, rather than going directly to a particular markup language).
In one embodiment, the class markup defines the application programming interface (API) for the class library. The class library has derived classes structured in two tiers. The first tier derived classes support the more general conversions of functional markup language into the target markup language, and the second tier derived classes support more specific conversions. However, functionality from the derived classes from either or both tiers may be used in one conversion process. Stated otherwise, depending upon arbitrary conditions, only functionality from the first tier derived classes may be used in converting the functional markup language into the target markup language, or the converted functional markup language from a first tier conversion may be further formatted for a specific type of user device using the second tier derived classes, or lastly, only functionality from the second tier derived classes may be used in converting the functional markup language into the target markup language for a specific type of user device.
For example, depending on the desired format, a first tier derived class markupHTML may be used to implement the conversion of functional markup language to HTML, or another first tier derived class markup WML may be used to implement the conversion of functional markup language to WML. A second tier derived class markupHTMLLaptop may either further format the first tier-converted functional markup language or directly convert the functional markup language to an HTML layout appropriate to the 640x480 pixel screen size common to many laptops. Similarly, another second tier derived class markupHTMLDesktop may either format the first tier-converted functional markup language or directly convert the functional markup language into an HTML layout appropriate to the 1024x768 pixel screen size common to many desktops.
Another second tier derived class markup WMLSmallPhone may either format the first tier-converted functional markup language or directly convert the functional markup language into a WML layout appropriate to a WAP phone with a display that is three lines deep. Similarly, another second tier class markup WMLBigPhone may either format the first tier-converted functional markup language or directly convert the functional markup language into a WML layout appropriate to a WAP phone with a display that is eight lines deep. Such distinctions in method of conversion may vary on a method by method basis within each derived conversion class depending on the functionality within the first and second tier classes.
Accordingly, for each target markup language and target device size, an appropriate markupTargetMLTargetSize class can be derived from the associated markupTargetML class. As indicated above, these second tier derived classes may use some ofthe methods ofthe associated markupTargetML class where expedient and override other methods ofthe associated markupTargetML class where expedient.
In one embodiment, markup WMLSmallPhone and markup WMLBigPhone will handle certain functional markup language feeds differently. For example, markup WMLSmallPhone will convert a functional markup language page of six addText functional tags into three WML display pages displaying two lines of text with "next" and "previous" links at the bottom of each page as needed for navigation among those three
pages. Markup WMLBigPhone would instead convert that same functional markup language page into just one WML page displaying six lines of text.
The above-mentioned HTML and WML formats and the specific user device types are illustrative only and not intended to be limiting. The above-described two tiered structure ofthe class library may be expanded to include other formats and user device types.
In server 202, the sending of a data stream from one servlet to another servlet may be implemented using the well-known technique of "servlet chaining".
Suffice it to state that servlet chaining enables the output of one servlet to be the input of a next logical servlet.
FIG. 2 illustrates the logical steps in processing a client search request in accordance with the present invention. The process begins at Step 300 when the user creates a search request using the facilities of his browser software. At Step 310, the search request is sent into the Internet for processing, using the appropriate URL which the browser has created (or which the user may have typed directly) for this search request. Steps 300 and 310 use existing techniques which are known in the art. They are indicated in FIG. 2 for completeness
Step 320 indicates that the client's request is received at the appropriate server. Again, this step uses existing techniques, and is included for completeness. At Step 330, the server which received the client's request identifies the target markup language and national language from the client request. Both are determined using techniques known in the art dependent on the reading of HTTP Request headers. Each browser implementation records a set of information in the predefined HTTP Request headers empowering a reader ofthe headers to determine both the target markup languages supported and the national languages in which information is requested. These headers may not be enough to uniquely identify the required markup or national language or they may identify a markup language or national language not supported by that server. Based on the browser capabilities and desires as indicated by the Request headers, the request servlet will determine into what markup language and what national language the server will ultimately generate the requested output.
At step 340, the server which received the client's request routes it to the proper data manipulation servlet. Steps 350 through 390 are implemented by one or more data servlets in accordance with the present invention. At Step 350, the data manipulation servlet formats a query request, using an appropriate query language that will depend on the type of database on which the requested data is stored. Database query languages are well known in the art, as are techniques for determining which language is required and how to format queries in a particular language. The creation ofthe query request, as well as sending the request to the database and receiving data satisfying that request, can be implemented using techniques which are well known in the art. The request may be of any accepted form for such database requests including but not limited to select, update, and insert queries.
Step 360 is included to indicate that, optionally, additional processing may be performed on the data retrieved in response to the database query. For example, the processing might consist of counting the number of records that were received in response to the query, and formatting that sum for returning to the client along with the information from the retrieved records. Again, well-known techniques are used for processing data.
At Step 370, the presentation organization servlet receives and formats the retrieved and processed database information into a set of functional markup language tags. Functional markup language tags closely parallel markup language tags. A detailed discussion of markup language tags will be omitted here because their use is well known in the art. A functional markup tag, in the preferred embodiment, is expressed in a Java server page as "<%=tagFunc(paraml, param2)%>" where tagFunc is the name ofthe functional tag type, paraml and param2 are arbitrary Java function parameters of an arbitrary Java type. A tag function may have an arbitrary number of said Java parameters including zero parameters.
In a preferred embodiment, several tag functions are supported. The list of supported tag functions include "startMarkup", "endMarkup", "startCard", "endCard", "startBlock", "endBlock", "dolnput", "doSelect", "startText", "endText", "addText", and "doLinks".
"startMarkup" and "endMarkup" indicate the beginning and end respectively of a functional markup language page. In the HTML markup case, the class library converts the functional tags "startMarkup" and "endMarkup" to "<html>" and "</html>" respectively. Similarly, for HDML, WML, and VXML, the "startMarkup" and "endMarkup" tags are converted by the class library into the appropriate expressions in HDML, WML and VXML to indicate the beginning and end respectively of a markup language page in the corresponding markup language.
"startCard" and "endCard" have noop implementations in the class library for VXML and HTML where they have no meaning. In HDML and WML, they respectively indicate the opening and closing of a card tag, which is well known tag to those skilled in the art of HDML and WML.
"startBlock" and "endBlock" are translated by the class library into the opening and closing ofthe block tag in VXML to indicate the beginning and end of an audio playback block. In HTML, WML and HDML they have no meaning and thus have noop implementations in the class library for those markup languages.
For "dolnput", the class library implements a free text input control in each markup language. For HTML, the class library converts "dolnput" into an "<input type=text>" style control. Similarly, in HDML, WML and VXML, "dolnput" is converted into the native markup language input control for each.
For HTML, the class library implements the "doSelect" tag as a "<select>" tag style "<option>" list. For HDML and WML, their native markup language select lists are implemented by the class library. For VXML, a prompt with a grammar patterned after the choice list is implemented by the class library.
For "doLinks", the class library implements a list of URL links for HTML.
In HDML and WML, their native markup language version of links are implemented as well by the class library. For VXML, a prompt with a grammar patterned after each link as if it were part of choice list is implemented by the class library.
For "startText" and "addText", the class library implements a noop under HTML. However, under HDML and WML, it implements "<p>" and "</p>" respectively because this is necessary under those markup languages for the display of text. Under VXML, "startText" gets converted to "<audio>" and "endText" gets converted to "</audio>".
Finally, in each markup language, the text parameter to "addText" gets converted into raw text in that markup language. However, rather than just embedding that raw text into the JSP at that point, "addText" is called, not on the text itself, but an identifier indicating which text expression in desired. Depending on the markup language and national language determined and passed forward by the Request Servlet, different versions of that text will be output in the target markup language. For example, "addText(ID_COMPUTER)" might yield "COMP" for English WML but would instead yield "Ordinateur" for French HTML. For that matter, any text expression that needs to be internationalized or be sensitive to target markup language can be varied in this manner.
To summarize step 370, all ofthe data retrieved and passed to the presentation organization servlet, is formatted as functional markup language tags. Each tag is parameterized according to the data provided by the data manipulation servlet.
While the preferred embodiment implements the most obvious tags in functional markup language, the implementation of additional sets of functional markup tags will be obvious to those skilled in the art. Similarly, while the preferred embodiment implements the class library converters for four ofthe most popular markup languages, it will be obvious to those skilled in the art how to implement the class library converters for other markup languages, particularly markup languages which are patterned after XML, most particularly those that can be expressed as a document type definition (DTD) of extensible markup language (XML).
In step 380, code from the Java Class library executes and expands each of the functional markup language tags into actual markup language ofthe target markup language. Various mechanisms for the execution of JSP code are available which are well known in the art. Most typically, the JSP code is executed by a web server or web-
server add-in technology converting that JSP code into a Java servlet, compiling it, and then running that JSP code as the converted and compiled Java servlet.
Finally, in Step 390, the data stream of target markup language is returned to the target browser in accordance with techniques well known in the art.
In summary, in accordance with the present invention, the information presentation organization logic is separated from information presentation markup language conversion logic. The presentation organization logic describes which combination of inputs, displays or broadcasts of answers, choice lists or selectable links will be offered to the user, while the conversion logic generates the requested markup language, be it HTML, VXML, WML, HDML or some other present or future XML derivative language describable by an XML DTD.
This separation empowers the developers to describe the data presentation in a functional markup language which could then be converted on the fly into any one of a number of supported markup languages by an associated class library capable of performing such conversions. In this manner, one set of functional markup language could manage presentation of data across several markup languages and ergo several devices and several means of access to the Internet.
Further, because individual quirks will always exist interior to individual markup languages, no least common denominator actual markup language is likely to ever be able entirely to produce derived markup language content for multiple target markup language. However, by the use of a functional markup language, developers will be able to insert additional directives in the functional markup language to provide arbitrary support for arbitrary features available only under one or more of such multiple target markup languages. As a result, the use of functional markup languages will empower server developers to custom tailor the presentation of their solutions to different target devices and different means of access. However, because ofthe use ofthe presentation organization layer as described, such custom tailoring can still be isolated from much ofthe fundamental presentation logic.
Both the information presentation organization logic and the information presentation markup language conversion logic can be responsive to data supplied by and about the user, including user's means of access to the Internet and the nature of user's access device's information display capabilities. For example, on a WML phone, the text output for the title of a page might be "SHP ARRVD CUS LOC" while the title of a comparable VXML page might be spoken as audio to a phone as "The Shipment Arrived at the Customer Location" or displayed as HTML text as "Shipment Arrived At Customer Location".
Further, both the information presentation organization logic and inforaiation presentation markup language conversion logic can be arbitrarily pro grammatically adjusted based on data supplied by and about the user, including user's means of access to the Internet, the nature of user's access device's display capabilities, and the nature of user's current request for data, and the data so retrieved by the isolated data retrieval step .
The isolation between the information retrieval logic, the information presentation organization logic, and information presentation markup language conversion logic enables efficient mixed use of multiple components for each of information retrieval, information presentation organization, and information presentation markup language conversion. The multiple components may implement similar manners of data retrieval, information presentation organization and information formatting, respectively, or they may implement alternative manners of retrieval, presentation organization, and presentation markup language conversion.
The above-mentioned isolation also enables additional data retrieval, presentation organization or presentation markup language conversion implementations to be quickly and easily substituted into any one or all ofthe multiple Internet access environments, to adapt to changes in retrieval, presentation organization or presentation markup language conversion requirements.
The above-mentioned isolation further enables additional data retrieval, presentation organization or presentation markup language conversion implementations to be quickly and easily added into any one or all ofthe multiple Internet access
environments , providing greater flexibility in the manner in which data can be presented, and possible increasing overall system throughput and alleviating potential bottlenecks as well.
Lastly, the isolation technique described above uses widely accepted programming techniques and data formatting notations, thus increasing industry acceptance and maximizing the advantages ofthe present invention. For example, by using XSL style sheets, Bayeh et al. provide software developers with only the techniques made available by the limited programming language within XSL. While adoption of XSL is growing, Java is a much more commonly used language. Java offers a much richer array of language expressions and techniques than does XSL, greatly enhancing a developers ability to achieve their specific goals. Further, Java offers a well developed object-oriented approach to programming, enabling the developer to encapsulate conversion functionality in a class library. At the same time, Java's object oriented approach enables a developer to override many specific methods of that class library in response to system, user, or other dependencies. XSL does not offer the developer use of these class library and override techniques.
The term database is meant to be inclusive of but not limited to relational databases, object oriented databases and flat file databases. The term server is meant to be inclusive of but not limited to web servers and other servers that fit into the client/server paradigm. The term servlet is meant to be inclusive of but not limited to Java Servlets, a trademark of Sun Microsystems.
While the preferred embodiment ofthe present invention has been described, additional variations and modifications in that embodiment may occur to those skilled in the art once they learn ofthe basic inventive concepts. Therefore, it is intended that the appended claims shall be construed to include both the preferred embodiment and all such variations and modifications as fall within the spirit and scope of this invention.