CROSS-REFERENCE TO RELATED APPLICATIONThis application relates to two applications, Ser. Nos. 09/458,646 and 09/458,648, now U.S. Pat. Nos. 6,829,746 and 6,725,424 respectively filed on the same day as the present application and entitled “ELECTRONIC DOCUMENT DELIVERY SYSTEM EMPLOYING DISTRIBUTED DOCUMENT OBJECT MODEL (DOM) BASED TRANSCODING” and “ELECTRONIC DOCUMENT DELIVERY SYSTEM EMPLOYING DISTRIBUTED DOCUMENT OBJECT MODEL (DOM) BASED TRANSCODING AND PROVIDING ASSISTIVE TECHNOLOGY SUPPORT” by Richard S. Schwerdtfeger, Lawrence F. Weiss, and Rabindranath Dutta.
BACKGROUND OF THE INVENTION1. Field of the Invention
This invention relates to systems for providing electronic documents, and more particularly to document delivery systems wherein servers transcode documents delivered to client machines.
2. Description of Related Art
The World Wide Web, known simply as the “Web”, is a network of Internet servers that provide specially formatted electronic documents to various “client” machines. Web servers currently support documents formatted in a text-based markup language called hypertext markup language (HTML).
In order to provide Web access to client machines with limited capabilities (e.g., palmtop or handheld computers), a “transcoder proxy” is typically positioned between the client machine and an Internet server. The transcoder proxy may, for example, provide selected portions of a requested Web document to the client machine based upon the capabilities of the client machine. In doing so, the transcoder proxy may translate one or more selected portions of the Web document from one digital format to another.
FIG. 1 is a block diagram of arepresentative system10 currently used to provide an electronic document12 (e.g., a Web page) to aclient machine14 with limited capabilities.Client machine14 may be, for example, a palmtop or handheld computer with limited memory, processing capability, and/or display capability.System10 includes aninternet server16, and atranscoder proxy18 interposed betweenclient machine14 andinternet server16.Transcoder proxy18 forwards a request fordocument12 fromclient machine14 tointernet server16. Such a request typically includes a uniform resource locator (URL) ofdocument12 specifying the internet protocol (IP) address ofdocument12 and the name of thefile containing document12.
Internet server16fetches document12 and providesdocument12 totranscoder proxy18. Based upon the capabilities ofclient machine14,transcoder proxy18 may translate or “transcode” one or more selected portions ofdocument12 from one digital format to another. For example,transcoder proxy18 may transcode a portion ofdocument12 from HTML to a script written in a scripting language understood by a Web browser application program running withinclient machine14. The Web browser program may use information conveyed by the script to present the one or more selected portions ofdocument12 upon a display device ofclient machine14.
Alternately,client machine14 may include a text-to-speech converter, and the information conveyed by the script may be used to output the one or more selected portions ofdocument12 as speech through a speaker ofclient machine14. The term “assistive technology” is used herein to describe technology that helps physically challenged individuals access to a computer system (e.g., client machine14). Well known types of assistive technologies include “screen readers” which convert display information to speech, “screen magnifiers” which enlarge features of portions of display screen contents, and voice recognition software which converts speech to a digital representation of text or commands.
Computer language code or “script” which modifies visual presentations of electronic documents in response to user input is increasingly being included within electronic documents. Such interactive aspects of electronic documents are used to provide, for example, Web site navigation information in response to user input. JAVASCRIPT (™ Netscape Comm. Corp., Mountain View, Calif.) is a well known cross-platform, object-based scripting language for client and server applications. JAVASCRIPT is commonly used to add interactive aspects to electronic documents such as Web pages.
The Document Object Model (DOM) is an application programming interface (API) for “documents”. The World Wide Web Consortium (W3C) has authored a DOM specification available on the Web at URL http://www.w3.org/. The DOM defines the logical structure of documents and the way a document is accessed and manipulated. In the DOM specification, the term “document” is used in the broad sense. Increasingly, XML is being used as a way of representing many different kinds of information that may be stored in diverse systems. Much of this information would traditionally be seen as data rather than as documents.
In the DOM, documents have a logical structure which is very much like a tree. To be more precise, the logical structure is like a “forest” or “grove”, which can contain more than one tree. However, the DOM specification does not require that documents be implemented as a tree or a grove, nor does it specify how the relationships among objects be implemented. The DOM is a logical model that may be implemented in any convenient manner. In the DOM specification, the term “structure model” is used to describe the tree-like representation of a document. Terms like “tree” or “grove” are not used to avoid implying a particular implementation. One important property of DOM structure models is structural isomorphism. If any two DOM implementations are used to create a representation of the same document, they will create the same structure model, with precisely the same objects and relationships.
In current document delivery systems, a problem arises in that many client machines do not support interactive aspects of electronic documents such as Web pages due to resource limitations. As a result,transcoding proxy18 may be configured to remove any computer language code or script within the one or more selected portions of an electronic document provided toclient machine14. Web site navigation capability may be lost, and with it the ability to access Web site information. Additionally, a client machine may not have sufficient resources to provide an assistive technology solution for a physically challenged user.
It would thus be desirable to have an electronic document delivery system which allows a client machine with limited resources to provide interactive aspects of electronic documents such as Web pages and/or an assistive technology solution for a physically challenged user. The desired document delivery system may use the document object model (DOM) to define a logical structure of an electronic document, and to access and manipulate the electronic document.
SUMMARY OF THE INVENTIONSeveral different embodiments of an electronic document delivery system are described including a client machine coupled to (i.e., in wired or wireless communication with) a transcoder proxy. The client machine may be, for example, a palmtop or handheld computer or a wireless communication device with limited memory and/or processing capability. The transcoder proxy is coupled to receive electronic documents. The electronic documents are expressed in a first digital format (e.g., a text-based markup language such as HTML or XML). Each electronic document includes at least one element.
In one embodiment of the document delivery system, a JAVASCRIPT event is associated with one of the document elements, and the element includes JAVASCRIPT code executed in response to the JAVASCRIPT event. The transcoder proxy assigns a unique identifier to the element, and forms a model of a logical structure of the electronic document. The model may also define methods for accessing and manipulating the document. The model may be, for example, a document object model (DOM).
The transcoder proxy uses the model to produce an “original” script. The original script includes at least a portion of the electronic document expressed in a second digital format (e.g., a scripting language). The original script includes the document element and the identifier assigned to the element. The original script may also include a code value associated with the JAVASCRIPT event. The code value may be associated with the element within the original script. The transcoder proxy provides the original script to the client machine.
The client machine receives the original script, and uses the original script to present the portion of the electronic document. The client machine also associates the JAVASCRIPT event with the element (e.g., via the code value). The client machine generates the JAVASCRIPT event in response to user input. The client machine provides JAVASCRIPT event information and the identifier assigned to the element associated with the JAVASCRIPT event to the transcoder proxy. The JAVASCRIPT event information may include the code value associated with the JAVASCRIPT event.
Elements of the electronic document are associated with corresponding identifiers within the model. The transcoder proxy uses the JAVASCRIPT event information and the identifier provided by the client machine to access the element and the JAVASCRIPT code within the model. The transcoder proxy executes the JAVASCRIPT code, thereby producing a result. The transcoder proxy uses the model and the result to produce a “modification” script, wherein the modification script differs from the original script. The transcoder proxy provides the modification script to the client machine. The client machine receives the modification script, and uses the modification script to modify the presented portion of the electronic document.
One embodiment of the transcoder proxy includes a synchronous document object model (DOM) generator coupled to a transcoder and a JAVASCRIPT engine. The synchronous (DOM) generator is adapted to receive the electronic document, and includes an identifier (ID) generator for assigning the unique identifier to each element of the electronic document. The synchronous DOM generator forms a pre-transcoded DOM representing the logical structure of the electronic document. The pre-transcoded DOM also defines methods for accessing and manipulating the document. Within the pre-transcoded DOM, document elements are associated with corresponding identifiers. The synchronous DOM generator provides a first portion of the electronic document to the transcoder in the first digital format.
The transcoder receives the first portion of the electronic document in the first digital format, and translates the first portion of the electronic document from the first digital format to the original script in the second digital format. The original script includes the element and the identifier assigned to the element. As described above, the original script may also include the code value associated with the JAVASCRIPT event. The code value may be associated with the element within the original script. The transcoder provides the original script (e.g., to a client machine).
The JAVASCRIPT engine is coupled to the synchronous DOM generator and adapted to receive input JAVASCRIPT event information and an input identifier. The JAVASCRIPT engine uses the input identifier to access an element within the pre-transcoded DOM. The JAVASCRIPT engine may use the input JAVASCRIPT event information to access the JAVASCRIPT code of the element. The JAVASCRIPT engine executes the JAVASCRIPT code, thereby producing a result. The JAVASCRIPT engine provides the result to the synchronous DOM generator. The synchronous DOM generator uses the pre-transcoded DOM and the result to produce a second portion of the electronic document, and provides the second portion to the transcoder. The transcoder receives the second portion of the electronic document in the first digital format, translates the second portion from the first digital format to a modification script in the second digital format, and provides the modification script (e.g., to the client machine).
One embodiment of the client machine includes an output device (e.g., a display device or a text-to-speech converter), and a user agent coupled to the output device. The user agent is adapted for coupling to a transcoder proxy. The user agent receives the original script from the transcoder proxy including the element and the identifier assigned to the element. The user agent forms a transcoded DOM in response to the original script, wherein the transcoded DOM is a representation of the portion of the electronic document. The user agent uses the transcoded DOM to produce output commands, and provides the output commands to the output device.
As described above, the original script may also include a code value associated with the JAVASCRIPT event. The code value may be associated with the element within the original script. The user agent may use the code value to associate the JAVASCRIPT event with the identifier assigned to the element.
The user agent generates the JAVASCRIPT event in response to user input, and provides JAVASCRIPT event information and the associated identifier to the transcoder proxy. As described above, the JAVASCRIPT event information may include the code value associated with the JAVASCRIPT event. The user agent receives the modification script from the transcoder proxy, and modifies the transcoded DOM in response to the modification script.
A method for transcoding an electronic document, which may be embodied within the transcoder proxy, includes receiving the electronic document in the first digital format. A unique identifier is assigned to the element. A model of a logical structure of the electronic document is formed, including the element and the identifier assigned to the element. The model may also define methods for accessing and manipulating the document. The model may be, for example, a document object model (DOM). The model is used to produce a script, wherein the script includes at least a portion of the document expressed in the second digital format. The script includes the element and the identifier assigned to the element. The script may also include a code value associated with the JAVASCRIPT event. The code value may be associated with the element within the script. The script is provided (e.g., to a client machine).
A first method for presenting an electronic document, which may be embodied within the transcoder proxy, includes the above transcoding method. The script produced by the transcoding method may be the original script described above. The first method also includes receiving input JAVASCRIPT event information and an input identifier assigned to an element associated with the JAVASCRIPT event. The element corresponding to the input identifier is accessed within the model using the input identifier. The JAVASCRIPT code of the element may be accessed using the input JAVASCRIPT event information. The JAVASCRIPT code is executed, thereby producing a result. The model and the result are used to produce the modification script, wherein the modification script differs from the original script. The modification script is provided (e.g., to the client machine).
A second method for presenting an electronic document, which may be embodied within the client machine, includes receiving the original script including at least a portion of the electronic document expressed in a digital format (e.g., a scripting language). As described above, the original script includes an element of the document and an identifier assigned to the element. The original script may also include a code value associated with the JAVASCRIPT event. The code value may be associated with the element within the original script. The original script is used to present the portion of the electronic document. The JAVASCRIPT event is associated with the identifier (e.g., via the code value). The JAVASCRIPT event is generated in response to user input, and JAVASCRIPT event information and the identifier are provided (e.g., to a transcoder proxy). As described above, the JAVASCRIPT event information may include the code value associated with the JAVASCRIPT event. The modification script is received (e.g., from the transcoder proxy), and used to modify the presented portion of the electronic document.
BRIEF DESCRIPTION OF THE DRAWINGSOther objects and advantages of the invention will become apparent upon reading the following detailed description and upon reference to the accompanying drawings in which:
FIG. 1 is a block diagram of a representative system currently used to provide an electronic document (e.g., a Web page) to a client machine with limited capabilities;
FIG. 2 is a block diagram of a first embodiment of a system for providing an electronic document (e.g. a Web page) to a client machine;
FIG. 3 is a flow chart of one embodiment of a method for presenting an electronic document;
FIG. 4 is a block diagram of a second embodiment of the system ofFIG. 2, wherein the system includes a JAVASCRIPT engine in order to provide interactive JAVASCRIPT support; and
FIG. 5 is a block diagram of a third embodiment of the system ofFIG. 2, wherein the system includes additional elements to provide assistive technology support.
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTSFIG. 2 is a block diagram of a first embodiment of asystem20 for providing electronic document12 (e.g., a Web page) to aclient machine22. In the embodiment ofFIG. 2,client machine22 includes anoutput device24.Output device24 may include a relatively small display device with limited display capabilities.Output device24 may also include a speaker for producing speech.Client machine22 may be, for example, a palmtop or handheld computer or a wireless communication device with limited memory and/or processing capability.
In the embodiment ofFIG. 2,system20 includesinternet server16 and aninterim server26 coupled betweenclient machine22 andinternet server16.Interim server26 includes a transcoder proxy28. Transcoder proxy28 forwards electronic document requests fromclient machine22 tointernet server16. Transcoder proxy28 receives electronic documents (e.g., document12) frominternet server16 in digital format. Well known digital formats include text-based markup language formats such as hypertext markup language (HTML) and extensible markup language (XML). Other common digital formats include POSTSCRIPT (™ Adobe Sys. Inc., San Jose, Calif.), portable document format (PDF), and advanced function printing (AFP). Transcoder proxy28 includes a synchronous document object model (DOM)generator30 coupled to atranscoder32 and auser interface generator34.Synchronous DOM generator30 receives electronic documents frominternet server16, and includes an identifier (ID)generator36.
In response toelectronic document12 provided byinternet server16, synchronous DOM generator produces apre-transcoded DOM38.Electronic document12 includes one or more elements representing document structures. Examples of document elements include paragraphs, hypertext links, lists, tables, and images.ID generator36 assigns a unique identifier to each element ofelectronic document12.Pre-transcoded DOM38 defines a tree-like logical structure ofdocument12, and also defines methods for accessing and manipulatingdocument12. Withinpre-transcoded DOM38, elements ofelectronic document12 are associated with their identifiers. As will be described in more detail below,pre-transcoded DOM38 facilitates navigation of the logical structure ofelectronic document12.Pre-transcoded DOM38 preferably complies with the World Wide Web Consortium (W3C) DOM specification available on the Web at URL http://www.w3.org/.
Synchronous DOM generator30 provides at least a portion (e.g., a first portion) ofdocument12 to be displayed or otherwise presented to the user byclient machine22 totranscoder32.Transcoder32 translates the first portion ofdocument12 from one digital format to another. For example,transcoder32 may translate the first portion ofdocument12 from a first digital format (e.g., HTML) to a script expressed in a second digital format (e.g., a scripting language understood by auser agent40 within client machine22).
The scripting language may be, for example, a subset of the digital format in which transcoder proxy28 receivesdocument12 from internet server16 (e.g., a subset of HTML, XML, POSTSCRIPT, PDF, or AFP). In producing the script, transcoder proxy28 may convert graphics images withinelectronic document12 from one format to another (e.g., from joint photographic experts group/JPEG format to graphics interchange format/GIF format, from JPEG and GIF formats to scaled vector graphics/SVG format, etc.). The script may also include audio data files (e.g., wav files), transcoded Braille, and/or unformatted text.
Transcoder32 provides the produced “original” script touser agent40 ofclient machine22. The original script includes a description of the elements within the first portion ofdocument12. The original script also includes the identifiers assigned to the elements within the first portion ofdocument12.
In response to the received original script,user agent40 ofclient machine22 produces a transcodedDOM42.Transcoded DOM42 contains a representation of the elements of the first portion ofdocument12 to be displayed or otherwise presented viaoutput device24. Within transcodedDOM42, elements of the portion ofdocument12 are associated with their identifiers.User agent40 uses transcodedDOM42 to issue output commands tooutput device24. As described above,output device24 may include a relatively small display device with limited display capabilities.Output device24 may also include a speaker for producing speech.
Client machine22 also includes aninput device44 coupled touser agent40.Input device44 may be, for example, one or more keys or buttons, a pointing device such as a mouse, or a speech-to-text converter. The speech-to-text converter may, for example, be the input device of choice for a physically challenged user (e.g., a permanently or temporarily disabled user who cannot operate a conventional input device such as a mouse or a keyboard due to a disability). A user input viainput device44 may causeuser agent40 to generate an event.User agent40 associates an event with an element and the identifier assigned to the element.User agent40 provides an event and the identifier assigned to the event touser interface generator34 within transcoder proxy28.
It is noted thatclient machine22 may include other input, output, and/or input/output (I/O) devices not shown. It is also noted thatinput device44 andoutput device24 may be a combined I/O device, such as a speech engine which converts digital signals representing text to speech and also converts speech to digital signals representing text, or a touch screen I/O device which includes a visual display screen and accepts user input via pressure applied to the display screen (e.g., via a stylus).
User interface generator34 may use the event and the identifier to produce DOM access commands, and may provide the DOM access commands tosynchronous DOM generator30. Synchronous DOM generator may use the DOM access commands to access one or more elements withinpre-transcoded DOM38.Synchronous DOM generator30 may modifypre-transcoded DOM38 in response to the DOM access commands.
Alternately,user interface generator34 may use the identifier to access the one or more elements withinpre-transcoded DOM38.User interface generator34 may modifypre-transcoded DOM38 in response to the event and the identifier.
In either case, following any modification ofpre-transcoded DOM38,synchronous DOM generator30 provides a modified portion (e.g., a second portion) ofdocument12 to be displayed or otherwise presented to the user byclient machine22 totranscoder32.Transcoder32 translates the second portion ofdocument12 from the first digital format to the second digital format, thereby producing “modification” script. The modification script modifies the first portion ofdocument12 currently displayed or otherwise presented to the user byclient machine22. The modification script includes a description of the elements within the second portion ofdocument12, and the identifiers assigned to the elements within the second portion ofdocument12. In response to the modification script,user agent40 ofclient machine22 modifies transcodedDOM42 and issues new output commands tooutput device24. As a result, the second portion ofdocument12 is displayed or otherwise presented byoutput device24.
For example,input device44 may be a mouse, and a user may position a cursor or pointer at an edge of a displayed portion ofdocument12 via the mouse indicating a desire to have an adjacent portion (i.e., a second portion) ofdocument12 presented.User agent40 may generate an event in response to such positioning of the cursor or pointer.User agent40 may associate the event with a displayed element, and may provide the event and the identifier assigned to the element associated with the event touser interface generator34 within transcoder proxy28.User interface generator34 may provide the event and the associated identifier tosynchronous DOM generator30.Synchronous DOM generator30 uses the identifier to accesspre-transcoded DOM38. As described above,synchronous DOM generator30 may modifypre-transcoded DOM38 in response to the event and the associated identifier.Synchronous DOM generator30 provides the second portion ofdocument12 totranscoder32.Transcoder32 generates modification script which includes a description of the elements and the identifier assigned to each of the elements within the second portion ofdocument12. In response to the modification script,user agent40 ofclient machine22 modifies transcodedDOM42 and issues new output commands tooutput device24. As a result, the second portion ofdocument12 is displayed or otherwise presented byoutput device24.
It is noted that in the embodiment ofFIG. 2, transcoder proxy28 also serves as a “reverse” proxy. Interaction between transcoder proxy28 andclient22 is facilitated by the HTTP 1.1 standard which allows the transmission control protocol/internet protocol (TCP/IP) link to remain operational across multiple requests. As a result, frequent and relatively short client-server exchanges may take place without incurring the overhead of re-establishing a connection betweeninterim server26 andclient22. Interaction between transcoder proxy28 andclient22 may also be conducted using established mechanisms such as cookies, URL re-writing, etc.
FIG. 3 is a flow chart of one embodiment of amethod50 for presenting an electronic document. The electronic document may be, for example, an “interactive” document wherein a presentation of the document (e.g., visual or audible) is dependent upon user input. During astep51, the electronic document is received in a first digital format (e.g., HTML or XML). A unique identifier is assigned to each element of the electronic document during astep52. During astep54, a model of a logical structure is formed of the electronic document. The model may be, for example, a DOM (e.g.,pre-transcoded DOM38 inFIG. 2). During astep56, the model is used to produce the original script including at least a portion of the electronic document expressed in a second digital format (e.g., a scripting language). The original script includes the elements within the portion of the electronic document, along with the identifiers assigned to the elements.
The original script is used to present the portion of the document during astep58. During astep60, an event is generated in response to user input. The event is associated with an element of the document during astep62. During astep64, the model is accessed using the identifier assigned to the element associated with the event. The model may be modified in response to the event and the identifier. Following any modification, the model is used to produce modification script during astep66. During astep68, the modification script is used to modify the presented document.
Insystem20 ofFIG. 2, steps51,52,54,56,64, and66 ofmethod50 may be embodied within transcoder proxy28, and steps58,60,62, and68 may be embodied withinclient machine22.
It is noted that instep58 ofmethod50, the portion of the document may be presented in any number of ways, including audible form (e.g., speech) or tactile form via a Braille display.
FIG. 4 is a block diagram of a second embodiment ofsystem20 for providing electronic document12 (e.g., a Web page) to aclient machine22. In the embodiment ofFIG. 4, transcoder28 includes aJAVASCRIPT engine70 coupled in parallel withuser interface generator34 betweenuser agent40 ofclient machine22 andsynchronous DOM generator30. JAVASCRIPT is a cross-platform, object-based scripting language for client and server applications. The inclusion ofJAVASCRIPT engine70 within transcoder proxy28 reducesclient machine22 resource requirements to support interactive documents including JAVASCRIPT, allowing electronic documents displayed or otherwise presented byclient machine22 to be modified in response to JAVASCRIPT events within the electronic document.
For example, a “mouseover” is a JAVASCRIPT event which may be used to trigger a change in a displayed element (e.g., a graphic) when the cursor or pointer is passed over the displayed element using a mouse. Mouseover events (i.e., mouseovers) are widely used in navigation bars, pop-up boxes, and forms.Document12 may include an element with JAVASCRIPT code which displays data when a mouseover event occurs (i.e., “onmouseover” data). The JAVASCRIPT mouseover event is thus associated with the element. In the embodiment ofFIG. 4, the script produced bytranscoder32 and provided touser agent40 ofclient machine22 includes the element and the identifier assigned to the element.
The script may also include a code value for the mouseover event. The code value may be associated with the element within the script.User agent40 may use the code value to associate the mouseover event with the element.
User agent40 generates the mouseover event when the user passes the cursor or pointer over the displayed element using the mouse.User agent40 associates the mouseover event with the displayed element, and provides mouseover event information and the identifier assigned to the element touser interface generator34 andJAVASCRIPT engine70 within transcoder proxy28. The mouseover event information may include the code value of the mouseover event.User interface generator34 may not recognize the mouseover event information, and may not respond to the mouseover event.
On the other hand,JAVASCRIPT engine70 may recognize the mouseover event information and respond to the mouseover event by accessing the element associated with the mouseover event withinpre-transcoded DOM38 using the identifier.JAVASCRIPT engine70 may use the code value to access the JAVASCRIPT code of the element.JAVASCRIPT engine70 executes the JAVASCRIPT code of the element, thus producing the onmouseover data.JAVASCRIPT engine70 may provide the onmouseover data tosynchronous DOM generator30.Synchronous DOM generator30 may usepre-transcoded DOM38 and the onmouseover data to produce a modified portion (e.g., a second portion) ofdocument12.Synchronous DOM generator30 may provide the second portion ofdocument12, including the “onmouseover” data totranscoder32.
Transcoder32 translates the second portion ofdocument12 from the first digital format to the second digital format, thereby producing modification script including the onmouseover data. The modification script thus includes a description of the elements and the identifier assigned to each of the elements within the second portion ofdocument12 to be displayed or otherwise presented byclient machine22 as a result of the mouseover event. In response to the modification script,user agent40 ofclient machine22 modifies transcodedDOM42 and issues new output commands tooutput device24. As a result, the second portion ofdocument12 is displayed or otherwise presented byoutput device24.
FIG. 5 is a block diagram of a third embodiment ofsystem20 for providing electronic document12 (e.g., a Web page) to aclient machine22. In the embodiment ofFIG. 5, transcoder proxy28 includes an assistivetechnology interface generator72 coupled in parallel withuser interface generator34 betweenuser agent40 ofclient machine22 andsynchronous DOM generator30. In addition,client machine22 includes anassistive technology74 coupled touser agent40.Assistive technology74 may provide an interface betweenuser agent40 and, for example, a device such as a Braille display or a speech engine which converts digital signals representing text to speech and/or converts speech to digital signals representing text. In the embodiment ofFIG. 5,user agent40 uses transcodedDOM42 to issue output commands toassistive technology74. In response to the output commands,assistive technology74 may produce commands for a device coupled toassistive technology74.
Common Braille displays include a linear array of output cells (e.g., 40, 66, or 80 cells). Each cell has either six pins, arranged two pins wide by three pins high, or eight pins arranged two pins wide by four pins high. Pins of a given cell are raised such that they extend from vertical holes to form patterns representing, for example, letters, numbers, punctuation, and/or Braille composition signs. Common Braille displays also include keys or buttons for user input which allow a user to navigate through an electronic document (e.g., a Web document).
A Braille display may be coupled toassistive technology74. In this case, a user may press a “next line” button on the Braille display in order for a next line ofdocument12 to be presented.Assistive technology74 may provide a signal touser agent40 indicating that the “next line” button was pressed.User agent40 may generate an “assistive technology” event in response.User agent40 may associate the assistive technology event with an element, and may provide assistive technology event information and the identifier assigned to the element associated with the event touser interface generator34 and assistivetechnology interface generator72 within transcoder proxy28. The assistive technology event information may include a code value assigned to the “next line” assistive technology event.User interface generator34 may not recognize the assistive technology event information, and may not respond to the assistive technology event.
On the other hand, assistivetechnology interface generator72 may recognize the assistive technology event information and respond to the assistive technology event. Assistivetechnology interface generator72 may use the assistive technology event information and the identifier to produce DOM access commands, and may provide the DOM access commands tosynchronous DOM generator30.Synchronous DOM generator30 may use the DOM access commands to access one or more elements withinpre-transcoded DOM38.Synchronous DOM generator30 may modifypre-transcoded DOM38 in response to the DOM access commands.
Alternately, assistivetechnology interface generator72 may use the identifier associated with the element to access the one or more elements withinpre-transcoded DOM38. Assistivetechnology interface generator72 may modifypre-transcoded DOM38 in response to the assistive technology event information and the identifier.
In either case, following any modification ofpre-transcoded DOM38,synchronous DOM generator30 provides the requested next line portion ofdocument12 totranscoder32.Transcoder32 translates the next line portion ofdocument12 from the first digital format to the second digital format, thereby producing modification script. The modification script thus includes a description of the elements and the identifier assigned to each of the elements within the next line portion ofdocument12 to be provided to the Braille display viaassistive technology74 as a result of the assistive technology event. In response to the modification script,user agent40 ofclient machine22 modifies transcodedDOM42 and issues new output commands toassistive technology74 and/oroutput device24.Assistive technology74 may use the output commands to produce Braille display commands, and provide the Braille display commands to the Braille device. As a result, the next line portion ofdocument12 is displayed by the Braille device. The next line portion ofdocument12 may also be displayed or otherwise presented byoutput device24.
Whereassistive technology74 is a screen reader, the user may, for example, press a “next line” button in order for a “next line” portion ofdocument12 to be presented. Assistive technology may provide one or more signals touser agent40 indicating that the “next line” button was pressed.User agent40 may generate an assistive technology event in response, associate the assistive technology event with an element, and provide assistive technology event information and the identifier assigned to the element touser interface generator34 and assistivetechnology interface generator72.User interface generator34 may not recognize the assistive technology event information, and may not respond to the assistive technology event. On the other hand, assistivetechnology interface generator72 may recognize and respond to the assistive technology event as described above.
Assistive technology74 withinclient machine22 may cooperate with assistivetechnology interface generator72 within transcoder proxy28. For example, whereassistive technology74 may be a screen reader, and the user may press a button in order to make the screen reader “talk faster”. In response,assistive technology74 may produce “talk faster” request signals, and may provide the “talk faster” request signals touser agent40.User agent40 may forward the “talk faster” request signals to assistivetechnology interface generator72. Assistivetechnology interface generator72 may respond to the “talk faster” request signals by producing one or more commands which, when executed byassistive technology74, cause the screen reader to produce speech at a faster rate. Assistivetechnology interface generator72 may provide the commands toassistive technology74 viauser agent40.
In the embodiment ofFIG. 5, an assistive technology solution is divided betweenassistive technology74 located withinclient machine22 and assistivetechnology interface generator72 located withininterim server26. The inclusion of assistivetechnology interface generator72 withininterim server26 reducesclient machine22 resource requirements to support the assistive technology solution, thereby allowing the assistive technology solution to include a client machine with limited capabilities that may otherwise preclude the assistive technology solution.
In other embodiments ofsystem20, transcoder proxy28 may be located withinclient machine22. In such cases, transcoder proxy28 may not be technically a “proxy”, but simply a transcoder. For example,client machine22 may be a desktop computer system including a transcoder performing the functions of transcoder proxy28 as described above.
It will be appreciated by those skilled in the art having the benefit of this disclosure that this invention is believed to be an electronic document delivery system which allows a client machine with limited resources to provide interactive aspects of electronic documents such as Web pages and/or an assistive technology solution for a physically challenged user. It is intended that the following claims be interpreted to embrace all such modifications and changes and, accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.