WO2002029609A1 - Software isolation of presentation and mark-up language using intermediate function language and library - Google Patents

Software isolation of presentation and mark-up language using intermediate function language and library Download PDF

Info

Publication number
WO2002029609A1
WO2002029609A1 PCT/US2001/042488 US0142488W WO0229609A1 WO 2002029609 A1 WO2002029609 A1 WO 2002029609A1 US 0142488 W US0142488 W US 0142488W WO 0229609 A1 WO0229609 A1 WO 0229609A1
Authority
WO
WIPO (PCT)
Prior art keywords
markup language
user
data
text
user request
Prior art date
Application number
PCT/US2001/042488
Other languages
French (fr)
Inventor
Anthony C. Rojko
Thomas Han
Original Assignee
Arzoon, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Arzoon, Inc. filed Critical Arzoon, Inc.
Priority to AU2002213442A priority Critical patent/AU2002213442A1/en
Publication of WO2002029609A1 publication Critical patent/WO2002029609A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/117Tagging; Marking up; Designating a block; Setting of attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Definitions

  • the 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).
  • ISP Internet Service Provider
  • 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.
  • 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.
  • 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.
  • a user ofthe Internet may access and use the Internet by using plain old telephone service (POTS).
  • POTS plain old telephone service
  • the user connects to the Internet via a voice application service provider (Voice ASP).
  • VoIP 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.
  • 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.
  • ISP 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.
  • the user 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.
  • 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.
  • HTML HyperText Markup Language
  • WML Wireless Markup Language
  • HDML Handheld Device Markup Language
  • VXML Voice extensible Markup Language
  • 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.
  • 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.
  • 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.
  • 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.
  • 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).
  • style sheets such as extensible style sheets language (XSL) or cascading style sheets (CSS).
  • XSL extensible style sheets language
  • CSS cascading style sheets
  • 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.
  • 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.
  • 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.
  • the sub-process for manipulating is a sub-process for retrieving data from the database.
  • 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.
  • 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.
  • 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.
  • the corresponding tag type or block of corresponding tap types are mixed with free text.
  • 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.
  • 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.
  • 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).
  • DTD Document Type Definition
  • XML Extensible Markup Language
  • 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.
  • the functional markup language supports at least the following function tags: “startMarkup”, “endMarkup”, “startCard”, “endCard”, “starfBlock”, “endBlock”, “dolnput”, “doSelect”, “startText”, “endText”, “addText”, and “doLinks”.
  • 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.
  • 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
  • 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.
  • 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.
  • POTS plain old telephone service
  • Alternative client computing devices enabled with a browser supporting some XML compliant markup language may also send and receive information.
  • Server 202 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.
  • 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.
  • 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.
  • the client request and data manipulation functions may be implemented in a single servlet.
  • 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.
  • 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.
  • 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.
  • an associated Java class library implements a separate conversion function for each supported functional markup language function tag.
  • presentation organization servlet 184 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.
  • 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.
  • each functional markup language page implies multiple target markup language pages, one for each ofthe markup languages supported by the associated Java class library.
  • 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.
  • a programmer can program a web page using the functional markup language.
  • server 202 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.
  • 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).
  • 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).
  • 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.
  • first tier derived class markupHTML may be used to implement the conversion of functional markup language to HTML
  • second 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.
  • 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.
  • 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.
  • an appropriate markupTargetMLTargetSize class can be derived from the associated markupTargetML class.
  • 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.
  • markup WMLSmallPhone and markup WMLBigPhone will handle certain functional markup language feeds differently.
  • 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.
  • 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.
  • 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".
  • 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.
  • 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.
  • 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.
  • the request servlet will determine into what markup language and what national language the server will ultimately generate the requested output.
  • 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.
  • 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.
  • 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.
  • well-known techniques are used for processing data.
  • 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 tag function may have an arbitrary number of said Java parameters including zero parameters.
  • tags 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.
  • the class library converts the functional tags "startMarkup” and “endMarkup” to " ⁇ html>” and “ ⁇ /html>” respectively.
  • 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.
  • 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.
  • HTML, WML and HDML they have no meaning and thus have noop implementations in the class library for those markup languages.
  • the class library implements a free text input control in each markup language.
  • "dolnput” is converted into the native markup language input control for each.
  • the class library implements the "doSelect" tag as a " ⁇ select>” tag style " ⁇ option>” list.
  • their native markup language select lists are implemented by the class library.
  • VXML a prompt with a grammar patterned after the choice list is implemented by the class library.
  • the class library implements a list of URL links for HTML.
  • the text parameter to "addText” gets converted into raw text in that markup language.
  • "addText” is called, not on the text itself, but an identifier indicating which text expression in desired.
  • 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.
  • any text expression that needs to be internationalized or be sensitive to target markup language can be varied in this manner.
  • 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.
  • 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.
  • 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.
  • Step 390 the data stream of target markup language is returned to the target browser in accordance with techniques well known in the art.
  • 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.
  • 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.
  • 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”.
  • 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.
  • 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.
  • 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.
  • 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.
  • database is meant to be inclusive of but not limited to relational databases, object oriented databases and flat file databases.
  • server is meant to be inclusive of but not limited to web servers and other servers that fit into the client/server paradigm.
  • servlet is meant to be inclusive of but not limited to Java Servlets, a trademark of Sun Microsystems.

Abstract

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 (182) in response to a user request (176) identifying one of a plurality of markup languages, a sub-process for organizing at least a portion of the 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 of the markup language indicated in the user request (176).

Description

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.

Claims

WHAT IS CLAIMED IS;
A computing environment having a connection to a network, comprising: 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.
2. The computing environment of claim 1 wherein the sub-process for manipulating includes a sub-process for retrieving data from the database.
3. The computing environment of claim 2 wherein 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.
4. The computing environment of claim 2 wherein 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.
5. The computing environment of claim 4 wherein the sub-process for organizing provides a page of functional markup language function tags upon receiving the retrieved data.
6. The computing environment of claim 5 wherein the class library executes and expands each functional markup tag to a corresponding tag type or block of tag types in the markup language indicated by the user request.
7. The computing environment of claim 6 wherein the corresponding tag type or block of tag types is mixed with free text.
8. The computing environment of claim 5 wherein each ofthe conversion routines in the class library can be overridden by a software developer.
9. The computing environment of claim 5 wherein the conversion routines in the class library are overridden 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.
10. The computing environment of claim 4 wherein the class library is a Java class library.
11. The computing environment of claim 2 wherein the functional markup language defines a group of markup language style function calls laid out as markup language tags within programmable server pages.
12. The computing environment of claim 11 wherein the programmable server pages are Java Server Pages or Active Server Pages.
13. The computing environment of claim 11 wherein upon executing each function call a block of markup language text is produced in the markup language indicated by the user request.
14. The computing environment of claim 1 wherein the plurality of markup languages includes HTML, HDML, WML, and VXML. _
15. The computing environment of claim 5 wherein a page of markup language text is constructed in the markup language indicated by the user request by executing the page of function tags using a Java server page interpreter.
16. The computing environment of claim 15 wherein the page of markup language text is constructed by invoking an appropriate conversion function for each successive tag in the page of function tags.
17. The computing environment of claim 2 wherein the sub-process for manipulating includes functionality to process the data retrieved from the database.
18. The computing environment of claim 2 wherein the sub-process for manipulating formats the data retrieved from the database in a XML format.
19. The computing environment of claim 1 wherein each ofthe sub- process for manipulating and sub-process for organizing is implemented using a stand- alone code.
20. The computing environment of claim 1 wherein the sub-process for manipulating and sub-process for organizing are implemented as separate modules or objects or subroutines of one program.
21. The computing environment of claim 1 wherein 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.
22. The computing environment of claim 2 wherein the page of functional markup language function tags includes one or more of function tags: "startMarkup", "endMarkup", "startCard", "endCard", "startBlock", "endBlock", "dolnput", "doSelect", "startText", "endText", "addText", and "doLinks".
23. The computing environment of claim 22 wherein the one or more function tags are parameterized according to the data retrieved from the database.
24. The computing environment of claim 1 further comprising a sub- process for returning the data converted into a presentation format ofthe markup language indicated by the client request to a user who generated the user request.
25. The computing environment of claim 1 wherein the presentation format is one which can be expressed as a Document Type Definition (DTD) of Extensible Markup Language (XML).
26. The computing environment of claim 2 wherein the sub-process for manipulating converts text identifiers for text expressions into text specifically tailored to the display constraints ofthe markup language indicated by the user request and expressed as display text in the markup language indicated by the user request.
27. The computing environment of claim 2 wherein the sub-process for manipulating converts text identifiers for text expressions into text specifically tailored to the display constraints ofthe markup language indicated by the user request, expressed in a national language indicated by the user request, and expressed as display text in the markup language indicated by the user request.
28. The computing environment of claim 1 wherein the class library has a first tier derived classes and a second tier derived classes, the first tier derived classes being for supporting conversion ofthe functional markup language to the markup language indicated in the user request, and the second tier derived classes being for supporting: (1). further formatting of a first tier-converted functional markup language to a user's specific device display size, and (2) conversion ofthe functional markup language to the markup language indicated in the user request wherein the converted markup language is formatted to user's specific device display size.
29. The computing environment of claim 28 wherein the second tier derived classes include markupHTMLLaptop class for the case where the user's display is a laptop having a 640x480 pixel screen size, markupHTMLDesktop class for the case where the user's display is a desktop having a 1024x768 pixel screen size, markup WMLSmallPhone for the case where the user's display is a WAP phone having a three lines deep screen size, and markup WMLBigPhone for the case where the user's display is a WAP phone having an eight line deep screen size.
30. The computing environment of claim 1 wherein 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.
31. The computing environment of claim 1 wherein the sub-process for manipulating includes a sub-process for writing data provided by a user to the database in response to a user request identifying one of a plurality of markup languages.
32. The computing environment of claim 31 wherein the sub-process for writing data comprises: a sub-process for inserting newly received data; and a sub-process for updating data previously stored in the database.
33. A system in a computing environment having a connection to a network, comprising: means for manipulating data in connection with a database in response to a user request identifying one of a plurality of markup languages; means 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 means for converting the data organized in the functional markup language into a presentation format of the markup language indicated in the user request.
34. The system of claim 33 wherein the means for manipulating includes a means for retrieving data from the database.
35. The system of claim 34 wherein the means 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.
36. The system of claim 34 wherein the means 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.
37. The system of claim 36 wherein the means for organizing provides a page of functional markup language function tags upon receiving the retrieved data.
38. The system of claim 37 wherein the class library executes and expands each functional markup tag to a corresponding tag type or block of tag types in the markup language indicated by the user request.
39. The system of claim 38 wherein the corresponding tag type or block of tag types is mixed with free text.
40. The system of claim 37 wherein each of the conversion routines in the class library can be overridden by a software developer.
41. The system of claim 37 wherein the conversion routines in the class library are overridden 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.
42. The system of claim 36 wherein the class library is a Java class library.
43. The system of claim 34 wherein the functional markup language defines a group of markup language style function calls laid out as markup language tags within programmable server pages.
44. The system of claim 43 wherein the programmable server pages are Java Server Pages or Active Server Pages.
45. The system of claim 43 wherein upon executing each function call a block of markup language text is produced in the markup language indicated by the user request.
46. The system of claim 33 wherein the plurality of markup languages includes HTML, HDML, WML, and VXML.
47. The system of claim 37 wherein a page of markup language text is constructed in the markup language indicated by the user request by executing the page of function tags using a Java server page interpreter.
48. The system of claim 47 wherein the page of markup language text is constructed by invoking an appropriate conversion function for each successive tag in the page of function tags.
49. The system of claim 34 wherein the means for manipulating includes functionality to process the data retrieved from the database.
50. The system of claim 34 wherein the means for manipulating formats the data retrieved from the database in a XML format.
51. The system of claim 33 wherein each of the means for manipulating and means for organizing is implemented using a stand-alone code.
52. The system of claim 33 wherein the means for manipulating and means for organizing are implemented as separate modules or objects or subroutines of one program.
53. The system of claim 33 wherein 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.
54. The system of claim 34 wherein the page of functional markup language function tags includes one or more of function tags: "startMarkup", "endMarkup", "startCard", "endCard", "startBlock", "endBlock", "dolnput", "doSelect", "startText", "endText", "addText", and "doLinks".
55. The system of claim 54 wherein the one or more function tags are parameterized according to the data retrieved from the database.
56. The system of claim 33 further comprising a means for returning the data converted into a presentation format ofthe markup language indicated by the client request to a user who generated the user request.
57. The system of claim 33 wherein the presentation format is one which can be expressed as a Document Type Definition (DTD) of Extensible Markup Language (XML).
58. The system of claim 34 wherein the means for manipulating converts text identifiers for text expressions into text specifically tailored to the display constraints ofthe markup language indicated by the user request and expressed as display text in the markup language indicated by the user request.
59. The system of claim 34 wherein the means for manipulating converts text identifiers for text expressions into text specifically tailored to the display constraints ofthe markup language indicated by the user request, expressed in a national language indicated by the user request, and expressed as display text in the markup language indicated by the user request.
60. The system of claim 33 wherein the class library has a first tier . derived classes and a second tier derived classes, the first tier derived classes being for supporting conversion ofthe functional markup language to the markup language indicated in the user request, and the second tier derived classes being for supporting: (1) further formatting of a first tier-converted functional markup language to a user's specific device display size, and (2) conversion ofthe functional markup language to the markup language indicated in the user request wherein the converted markup language is formatted to user's specific device display size.
61. The system of claim 60 wherein the second tier derived classes include markupHTMLLaptop class for the case where the user's display is a laptop having a 640x480 pixel screen size, markupHTMLDesktop class for the case where the user's display is a desktop having a 1024x768 pixel screen size, markup WMLSmallPhone for the case where the user's display is a WAP phone having a three lines deep screen size, and markup WMLBigPhone for the case where the user's display is a WAP phone having an eight line deep screen size.
62. The system of claim 33 wherein the means for manipulating comprises: means for retrieving data from the database; means for updating data previously stored in the database; and means for inserting new data in the database.
63. The system of claim 33 wherein the means for manipulating includes a means for writing data provided by a user to the database in response to a user request identifying one of a plurality of markup languages.
64. The system of claim 63 wherein the means for writing data comprises: means for inserting newly received data; and means for updating data previously stored in the database.
65. A method for processing information in a computing environment having a connection to a network, comprising: manipulating data in connection with a database in response to a user request identifying one of a plurality of markup languages; 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 converting the data organized in the functional markup language into a presentation format ofthe markup language indicated in the user request.
66. The method of claim 65 wherein the manipulating step comprises retrieving data from the database.
67. The method of claim 66 wherein the organizing step comprises indicating which combination of the predefined group of generic user interface activities is to be used in returning the retrieved data in response to the user request.
68. The method of claim 66 wherein the converting step comprises converting expressions in the functional markup language into the markup language indicated by the user request using a class library of conversion routines.
69. The method of claim 68 wherein the organizing step comprises providing a page of functional markup language function tags upon receiving the retrieved data.
70. The method of claim 69 wherein the step of converting expressions in the functional markup language into the markup language indicated by the user request using a class library of conversion routines comprises executing each functional markup tag to expand the functional markup tag to a corresponding tag type or block of tag types in the markup language indicated by the user request.
71. The method of claim 69 wherein the corresponding tag type or block of tag types is mixed with free text.
72. The method of claim 69 further comprising overriding each ofthe conversion routines in the class library.
73. The method of claim 69 further comprising overriding the conversion routines in the class library for enabling 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.
74. The method of claim 68 wherein the class library is a Java class library.
75. The method of claim 66 wherein the functional markup language defines a group of markup language style function calls laid out as markup language tags within programmable server pages.
76. The method of claim 75 wherein the programmable server pages are Java Server Pages or Active Server Pages.
77. The method of claim 75 further comprising executing each function call for producing a block of markup language text in the markup language indicated by the user request.
78. The method of claim 65 wherein the plurality of markup languages includes HTML, HDML, WML, and VXML.
79. The method of claim 69 further comprising executing the page of function tags using a Java server page interpreter for constructing a page of markup language text in the markup language indicated by the user request by.
80. The method of claim 79 further comprising constructing the page of markup language text by invoking an appropriate conversion function for each successive tag in the page of function tags.
81. The method of claim 66 wherein a manipulating servlet is used to implement the manipulating step, the manipulating servlet including functionality to process the data retrieved from the database.
82. The method of claim 66 wherein the manipulating step comprises formatting the data retrieved from the database in a XML format.
83. The method of claim 65 wherein each of the manipulating and the organizing steps is implemented using a stand-alone code.
84. The method of claim 65 wherein the manipulating step and organizing step are implemented as separate modules or objects or subroutines of one program.
85. The method of claim 65 wherein 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.
86. The method of claim 66 wherein the page of functional markup language function tags includes one or more of function tags: "startMarkup", "endMarkup", "startCard", "endCard", "startBlock", "endBlock", "dolnput", "doSelect", "startText", "endText", "addText", and "doLinks".
87. The method of claim 86 further comprising parameterizing the one or more function tags are according to the data retrieved from the database.
88. The method of claim 65 further comprising returning the data converted into a presentation format ofthe markup language indicated by the client request to a user who generated the user request.
89. The method of claim 65 wherein the presentation format is one which can be expressed as a Document Type Definition (DTD) of Extensible Markup Language (XML).
90. The method of claim 66 wherein the manipulating step comprises converting text identifiers for text expressions into text specifically tailored to the display constraints ofthe markup language indicated by the user request and expressed as display text in the markup language indicated by the user request.
91. The method of claim 66 wherein the manipulating step comprises converting text identifiers for text expressions into text specifically tailored to the display constraints ofthe markup language indicated by the user request, expressed in a national language indicated by the user request, and expressed as display text in the markup language mdicated by the user request.
92. The method of claim 65 wherein the class library has a first tier derived classes and a second tier derived classes, the first tier derived classes supporting conversion ofthe functional markup language to the markup language indicated in the user request, and the second tier derived classes supporting: (1) further formatting of a first tier-converted functional markup language to a user's specific device display size, and (2) conversion ofthe functional markup language to the markup language indicated in the user request wherein the converted markup language is formatted to user's specific device display size.
93. The method of claim 92 wherein the second tier derived classes include markupHTMLLaptop class for the case where the user's display is a laptop having a 640x480 pixel screen size, markupHTMLDesktop class for the case where the user's display is a desktop having a 1024x768 pixel screen size, markup WMLSmallPhone for the case where the user's display is a WAP phone having a three lines deep screen size, and markup WMLBigPhone for the case where the user's display is a WAP phone having an eight line deep screen size.
94. The method of claim 65 wherein the manipulating step comprises: retrieving data from the database; updating data previously stored in the database; and inserting new data in the database.
95. The method of claim 65 wherein the manipulating step comprises writing data provided by a user to the database in response to a user request identifying one of a plurality of markup languages.
96. The method of claim 95 wherein the step of writing data comprises: inserting newly received data; and updating data previously stored in the database.
PCT/US2001/042488 2000-10-05 2001-10-04 Software isolation of presentation and mark-up language using intermediate function language and library WO2002029609A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2002213442A AU2002213442A1 (en) 2000-10-05 2001-10-04 Software isolation of presentation and mark-up language using intermediate function language and library

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US68057000A 2000-10-05 2000-10-05
US09/680,570 2000-10-05

Publications (1)

Publication Number Publication Date
WO2002029609A1 true WO2002029609A1 (en) 2002-04-11

Family

ID=24731639

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/042488 WO2002029609A1 (en) 2000-10-05 2001-10-04 Software isolation of presentation and mark-up language using intermediate function language and library

Country Status (2)

Country Link
AU (1) AU2002213442A1 (en)
WO (1) WO2002029609A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009410A (en) * 1997-10-16 1999-12-28 At&T Corporation Method and system for presenting customized advertising to a user on the world wide web
US6085198A (en) * 1998-06-05 2000-07-04 Sun Microsystems, Inc. Integrated three-tier application framework with automated class and table generation
US6092078A (en) * 1998-04-24 2000-07-18 Axis Communications Ab Method and apparatus for interfacing network peripheral devices with a browser

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009410A (en) * 1997-10-16 1999-12-28 At&T Corporation Method and system for presenting customized advertising to a user on the world wide web
US6092078A (en) * 1998-04-24 2000-07-18 Axis Communications Ab Method and apparatus for interfacing network peripheral devices with a browser
US6085198A (en) * 1998-06-05 2000-07-04 Sun Microsystems, Inc. Integrated three-tier application framework with automated class and table generation

Also Published As

Publication number Publication date
AU2002213442A1 (en) 2002-04-15

Similar Documents

Publication Publication Date Title
US8250467B2 (en) Deriving menu-based voice markup from visual markup
JP5551938B2 (en) Method and apparatus for providing information content to be displayed on a client device
US7505978B2 (en) Aggregating content of disparate data types from disparate data sources for single point access
US7281060B2 (en) Computer-based presentation manager and method for individual user-device data representation
US6961737B2 (en) Serving signals
Phanouriou Uiml: a device-independent user interface markup language
US7216298B1 (en) System and method for automatic generation of HTML based interfaces including alternative layout modes
US6732142B1 (en) Method and apparatus for audible presentation of web page content
US8627344B2 (en) Methods and apparatuses for user interface management
US20010043234A1 (en) Incorporating non-native user interface mechanisms into a user interface
US20030029911A1 (en) System and method for converting digital content
US20030050931A1 (en) System, method and computer program product for page rendering utilizing transcoding
US20020174147A1 (en) System and method for transcoding information for an audio or limited display user interface
US20070192674A1 (en) Publishing content through RSS feeds
US20030101413A1 (en) Smart links
US20070192684A1 (en) Consolidated content management
US20070192683A1 (en) Synthesizing the content of disparate data types
WO2001095123A1 (en) System and method for accessing, organizing, and presenting data
KR20050119645A (en) Program creation by combining web services using graphic user interface controls
US20060020917A1 (en) Method for handling a multi-modal dialog
WO2007051707A2 (en) Dynamic creation of user interfaces for data management and data rendering
WO2001057652A2 (en) Method and system for building internet-based applications
US7107279B2 (en) Rapid development in a distributed application environment
US7831905B1 (en) Method and system for creating and providing web-based documents to information devices
WO2002029609A1 (en) Software isolation of presentation and mark-up language using intermediate function language and library

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE 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 NO NZ PH PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE 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
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP