US20030140045A1 - Providing a server-side scripting language and programming tool - Google Patents

Providing a server-side scripting language and programming tool Download PDF

Info

Publication number
US20030140045A1
US20030140045A1 US10/191,361 US19136102A US2003140045A1 US 20030140045 A1 US20030140045 A1 US 20030140045A1 US 19136102 A US19136102 A US 19136102A US 2003140045 A1 US2003140045 A1 US 2003140045A1
Authority
US
United States
Prior art keywords
document
command
script
server
interpreter
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US10/191,361
Inventor
Troy Heninger
Rama Rasmussen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BROWZ LLC
Original Assignee
Troy Heninger
Rama Rasmussen
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 Troy Heninger, Rama Rasmussen filed Critical Troy Heninger
Priority to US10/191,361 priority Critical patent/US20030140045A1/en
Publication of US20030140045A1 publication Critical patent/US20030140045A1/en
Assigned to BROWZ GROUP, LC reassignment BROWZ GROUP, LC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROWZ.COM L.L.C.
Assigned to BROWZ LLC reassignment BROWZ LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROWZ GROUP, LC
Assigned to SILICON VALLEY BANK reassignment SILICON VALLEY BANK SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROWZ LLC
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Definitions

  • the present invention relates generally to the field of dynamic computer document creation.
  • the present invention relates to a scripting language and method of use that provides for the use of script codes in a document formatted for an independent application.
  • Implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands.
  • the Internet is a worldwide network of computers that is now accessible to almost any potential user with a computer having network access.
  • ISP's Internet Service Providers
  • WWW World Wide Web
  • the Web allows access to information and documents using “hypermedia” or “hypertext” links embedded into the document.
  • This linking system allows documents to be accessed and linked in a “non-linear” fashion, which allows a user to “jump” from one point in a document to another simply by selecting the link. It also allows jumping from one document to another whether the documents are preserved on the same computer or on another computer across the world.
  • Documents available on the WWW include text, sound, graphics images, and even full-motion video.
  • Hypertext Markup Language a specialized document formatting language, is typically used to create and format documents for viewing and linking on the Web.
  • HTML uses special tags or codes embedded into a text document that format the document and allow linking to other documents or other locations in the same document. These links may also access files, such as sound files or graphics files that are played or displayed upon selection of a link.
  • a document in an HTML format available on the Web is typically referred to as a “Web page” or “Web site.”
  • the WWW also implements a unique addressing system that allocates an address or Uniform Resource Locator (URL) for each document on the Web so that Web documents may be selectively accessed, sorted and indexed.
  • URL Uniform Resource Locator
  • a computer with a dedicated connection to the Internet and specialized server software that enables Web access is called a “Web server.”
  • Web documents are located on storage devices connected to Web servers.
  • a person seeking access to a Web page uses a computer with “Web browser” software that allows access to specified URL's as well as searching and other functions.
  • Web pages may also exist as dynamic documents that change or update themselves when conditions are met. Dynamic documents may update themselves each time they are accessed. This is achieved by allowing the server to execute a program when a given URL is accessed.
  • CGI Common Gateway Interface
  • server side programs Programs that reside on the server and are invoked by requests from client browser applications are referred to as “server side” programs. After these programs are run and the page is modified thereby, the newly modified “dynamic” page is sent to the browser which requested the page so it can be displayed to the user.
  • Another method for providing a dynamic Web page employs programs that are not operating system specific. These programs can be executed on any operating system supported by the programming language.
  • One very popular example is the Java programming language created by Sun Microsystems, Inc. With Java, a programmer can create programs and include them in her web site where the programs will run when the site is accessed by other computers on the Web. The programs will run whether the accessing computer uses an operating system identical to that of the Web site or another operating system supported by Java.
  • Java programs that are embedded in a site and executed by the accessing computer are called “applets.” Java programs that are executed by the site server when the site is accessed by another computer are called “servlets” or more generically, “server side programs.”
  • server side programs Java programs that are executed by the site server when the site is accessed by another computer.
  • a specialized programming language that operates exclusively with scripts interpreted by server side programs may be referred to as a “server side scripting language.”
  • CGI and other dynamically enabled servers can allow dynamic pages to access date or time information, weather information, files with pricing or inventory data or other web pages. They may also allow access to databases stored on the same server or at another location on the Internet or a local network. This capability greatly enhances the utility of web pages and allows access to databases containing huge quantities of information.
  • the present invention is a server side scripting language and programming tool designed to simplify programming for web pages using databases or other dynamic information.
  • the present invention is implemented by adding script to a normal text-based document, such as an HTML document, a spreadsheet, a word processing document or any other text-based document that can benefit from a dynamic document architecture.
  • the document is subsequently processed by the interpreter of the present invention to access database or other information when the document is requested by a browser or at some other time or interval specified by the programmer.
  • the interpreter processes the document by scanning for the inventive script commands.
  • the interpreter executes the script command, typically by retrieving or processing database information, returns the result to the web page and strips the executable script command from the resulting “pure-format” document.
  • the resulting document is in a “pure-format” form.
  • the “pure-format” form would be a pure HTML document containing no extraneous tags or commands. This “pure-format” document is, then, sent by the server to the client computer whose browser initiated the document request.
  • the novel script commands may be added, deleted or edited from a typical HTML or Web page editor or from a word processor or text editor.
  • FIG. 1 illustrates a representative system that provides a suitable operating environment for use of the present invention
  • FIG. 2 illustrates a computer hardware diagram as used in the implementation of an embodiment of the present invention
  • FIG. 3 illustrates computer hardware diagram showing the interconnection of prior art client and server hardware used to implement a preferred embodiment of the present invention
  • FIG. 4 illustrates a flow chart showing a dynamic document access process of a preferred embodiment of the present invention wherein a caching process is used to speed performance;
  • FIG. 5 illustrates a data flow chart showing data requests and file transfer between components of a preferred embodiment of the present invention
  • FIG. 6 illustrates a flow chart depicting the process whereby the inventive script of the preferred embodiment of the present invention is loaded, parsed, interpreted and executed and sent to the client;
  • FIG. 7 illustrates a flow chart showing details of the script parsing process
  • FIG. 8 illustrates a flow chart showing details of script parsing and execution
  • FIG. 9 illustrates a flow chart showing the processing of expressions and tokens
  • FIG. 10 illustrates a flow chart showing how a caching process of the present invention is implemented
  • FIG. 11 illustrates a flow chart showing the function of TARGET and SOURCE commands in script execution
  • FIG. 12 illustrates a script command as used in a HTML document in accordance with the present invention.
  • the present invention relates to generally to the field of dynamic computer document creation.
  • the present invention relates to systems and methods for providing a scripting language that uses script codes in a document formatted for an independent application.
  • Implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands.
  • Embodiments of the present invention embrace the utilization of one or more computer device to provide the systems and methods discussed herein. Accordingly, FIG. 1 and the corresponding discussion are intended to provide a general description of a suitable operating environment in which the invention may be implemented. One skilled in the art will appreciate that the invention may be practiced by one or more computing devices and in a variety of system configurations, including in a networked configuration.
  • Embodiments of the present invention embrace one or more computer readable media, wherein each medium may be configured to include or includes thereon data or computer executable instructions for manipulating data.
  • the computer executable instructions include data structures, objects, programs, routines, or other program modules that may be accessed by a processing system, such as one associated with a general-purpose computer capable of performing various different functions or one associated with a special-purpose computer capable of performing a limited number of functions.
  • Computer executable instructions cause the processing system to perform a particular function or group of functions and are examples of program code means for implementing steps for methods disclosed herein.
  • a particular sequence of the executable instructions provides an example of corresponding acts that may be used to implement such steps.
  • Examples of computer readable media include random-access memory (“RAM”), read-only memory (“ROM”), programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), electrically erasable programmable read-only memory (“EEPROM”), compact disk read-only memory (“CD-ROM”), or any other device or component that is capable of providing data or executable instructions that may be accessed by a processing system.
  • RAM random-access memory
  • ROM read-only memory
  • PROM programmable read-only memory
  • EPROM erasable programmable read-only memory
  • EEPROM electrically erasable programmable read-only memory
  • CD-ROM compact disk read-only memory
  • a representative system for implementing the invention includes computer device 10 , which may be a general-purpose or special-purpose computer.
  • computer device 10 may be a personal computer, a notebook computer, a personal digital assistant (“PDA”) or other hand-held device, a workstation, a minicomputer, a mainframe, a supercomputer, a multi-processor system, a network computer, a processor-based consumer electronic device, or the like.
  • PDA personal digital assistant
  • Computer device 10 includes system bus 12 , which may be configured to connect various components thereof and enables data to be exchanged between two or more components.
  • System bus 12 may include one of a variety of bus structures including a memory bus or memory controller, a peripheral bus, or a local bus that uses any of a variety of bus architectures.
  • Typical components connected by system bus 12 include processing system 14 and memory 16 .
  • Other components may include one or more mass storage device interfaces 18 , input interfaces 20 , output interfaces 22 , and/or network interfaces 24 , each of which will be discussed below.
  • Processing system 14 includes one or more processors, such as a central processor and optionally one or more other processors designed to perform a particular function or task. It is typically processing system 14 that executes the instructions provided on computer readable media, such as on memory 16 , a magnetic hard disk, a removable magnetic disk, a magnetic cassette, an optical disk, or from a communication connection, which may also be viewed as a computer readable medium.
  • processors such as a central processor and optionally one or more other processors designed to perform a particular function or task. It is typically processing system 14 that executes the instructions provided on computer readable media, such as on memory 16 , a magnetic hard disk, a removable magnetic disk, a magnetic cassette, an optical disk, or from a communication connection, which may also be viewed as a computer readable medium.
  • Memory 16 includes one or more computer readable media that may be configured to include or includes thereon data or instructions for manipulating data, and may be accessed by processing system 14 through system bus 12 .
  • Memory 16 may include, for example, ROM 28 , used to permanently store information, and/or RAM 30 , used to temporarily store information.
  • ROM 28 may include a basic input/output system (“BIOS”) having one or more routines that are used to establish communication, such as during start-up of computer device 10 .
  • BIOS basic input/output system
  • RAM 30 may include one or more program modules, such as one or more operating systems, application programs, and/or program data.
  • One or more mass storage device interfaces 18 may be used to connect one or more mass storage devices 26 to system bus 12 .
  • the mass storage devices 26 may be incorporated into or may be peripheral to computer device 10 and allow computer device 10 to retain large amounts of data.
  • one or more of the mass storage devices 26 may be removable from computer device 10 .
  • Examples of mass storage devices include hard disk drives, magnetic disk drives, tape drives and optical disk drives.
  • a mass storage device 26 may read from and/or write to a magnetic hard disk, a removable magnetic disk, a magnetic cassette, an optical disk, or another computer readable medium.
  • Mass storage devices 26 and their corresponding computer readable media provide nonvolatile storage of data and/or executable instructions that may include one or more program modules such as an operating system, one or more application programs, other program modules, or program data. Such executable instructions are examples of program code means for implementing steps for methods disclosed herein.
  • One or more input interfaces 20 may be employed to enable a user to enter data and/or instructions to computer device 10 through one or more corresponding input devices 32 .
  • input devices include a keyboard and alternate input devices, such as a mouse, trackball, light pen, stylus, or other pointing device, a microphone, a joystick, a game pad, a satellite dish, a scanner, a camcorder, a digital camera, and the like.
  • input interfaces 20 that may be used to connect the input devices 32 to the system bus 12 include a serial port, a parallel port, a game port, a universal serial bus (“USB”), a firewire (IEEE 1394), or another interface.
  • USB universal serial bus
  • IEEE 1394 firewire
  • One or more output interfaces 22 may be employed to connect one or more corresponding output devices 34 to system bus 12 .
  • Examples of output devices include a monitor or display screen, a speaker, a printer, and the like.
  • a particular output device 34 may be integrated with or peripheral to computer device 10 .
  • Examples of output interfaces include a video adapter, an audio adapter, a parallel port, and the like.
  • One or more network interfaces 24 enable computer device 10 to exchange information with one or more other local or remote computer devices, illustrated as computer devices 36 , via a network 38 that may include hardwired and/or wireless links.
  • network interfaces include a network adapter for connection to a local area network (“LAN”) or a modem, wireless link, or other adapter for connection to a wide area network (“WAN”), such as the Internet.
  • the network interface 24 may be incorporated with or peripheral to computer device 10 .
  • accessible program modules or portions thereof may be stored in a remote memory storage device.
  • computer device 10 may participate in a distributed computing environment, where functions or tasks are performed by a plurality of networked computer devices.
  • embodiments of the present invention relate to a scripting language and method of use that provides for the use of script codes in a document formatted for an independent application.
  • Implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands.
  • a server side scripting language and programming tool greatly simplifies programming of many types of Web pages, including Web database applications.
  • a first step in using a preferred embodiment of the present invention is to create an initial HTML document with the desired structure, layout and format defined by HTML code.
  • the inventive commands of the scripting language of the preferred embodiment of the present invention are added to the initial HTML document to transform the initial HTML document into a mixed-format scripted document.
  • This mixed-format scripted document contains the HTML code of the initial HTML document combined with the inventive script commands of the preferred embodiment of the present invention.
  • These script commands which are input by a programmer, contain commands that add functionality to the Web page being created. Some of these commands may implement procedures that are executed when the resulting Web page is accessed thereby creating a dynamic Web page.
  • the currently preferred embodiment of the present invention utilizes a Java servlet to interpret the novel script commands.
  • the server supports servlets for this embodiment.
  • Servlets may be supported natively or through the use of plug-in programs that are common in the industry. The majority of these plug-in programs utilize a version of Java that is installed on the server.
  • the Java Runtime Environment (JRE) or the Java Development Kit (JDK) may be installed on the server to enable servlet support.
  • JRE Java Runtime Environment
  • JDK Java Development Kit
  • the Java environment also provides compatibility with virtually all established operating systems in use today.
  • the presently preferred embodiment of the present invention is entirely contained within one or more files stored in a standard file system, thereby eliminating the need for a bulky, cumbersome database for program operation and functionality. This structure improves performance and eliminates the need for licensing of third party database technology.
  • This implementation is quickly and easily employed for many applications, however, if more speed is required or if speed takes precedence over ease of implementation, another embodiment may be used that employs a server add-on using the Common Gateway Interface (CGI) standard or a server plug-in using the Internet Server Application Programming Interface—Dynamic Load Library (ISAPI—DLL) standard.
  • CGI Common Gateway Interface
  • ISAPI—DLL Internet Server Application Programming Interface—Dynamic Load Library
  • JDBC Java Database Connectivity
  • ODBC Open Database Connectivity
  • JDBC is the preferred driver as it provides better performance with the preferred software embodiment.
  • a preferred embodiment of the present invention generally utilizes one or more computer devices or computers in a network environment.
  • these computers may be any type of computer device, including mainframes, mini-computers, micro-computers or other variations, however, the most commonly used variations will employ a central processing unit (CPU) 50 , with RAM and/or ROM memory 40 , a display device 52 such as a cathode ray tube (CRT), one or more input/output processors 42 , a hard disk 44 or other mass storage device, a pointing device, such as a mouse 46 , an input device such as a keyboard 48 and various other peripherals or other devices.
  • CPU central processing unit
  • RAM random access memory
  • ROM read-only memory
  • a display device 52 such as a cathode ray tube (CRT)
  • input/output processors 42 such as a hard disk 44 or other mass storage device
  • a pointing device such as a mouse 46
  • an input device such as a keyboard 48 and various other peripherals or other
  • FIG. 3 A simple networking environment is illustrated in FIG. 3 where one or more client computers 60 are connected to a computer network 62 .
  • This computer network 62 may be a localized network, an intranet, or may utilize a wide-area network structure or the Internet to communicate with a server 64 .
  • Server 64 may communicate with a database 66 which can be physically located on the server hardware itself or elsewhere. In some embodiments, server 64 may communicate directly with database 66 or may employ the network 62 or Internet communications capability to access the database, as illustrated by database 68 .
  • a client computer running web browser software 70 is connected to the Internet or an intranet 72 .
  • the client web browser initiates a request for a specific Web page represented by a URL address.
  • the request is sent over the Internet or intranet 72 to the web server 74 where the URL is located.
  • the web server 74 finds the document associated with the requested URL and, in a preferred embodiment, checks the file extension of the document that indicates whether inventive script commands of the present invention are contained therein. If the inventive script commands are not present in the document, the document is immediately sent to the client web browser in its current form.
  • the document is sent to the request interpreter 76 of the present invention.
  • the request interpreter 76 checks to see if the script has already been loaded and parsed making it ready for execution. This may have taken place during a prior request for the Web page. If so, the script will be held in a RAM cache or otherwise stored in an executable form 78 and will be immediately executed 84 when the page is requested. If the file has not been previously accessed, the script will have to be loaded 80 and parsed 82 before execution 84 . The results are then sent to the client at 86 .
  • FIG. 5 The data flow characteristics of the preferred embodiment of the present invention is shown in FIG. 5 where a client web browser 90 is again shown making a request over the Internet or an intranet 92 for a specific web page.
  • the web server 94 receives the request and, when the file extension indicates that inventive script commands are not present in the document, accesses the file system 98 to retrieve the requested document and deliver it to the requesting browser 90 .
  • the inventive script commands of the present invention are present in the document, the request is passed to the novel script interpreter 96 .
  • the script interpreter 96 interprets the inventive script commands in the document and, depending on the nature of the script commands, may access files in the file system 98 , access one or more databases 100 or execute one or more programmatic objects 102 .
  • a detailed list of the inventive script commands of the present invention and the actions they invoke is given below.
  • the script processing method of the preferred embodiment of the present invention begins by loading the script file 110 .
  • this file will be an HTML document that contains, in addition to text and HTML code, novel script commands.
  • the novel script commands may be used to enhance other types of files.
  • these files may be spreadsheet files, word processor files or graphics files or combinations of file formats such as graphics or other files embedded in HTML documents.
  • a script file may be any file that contains the novel script commands of the present invention.
  • the interpreter of the preferred embodiment of the present invention parses the script 112 thereby creating sequentially ordered tokens for each element of the file.
  • These elements comprise HTML tags, text, inventive script commands of the present invention, and expressions used by these inventive commands such as database or file locations.
  • the file elements After the file elements have been converted to executable tokens they are assembled into an executable token sequence that will be executed immediately and cached so it may be re-executed each time the page is requested in the future.
  • Execution of the token sequence 114 creates a new “pure-format” or “pure-HTML” document that is sent to the client browser that requested the document 16 . Accordingly, a dynamic Web page is created as the page is updated or recreated each time the page is requested.
  • parsing procedure of the preferred embodiment of the present invention is shown in more detail in FIGS. 7 and 8. Parsing takes place at two distinct times in the process of the preferred embodiment, when the script is initially loaded 120 (FIG. 7) and when the file is executed 130 (FIG. 8).
  • a script file When a script file is initially loaded 120 , the elements of the file are parsed by a series of parsers that recognize and process individual types of commands and their related expressions.
  • the HTML parser 122 distinguishes between HTML tags and inventive script commands in the file and creates tokens for contiguous HTML blocks.
  • the Command parser 124 recognizes the inventive script commands of the present invention and creates tokens for each of these commands.
  • an inventive script command contains one or more expressions
  • the expression portion of the inventive script command is sent to the expression parser 126 which creates a token for the expression which is passed back to the command parser 124 and incorporated into the token for the inventive script command.
  • a second parsing process occurs at the time the token file is executed 130 . This occurs each time a statement is encountered while executing a script. At this point, the statement parser 132 determines the type of statement and sends the statement to the interpreter appropriate for that statement.
  • the statement parser will, likewise, find array statements and send them to the Array interpreter 139 which will interpret those statements by iterating through the designated arrays.
  • SQL and database related commands are sent by the statement parser 132 to the SQL interpreter 137 , which will directly interpret a database-switching modifier.
  • Other database commands or the remainder of a statement containing a database switching command will be forwarded by the SQL interpreter 137 to a Database SQL interpreter 138 which is external to the preferred embodiment of the present invention and typically resides in a database driver or engine program.
  • each command token is processed sequentially.
  • expression trees are attached to command tokens, they are also processed in the order encountered.
  • Expression trees 142 follow an expression hierarchy or tree structure.
  • the script execution process of the preferred embodiment of the present invention executes the expressions in order 144 starting with the outermost expressions on the expression tree.
  • the expression results are, then, inserted into the expressions of the next order until all expressions have been processed and the main parameter statement is ready to execute 146 .
  • This statement is subsequently parsed out 148 by the statement parser 132 (FIG. 8) to the appropriate interpreter that executes the command token 150 thereby returning a result that is sent to an output buffer 152 where it is combined with the results of other statements to form the resulting dynamic Web page that is sent to the client 154 .
  • the preferred embodiment of the present invention utilizes caching techniques to increase response speed.
  • a RAM cache technique is used to speed response time when a client requests a dynamic Web page.
  • a file cache may also be used to increase performance.
  • the server checks to see if the script is stored in RAM cache 162 . If so, the script is immediately executed 164 and the resulting HTML document is sent to the client browser 166 . If the script is not stored in RAM Cache, the script file is loaded 168 , and parsed 169 before execution 164 and, finally, sent to the client browser 166 .
  • a programmer may use the Source command or Target command to control program execution and caching and relate script files.
  • a script file may contain script commands which, when executed, create a new script file.
  • the file from which the new file was created is referred to as a source file.
  • the Source command initiates a comparison between the current file and an associated source file from which the current file was created.
  • the creation date of the current file is compared with the creation date of the associated source file.
  • the file with the most recent date, the newer file is selected for execution.
  • Target command When a Target command is encountered during script execution, the output of the execution process is written to a target file that may be another script file that can be subsequently executed.
  • Target and Source commands may be more fully understood by reference to FIG. 11.
  • a source command is encountered 172 . If the source file is newer, the execution process switches to the source file 184 and executes the source file. If the current file is newer, execution of the current file proceeds.
  • the Source command can, therefore, be used to ensure that the most current version of a file is used.
  • a target command is not encountered 174 during execution of a script file, the output of the script execution will be sent to a client browser 180 or other source which initiated the scripted document request.
  • a Target command is encountered the output of the script file execution process will be written to a target file rather than being sent to the client 176 .
  • the execution process will then switch to the target script file 178 and execute the target file.
  • the Target command allows intermediate files, which may be more easily edited, to be created. It also allows file execution to become an iterative process.
  • FIG. 12 the syntax of the scripting language of the preferred embodiment of the present invention is illustrated.
  • An example line of code is shown 190 with various tags and commands therein.
  • HTML tags 192 which will be differentiated and processed by the HTML parser 122 (FIG. 7).
  • Script command syntax 194 is parsed and processed by the command parser 127 (FIG. 7).
  • Database switching syntax 196 within the code line is parsed and sent to the SQL interpreter 137 (FIG. 8) for processing.
  • expression syntax 198 is parsed and sent to the expression parser for processing.
  • SQL syntax 200 When database access and manipulation is performed, SQL syntax 200 will be present. This will be parsed out and sent to the database SQL interpreter 138 (FIG. 8) for processing.
  • the server-side scripting language and programming tool of the present invention is called BrowZ Script. Its purpose is to greatly simplify programming for many types of web database applications. To use it, create normal HTML pages, then place special tags containing BrowZ Script commands in the pages. These tags are replaced dynamically with the result of the command execution when the script is requested by a browser and executed by the server. Several of the commands execute SQL statements against a database, and others retrieve data from the resulting rows and columns. BrowZ Script takes full advantage of the power of SQL and relies heavily on the resulting data.
  • BrowZ Script also supports the retrieving of data from HTML page forms as well as arguments passed after a question mark ‘?’ at the end of an Internet address or URL.
  • BrowZ Script has extra features for ease of programming, such as allowing you to use your favorite web page designer and editor for adding and editing of your script tags. Some knowledge of HTML is needed to take advantage of this feature.
  • BrowZ Script is implemented as a Java servlet. So, your web server must support servlets, either natively or by use of a server plug-in or CGI. If your server does not have built-in servlet support you must install one of several server plug-ins. Most of these servlet add-ons are free or inexpensive. Most of these plug-ins, however, will also require that you have a version of Java installed on your server. This can be freely downloaded from Sun's Java web site, www.javasoft.com. You'll need to download and install the JRE (Java Runtime Environment) or the JDK (Java Development Kit).
  • JRE Java Runtime Environment
  • JDK Java Development Kit
  • BrowZ Script is implemented in Java therefore you can run it on any operating system platform for which the Java runtime is available, which includes just about all of the modern ones.
  • BrowZ Script is entirely contained within the BZScript.jar file. You'll need to configure your server (or the server plug-in) by adding this file to its Java CLASSPATH. Some servers may work if you simply copy this file into the Servlets folder. Check with your server or plug-in for proper installation of servlets.
  • BrowZ Script requires a JDBC (Java DataBase Connectivity) or ODBC (Open DataBase Connectivity) driver to be able to communicate with your database. It is usually fastest if you have a JDBC driver for your particular database, but an ODBC driver will work fine if you do not. If you are using JDBC you'll need to know the JDBC URL to your database. Look in your driver's user manual for the proper URL to use for each of your databases. If you choose to use ODBC, you must set up a DSN (Data Source Name) for each database you wish to communicate with. The JDBC URL you will use will be as follows: “odbc:your_dsn”.
  • BrowZScript.properties This is a plain text file usually containing four definitions, similar to the following:
  • driver sun.jdbc.odbc.JdbcOdbcDriver
  • the driver parameter defines which Java driver to load. In this case, we are loading the built-in ODBC driver. If you use another driver you would place its class name here. Driver defaults to sun jdbc.odbc.JdbcOdbcDriver.
  • the database parameter defines the JDBC URL to the database. This is dependent on the driver you use and the database you are connecting to. Since we used the ODBC driver we specified an ODBC URL containing the DSN.
  • BrowZ script is not limited to only one database as described above. In order to support connections with more than one database the contents of the BZScript.properties file has to be changed a little. Let's start with an example and then explain the differences:
  • the properties file is not limited to just the variables detailed above. You may place many other parameters in this file, and retrieve them from any script in the same directory, using the prop object. See section 3.5.3 for more information on prop object.
  • BrowZ Script files are usually just normal HTML files, containing one or more BrowZ Script commands. These commands may be placed anywhere within the HTML document, but it is usually wise to place them in such a way that you do not break any of the HTML syntax rules. This recommendation becomes a requirement if you use an HTML page editor, such as Microsoft FrontPage, Adobe PageMill, or Netscape Composer to add or edit your BrowZ Script files.
  • BrowZ Script is designed to be case insensitive, but this has not been thoroughly tested yet. Only fully lower case commands, functions, objects, and variables have been tested.
  • BrowZ Script always strips the entire command from the output. However, in order to maintain the normal rules of HTML sometimes you have to place commands within a paragraph or table cell. There are HTML tags that get added to the document by the editor which surround the BrowZ Script command. However, you usually do not want these extraneous tags to appear in the output. You can specify that you wish them striped by adding the exclamation point, ‘!’, and the name of tag you wish to be stripped. Sometimes there is more than one tag that surrounds your command. An example of this is when you place a command in a cell of a table. If you want the entire row removed, rather than just the cell you are in, you would use ‘!tr’ as the tag to strip. All tags and text including the one you specify the BrowZ Script command and those following the command until the trailing tag will be stripped.
  • the parameters to a command vary depending on the command used. Usually, the parameters are a statement, such as SQL. Note, one or more expressions may be used anywhere within the parameters section. See section 3.4 for information on how to add and use expressions of objects and functions.
  • Carriage returns and/or line feeds within commands will be converted to a space. This is because HTML editors insert spaces in arbitrary positions within long lines. However, if you really do want carriage returns within a command, such as within quoted text, use an HTML line break, ⁇ br>. All ⁇ br> tags found within commands will get converted to a carriage return and line feed.
  • the do command executes a statement unconditionally. Any statement may be executed, including SQL, scan, dir, and array statements. See section 3.3 for more information on statements.
  • the do command produces no direct output.
  • a matching end command which should follow the do command somewhere in the script, closes the statement. It is not necessarily required to have a matching end command because all open statements will be automatically closed when a script completes, but it is better to explicitly end (close) each statement when you are done with it.
  • the end command is required if you need to access results from an outer statement, if or while command when you nest more than one.
  • the do command is required if you need to access results from an outer statement, if or while command when you nest more than one.
  • the condition is based on the results of the statement or the value of the expression. The condition will be true if a statement results in 1 or more rows, and false if it results in no rows. The condition will be true if an SQL insert, delete, or update statement results in 1 or more rows being modified and false if no rows were modified.
  • condition is based on the previous statement executed, such as a previous do, if, or while command, though the most common of these is the do command. This may be useful when you wish to execute a command previous to where you want to conditionally execute other commands or HTML.
  • the else command is used only in conjunction with the if or while commands. It is always optional and specifies where to start outputting if the condition of the if or while is initially false. Any parameters added to this command are ignored so the parameter may be used as a comment.
  • the end command is used only in conjunction with the do, if, or while commands. For the all of these commands end specifies the end of the conditional or repeated output. It closes the statement, if any were opened in the matching do, if, or while command. In the case of the while command, it closes the statement once the last row has been retrieved and the last loop has completed. End is recommended, but not necessarily required, for use with the do command, because all statements are closed when the script completes. However, if you nest more than one do, if or while you will be required to have an end statement before you can access results from the outer command. Any parameters added to this command are ignored so the parameter may be used as a comment.
  • the db command switches the current database to the one you specify by name. This name must match the name you used in the properties file. All following SQL statements will be executed with the new database. Individual SQL statements may override this by specifying a database explicitly. See section 3.3.4 for more information on specifying a database from within an SQL statement.
  • the insert command loads and runs another script. All objects, variables and their values are available to the inserted script. The remainder of the current script is also run after the inserted file executes, except in the case of redirect. See section 3.2.8 for more information on redirect. Any variables that were modified in the inserted script will keep their modified values after the insert completes and the current script continues. Insert is somewhat similar to a function or subroutine call in other languages. Inserted scripts may also insert other scripts, to as many levels as you desire. This command is useful when you need to execute and/or output the same or similar things from more than one script.
  • the redirect command loads and runs a script from another file and aborts the current script. All objects, variables and their values are available to the redirected script. Any output from the current script already created is discarded and not sent to the client. If the current script had been executed via an insert from yet another script, that insert is aborted also. In other words, the inserting script will not continue if a redirect occurs in the inserted script. In fact, redirect aborts all multiple levels of insert. There is no problem, however, for a redirected script to redirect or insert other scripts, as you so desire.
  • the target command tells the execution engine to create a file and write the output of the current script to it, once the script completes. The output is not sent to client, but once the new script file is written this new script is then executed itself, and any output it generates will be sent to the client.
  • the parameter of this command is either a file path or a dot extension.
  • the file path may be absolute or relative to the currently executing scripts folder. If you use a dot extension parameter then the new script will have the same name as the current one, but with the extension changed to what you specify.
  • the target command may be placed anywhere within the currently executing script. If it is placed within a conditional part of your script, such as between if, else, or end then it will only take effect if the condition allows the target command to actually execute. If it is skipped, for whatever reason, the current output will be sent to the requesting client and no file will be written, just as if the target command was not there.
  • the source command tells the execution engine that the current script was created by another script. BrowZ Script will check the dates of the two files. If the current script is older than the source script then the current script is aborted and the source script is executed instead. Its is mainly useful when the script contains a target command. It allows the target script to refer to its source to maintain synchronization between the two files. See section 3.2.9 for more information on the target command.
  • the parameter of this command is either a file path or a dot extension.
  • the file path may be absolute or relative to the currently executing scripts folder. If you use a dot extension parameter then the source script will have the same name as the current one, but with the extension as you specified.
  • the set command will set the value of a variable. Once set, a variable holds and returns its value for the rest of the script, or until the script sets it again. Input and temporary variables are accessed through the var object. Currently, you may only set variables of the session or var objects. If you do not specify which object the member belongs to, the var object is assumed.
  • This variation sets a variable with the value returned by the expression.
  • the brackets are required and signal BrowZ Script to not execute a statement.
  • This variation sets a variable based on the result of an SQL statement.
  • the variable will be set with the value in the first column of the first row returned. All others columns and rows will be ignored. If an empty result set is return from the statement then the variable will be set to null. The statement is automatically closed so an end command is not needed, or allowed.
  • This variation of set is really just a short cut and could be rewritten as follows:
  • the default command is almost the same as the set command. It differs only in that it does not change the value of the variable if the variable already has a value assigned. It will only set the value of the variable if the variable is null or is not set.
  • the copy command simply copies one file to another.
  • the file names for the source and target must be specified.
  • the path information may be relative to the current script's folder or absolute.
  • BrowZ Script makes a copy of the file and also sets the modified date to be identical with the source.
  • the expression command simply outputs the results of the expression. It has no command name, just the expression itself, in square brackets, ‘[’ and ‘]’. See section 3.4 for more information on expressions.
  • Statements are the workhorses of BrowZ Script; you will use these to do most of your work. Statements are the parameters to the following BrowZ Script commands: do, if, while, set and default. Statements include all of SQL, plus several BrowZ Script only additions. Statements may be modified in a way unique to BrowZ Script. BrowZ Script expressions may be used anywhere within the statement to make changes, customize, and parameterize it. Plus, there is a db modifier for SQL statements, used to switch connections between more than one database engine.
  • the array statement is used to query and iterate (repeated) OR sequence (once) through the values of a variable. All variables in BrowZ Script may contain 0 or more values. If the variable has no value, then the statement returns an empty result set. If the variable contains one or more values then each value will be accessed sequentially through the row object. This statement is usually used only in a while command. However, in an if command, the condition will be true when the variable has one or more values, and false otherwise.
  • the dir statement is used to enumerate the files within a folder of the file-system.
  • the path should be specified relative to the directory containing the executing script. Or it may be an absolute path, starting with the root directory.
  • the path syntax can be based on the POSIX standard (Unix), using forward slashes, or it can be platform specific, such as with backslashes on Windows.
  • Index Fields Description 1 File A string containing the full file name 2 Name A string containing the file name, without the extension 3 Ext A string containing the file extension, without the period 4 Size An integer containing the file size in bytes 5 Date A date containing the last modified date of the file
  • the scan statement is used to parse a simple, delimited string. A sequential list of words will be returned as the result-set. If no delimiters are specified then all white space is used as the delimiter. Delimiters are specified as one or more non-alpha-numeric characters, followed by a space and the string to parse. The only special case delimiter is the underscore ‘_’. If you put an underscore as the first delimiter then whitespace will be added as part of the delimiters. An underscore may be a delimiter if you put one or more other delimiters first.
  • BrowZ Script sends the entire statement (after expression evaluation) to the current database.
  • the current database is the latest database specified with a db command, or the first (or only) database specified in your BZScript.properties file.
  • This statement is usually used with a while command. However, in an if command, the condition will be true when the result-set contains one or more rows, and false otherwise. If this is used with a set or default command, the variable will be assigned the first value returned, the first column and first row. All other columns and rows will be ignored.
  • the SQL is sent, same as above, to the current database.
  • These types of statements are usually used with do, if, set, and default commands.
  • Many, but not all, SQL commands will return a value, usually the number of rows modified. This number will be used in the condition of the if command, 0 meaning false, and all other values meaning true.
  • the value returned will be stored in the variable. It does not usually make sense to use this type of statement with a while command.
  • Expressions are designed to return a value. They may be placed anywhere within the parameters of a command, such as within a statement. Or, the expression may be the entire command, (see section 3.2.14). Expressions are delimited by square brackets, ‘[’ and ‘]’. They can be complex or simple. BrowZ Script 1.2 does not support in-line operator evaluation, such as ‘+’, or ‘ ⁇ ’, though this is planned for a future release, You may use any combination objects, object members, object functions and global functions. But, without in-line operators, you can only pass results from one expression as a parameter to a function, and nesting these function calls as deep as makes sense.
  • Objects may have member variables, functions or both. The members of an object can only be retrieved (read), except for the var and prop objects. Use the set or default command to change member variables of prop and var.
  • Object Purpose Init Access initialization parameters of BrowZ Script Open Access the results of a named statement Prop Access variables stored in the BZScript.properties file Row Access the fields, or columns of the current open statement Session Access the variables associated with a user's session Var Access HTTP POST and URL input, and temporary variables
  • the init object allows you to access the servlet initialization parameters. These are dependent upon how you initialized the BrowZ Script servlet with your web server. Any parameters you initialized your servlet with may be read, but you may not set the value of members of this object.
  • the open object allows you to access result sets for those SQL statements that you gave names to in your script. If the statement has a result set you may access the columns by name or number, with 1 referring to the first column. If the statement does not have a result set, you may only retrieve the number of rows affected. This object is not normally needed because you may access statements by name alone. The time this object is needed is if you name a statement same as one of the other global objects. You may not set the value of members of this object, only read them. See section 3.1.1 for information on giving a statement a name.
  • open.abc.user Returns the value in column user from statement named abc Abc.user Same as above open.def.2 Returns the value in column 2 from the statement named def Def.2 Same as above open.ghi Returns the number of the current row from the statement named ghi, if the statement returns a result set, i.e. select open.ghi Returns the number of rows affected from the statement named ghi, if the statement does not return a result set, i.e. insert, update, or delete Ghi Same as the above two examples
  • the prop object allows you to access variables in the BZScript.properties files. You may not set the value of members of this object, only read the values that you placed in the properties file. See section 2.0 for information on the purpose of this file. Examples: prop.databases Returns the value of the databases parameter prop.abc Returns the value of the abc parameter prop.abc.jkl Returns the value of the abc.jkl parameter
  • the row object allows you to access result sets for the current open SQL statement. If the statement has a result set you may access the columns by name or number, with 1 referring to the first column. If the statement does not have a result set, you may only retrieve the number of rows affected. You may not set the value of members of this object, only read them.
  • Row.user Returns the value in column user from the current open statement Row.2 Returns the value in column 2 from the current open statement Row Returns the number of the current row from the current open statement, if the statement returns a result set, i.e. select Row Returns the number of rows affected from the current open statement, if the statement does not return a result set, i.e. insert, update, or delete
  • the session object allows access to variables associated with a user session.
  • a new session with no member variables is created each time a new user requests a web page from BrowZ Script.
  • the session stays alive as long as the same user continues to hit the server with the same browser. If the user exits the browser and launches it again a new session will be created, with no initial variables.
  • These variables may be both read and written. This is where you would normally put variables that need to be passed between and among multiple scripts, but not among more than one user. If you need more permanent or persistent variables you should use records in your database.
  • the var object is the most used object in BrowZ Script. It allows access to input variables from a form POST or URL parameter. You do not need to distinguish between a form input variables and URL variables, as only one type is allowed at a time.
  • An HTTP POST only returns form input variables and an HTTP GET only returns URL variables, variables passed after the question mark in a URL. These variables may be both read and written, and you may create and use more variables than were initially passed to the script. This is where you would normally put all temporary script variables.
  • the add function returns the sum of all its parameters. Each parameter is converted to an integer before it is added. In the future support for other types will be included, such as float, date, time, etc.
  • the concat function returns the string concatenation of the all parameters. Each parameter is converted to a string before it is used.
  • the date function returns either a string or an int, given various types of input data, and possibly a type parameter. If the type parameter is not specified then “short” is assumed.
  • the div function returns the quotient of p1 divided by p2. If there are more parameters each is divided into the quotient. Each parameter is converted to an integer before it is used.
  • the html function converts the to HTML format. Its does this by looking for certain characters and converting them to the proper HTML tags. If noTags is specified then it is assumed that the input text contains no HTML, so anything resembling HTML is fixed. You will probably use this function heavily for scripts designed for the web, unless you store HTML directly in your database. Here are the conversions that take place within this function: From To Conditions and Comments ⁇ r, ⁇ n, or ⁇ r ⁇ n ⁇ br> ⁇ t       ⁇ sp> ⁇ sp>...
  • ⁇ sp> means a space characetr ⁇ < If noTags is specified > > If noTags is specified & & ; ; * ⁇ ul> ⁇ li> Unordered list; must begin a line **... ⁇ ul> ⁇ ul> ⁇ li> Higher level lists; must begin a line # ⁇ ol> ⁇ li> Ordered list; must begin a line ##...
  • the if function converts p1 to a boolean and returns p2 if p1 evaluates to true, or p3 otherwise.
  • the indexOf function returns the index of the p2 if found within p1. Both parameters are converted to strings before they are used. If p2 is not found within p1 then ⁇ 1 is returned.
  • the int function converts p1 to an integer. If p2 and p3 are specified then p1 will be range checked. If p1 is below p2 then the result will be p2. If p1 is above p3 then the result will be p3.
  • the isDate function returns true if p1 is or can be converted to a date.
  • the length function returns the length of p1. P1 is converted to a string before it is used.
  • the limit function returns the truncation of the p1 if its length is greater than p2. P1 is converted to a string and p2 is converted to an int before they are used.
  • the lowerCase function converts all characters of p1 to lower case and returns it.
  • the mod function returns the remainder of p1 divided by p2. If there are more parameters each is divided into the previous remainder resulting in new remainder. Each parameter is converted to an integer before it is used.
  • the mul function returns the product of all the parameters. Each parameter is converted to an integer before it is used.
  • the or function returns the boolean or of all its parameters. Each parameter converted to a boolean before it's used.
  • the quote function returns p1 as a string with single quotes around it, or the word NULL if p1 is null.
  • the strip function returns p1 with all hyperlinks URLs, domain names and image tags removed from it. P1 is converted to a string before it is used.
  • the upperCase function converts all characters of p1 to upper case and returns it.
  • the url function formats p1 as a string with characters that are not allowed in a URL converted to % hex. Use this when you need to put a field value into an HTML URL.
  • the time function returns the current time as a formatted string, or an integer in a few cases. The variation you choose specifies what the result will look like.
  • This function converts the data to a floating-point number. If you specify another parameter then the number will be truncated to that number of digits after the decimal point.
  • the embodiments of the present invention embrace the field of dynamic computer document creation.
  • the present invention relates to systems and methods for providing a scripting language that uses script codes in a document formatted for an independent application. While implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands, the present invention may be embodied in other specific forms without departing from its spirit or essential characteristics.
  • the described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Abstract

Server side scripting language and programming tool that includes an inventive script that is added to a normal text-based document can benefit from a dynamic document architecture. The document is processed by an interpreter to access database or other information. When a browser requests a document enhanced by the present invention, the interpreter processes the document by scanning for the inventive script commands. When a script command is encountered, the interpreter executes the script command, returns the result to the web page, and strips the executable script command from the resulting “pure-format” document. Once all executable script commands have been executed and stripped, the resulting document is in a “pure-format” form, which is sent by the server to the client computer, whose browser initiated the document request. Due to the text-based format of the present invention, the novel script commands may be added, deleted or edited from a typical HTML or Web page editor or from a word processor or text editor.

Description

    RELATED APPLICATIONS
  • This application is a continuation application that claims priority to U.S. patent application Ser. No. 09/266,357 filed Mar. 11, 1999, entitled SERVER-SIDE SCRIPTING LANGUAGE AND PROGRAMMING TOOL.[0001]
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention [0002]
  • The present invention relates generally to the field of dynamic computer document creation. In particular, the present invention relates to a scripting language and method of use that provides for the use of script codes in a document formatted for an independent application. Implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands. [0003]
  • 2. Background and Related Art [0004]
  • The Internet is a worldwide network of computers that is now accessible to almost any potential user with a computer having network access. Hundreds of Internet Service Providers (ISP's) have emerged to provide Internet access to millions of users who now use the Internet for personal and business communications, information retrieval, advertising, publishing, sales and document delivery. [0005]
  • In order to better implement many of these applications, the World Wide Web (“WWW” or “Web”) was created. The Web allows access to information and documents using “hypermedia” or “hypertext” links embedded into the document. This linking system allows documents to be accessed and linked in a “non-linear” fashion, which allows a user to “jump” from one point in a document to another simply by selecting the link. It also allows jumping from one document to another whether the documents are preserved on the same computer or on another computer across the world. Documents available on the WWW include text, sound, graphics images, and even full-motion video. [0006]
  • Hypertext Markup Language (HTML), a specialized document formatting language, is typically used to create and format documents for viewing and linking on the Web. HTML uses special tags or codes embedded into a text document that format the document and allow linking to other documents or other locations in the same document. These links may also access files, such as sound files or graphics files that are played or displayed upon selection of a link. A document in an HTML format available on the Web is typically referred to as a “Web page” or “Web site.”[0007]
  • The WWW also implements a unique addressing system that allocates an address or Uniform Resource Locator (URL) for each document on the Web so that Web documents may be selectively accessed, sorted and indexed. [0008]
  • A computer with a dedicated connection to the Internet and specialized server software that enables Web access is called a “Web server.” Web documents are located on storage devices connected to Web servers. A person seeking access to a Web page uses a computer with “Web browser” software that allows access to specified URL's as well as searching and other functions. [0009]
  • Generally, when a user accesses a specific Web page, the user enters the URL of the desired Web page into a computer that is running browser software. The browser software, then, sends a request across the Internet to the server at the destination designated by the URL. The destination server will then send an electronic copy of the desired document to the browser computer where it can be displayed to the user. This is the typical procedure used for static Web pages that exist as unchanging files on a server storage device. [0010]
  • Web pages may also exist as dynamic documents that change or update themselves when conditions are met. Dynamic documents may update themselves each time they are accessed. This is achieved by allowing the server to execute a program when a given URL is accessed. [0011]
  • A current standard for enabling dynamic pages is the Common Gateway Interface (CGI), which allows a server to run programs that can change, update or customize the web page as it is being accessed. [0012]
  • Programs that reside on the server and are invoked by requests from client browser applications are referred to as “server side” programs. After these programs are run and the page is modified thereby, the newly modified “dynamic” page is sent to the browser which requested the page so it can be displayed to the user. [0013]
  • Another method for providing a dynamic Web page employs programs that are not operating system specific. These programs can be executed on any operating system supported by the programming language. One very popular example is the Java programming language created by Sun Microsystems, Inc. With Java, a programmer can create programs and include them in her web site where the programs will run when the site is accessed by other computers on the Web. The programs will run whether the accessing computer uses an operating system identical to that of the Web site or another operating system supported by Java. Java programs that are embedded in a site and executed by the accessing computer are called “applets.” Java programs that are executed by the site server when the site is accessed by another computer are called “servlets” or more generically, “server side programs.” A specialized programming language that operates exclusively with scripts interpreted by server side programs may be referred to as a “server side scripting language.”[0014]
  • CGI and other dynamically enabled servers can allow dynamic pages to access date or time information, weather information, files with pricing or inventory data or other web pages. They may also allow access to databases stored on the same server or at another location on the Internet or a local network. This capability greatly enhances the utility of web pages and allows access to databases containing huge quantities of information. [0015]
  • SUMMARY OF THE INVENTION
  • The present invention is a server side scripting language and programming tool designed to simplify programming for web pages using databases or other dynamic information. The present invention is implemented by adding script to a normal text-based document, such as an HTML document, a spreadsheet, a word processing document or any other text-based document that can benefit from a dynamic document architecture. The document is subsequently processed by the interpreter of the present invention to access database or other information when the document is requested by a browser or at some other time or interval specified by the programmer. [0016]
  • When a browser requests a document enhanced by the present invention, the interpreter processes the document by scanning for the inventive script commands. When a script command is encountered, the interpreter executes the script command, typically by retrieving or processing database information, returns the result to the web page and strips the executable script command from the resulting “pure-format” document. Once all executable script commands have been executed and stripped, the resulting document is in a “pure-format” form. In the case of a typical web page, the “pure-format” form would be a pure HTML document containing no extraneous tags or commands. This “pure-format” document is, then, sent by the server to the client computer whose browser initiated the document request. [0017]
  • Due to the text-based format of the present invention, the novel script commands may be added, deleted or edited from a typical HTML or Web page editor or from a word processor or text editor. [0018]
  • While the methods and processes of the present invention have proven to be particularly useful in the area of creating dynamic HTML documents with database information using scripting commands, those skilled in the art can appreciate that the methods and processes can be used in a variety of different applications to provide dynamic computer document creation. [0019]
  • These and other features and advantages of the present invention will be set forth or will become more fully apparent in the description that follows and in the appended claims. The features and advantages may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. Furthermore, the features and advantages of the invention may be learned by the practice of the invention or will be obvious from the description, as set forth hereinafter. [0020]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • In order that the manner in which the above recited and other features and advantages of the present invention are obtained, a more particular description of the invention will be rendered by reference to specific embodiments thereof, which are illustrated in the appended drawings. Understanding that the drawings depict only typical embodiments of the present invention and are not, therefore, to be considered as limiting the scope of the invention, the present invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which: [0021]
  • FIG. 1 illustrates a representative system that provides a suitable operating environment for use of the present invention; [0022]
  • FIG. 2 illustrates a computer hardware diagram as used in the implementation of an embodiment of the present invention; [0023]
  • FIG. 3 illustrates computer hardware diagram showing the interconnection of prior art client and server hardware used to implement a preferred embodiment of the present invention; [0024]
  • FIG. 4 illustrates a flow chart showing a dynamic document access process of a preferred embodiment of the present invention wherein a caching process is used to speed performance; [0025]
  • FIG. 5 illustrates a data flow chart showing data requests and file transfer between components of a preferred embodiment of the present invention; [0026]
  • FIG. 6 illustrates a flow chart depicting the process whereby the inventive script of the preferred embodiment of the present invention is loaded, parsed, interpreted and executed and sent to the client; [0027]
  • FIG. 7 illustrates a flow chart showing details of the script parsing process; [0028]
  • FIG. 8 illustrates a flow chart showing details of script parsing and execution; [0029]
  • FIG. 9 illustrates a flow chart showing the processing of expressions and tokens; [0030]
  • FIG. 10 illustrates a flow chart showing how a caching process of the present invention is implemented; [0031]
  • FIG. 11 illustrates a flow chart showing the function of TARGET and SOURCE commands in script execution; and [0032]
  • FIG. 12 illustrates a script command as used in a HTML document in accordance with the present invention. [0033]
  • DETAILED DESCRIPTION OF THE INVENTION
  • The present invention relates to generally to the field of dynamic computer document creation. In particular, the present invention relates to systems and methods for providing a scripting language that uses script codes in a document formatted for an independent application. Implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands. [0034]
  • The following disclosure of the present invention is grouped into two subheadings, namely “Exemplary Operating Environment” and “Providing a Scripting Language.” The utilization of the subheadings is for convenience of the reader only and is not to be construed as limiting in any sense. [0035]
  • Exemplary Operating Environment
  • Embodiments of the present invention embrace the utilization of one or more computer device to provide the systems and methods discussed herein. Accordingly, FIG. 1 and the corresponding discussion are intended to provide a general description of a suitable operating environment in which the invention may be implemented. One skilled in the art will appreciate that the invention may be practiced by one or more computing devices and in a variety of system configurations, including in a networked configuration. [0036]
  • Embodiments of the present invention embrace one or more computer readable media, wherein each medium may be configured to include or includes thereon data or computer executable instructions for manipulating data. The computer executable instructions include data structures, objects, programs, routines, or other program modules that may be accessed by a processing system, such as one associated with a general-purpose computer capable of performing various different functions or one associated with a special-purpose computer capable of performing a limited number of functions. Computer executable instructions cause the processing system to perform a particular function or group of functions and are examples of program code means for implementing steps for methods disclosed herein. Furthermore, a particular sequence of the executable instructions provides an example of corresponding acts that may be used to implement such steps. Examples of computer readable media include random-access memory (“RAM”), read-only memory (“ROM”), programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), electrically erasable programmable read-only memory (“EEPROM”), compact disk read-only memory (“CD-ROM”), or any other device or component that is capable of providing data or executable instructions that may be accessed by a processing system. [0037]
  • With reference to FIG. 1, a representative system for implementing the invention includes [0038] computer device 10, which may be a general-purpose or special-purpose computer. For example, computer device 10 may be a personal computer, a notebook computer, a personal digital assistant (“PDA”) or other hand-held device, a workstation, a minicomputer, a mainframe, a supercomputer, a multi-processor system, a network computer, a processor-based consumer electronic device, or the like.
  • [0039] Computer device 10 includes system bus 12, which may be configured to connect various components thereof and enables data to be exchanged between two or more components. System bus 12 may include one of a variety of bus structures including a memory bus or memory controller, a peripheral bus, or a local bus that uses any of a variety of bus architectures. Typical components connected by system bus 12 include processing system 14 and memory 16. Other components may include one or more mass storage device interfaces 18, input interfaces 20, output interfaces 22, and/or network interfaces 24, each of which will be discussed below.
  • Processing [0040] system 14 includes one or more processors, such as a central processor and optionally one or more other processors designed to perform a particular function or task. It is typically processing system 14 that executes the instructions provided on computer readable media, such as on memory 16, a magnetic hard disk, a removable magnetic disk, a magnetic cassette, an optical disk, or from a communication connection, which may also be viewed as a computer readable medium.
  • [0041] Memory 16 includes one or more computer readable media that may be configured to include or includes thereon data or instructions for manipulating data, and may be accessed by processing system 14 through system bus 12. Memory 16 may include, for example, ROM 28, used to permanently store information, and/or RAM 30, used to temporarily store information. ROM 28 may include a basic input/output system (“BIOS”) having one or more routines that are used to establish communication, such as during start-up of computer device 10. RAM 30 may include one or more program modules, such as one or more operating systems, application programs, and/or program data.
  • One or more mass storage device interfaces [0042] 18 may be used to connect one or more mass storage devices 26 to system bus 12. The mass storage devices 26 may be incorporated into or may be peripheral to computer device 10 and allow computer device 10 to retain large amounts of data. Optionally, one or more of the mass storage devices 26 may be removable from computer device 10. Examples of mass storage devices include hard disk drives, magnetic disk drives, tape drives and optical disk drives. A mass storage device 26 may read from and/or write to a magnetic hard disk, a removable magnetic disk, a magnetic cassette, an optical disk, or another computer readable medium. Mass storage devices 26 and their corresponding computer readable media provide nonvolatile storage of data and/or executable instructions that may include one or more program modules such as an operating system, one or more application programs, other program modules, or program data. Such executable instructions are examples of program code means for implementing steps for methods disclosed herein.
  • One or more input interfaces [0043] 20 may be employed to enable a user to enter data and/or instructions to computer device 10 through one or more corresponding input devices 32. Examples of such input devices include a keyboard and alternate input devices, such as a mouse, trackball, light pen, stylus, or other pointing device, a microphone, a joystick, a game pad, a satellite dish, a scanner, a camcorder, a digital camera, and the like. Similarly, examples of input interfaces 20 that may be used to connect the input devices 32 to the system bus 12 include a serial port, a parallel port, a game port, a universal serial bus (“USB”), a firewire (IEEE 1394), or another interface.
  • One or [0044] more output interfaces 22 may be employed to connect one or more corresponding output devices 34 to system bus 12. Examples of output devices include a monitor or display screen, a speaker, a printer, and the like. A particular output device 34 may be integrated with or peripheral to computer device 10. Examples of output interfaces include a video adapter, an audio adapter, a parallel port, and the like.
  • One or more network interfaces [0045] 24 enable computer device 10 to exchange information with one or more other local or remote computer devices, illustrated as computer devices 36, via a network 38 that may include hardwired and/or wireless links. Examples of network interfaces include a network adapter for connection to a local area network (“LAN”) or a modem, wireless link, or other adapter for connection to a wide area network (“WAN”), such as the Internet. The network interface 24 may be incorporated with or peripheral to computer device 10. In a networked system, accessible program modules or portions thereof may be stored in a remote memory storage device. Furthermore, in a networked system computer device 10 may participate in a distributed computing environment, where functions or tasks are performed by a plurality of networked computer devices.
  • Providing a Scripting Language
  • As provided above, embodiments of the present invention relate to a scripting language and method of use that provides for the use of script codes in a document formatted for an independent application. Implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands. In a preferred embodiment, a server side scripting language and programming tool greatly simplifies programming of many types of Web pages, including Web database applications. [0046]
  • A first step in using a preferred embodiment of the present invention is to create an initial HTML document with the desired structure, layout and format defined by HTML code. After the initial HTML document is complete, the inventive commands of the scripting language of the preferred embodiment of the present invention are added to the initial HTML document to transform the initial HTML document into a mixed-format scripted document. This mixed-format scripted document contains the HTML code of the initial HTML document combined with the inventive script commands of the preferred embodiment of the present invention. These script commands, which are input by a programmer, contain commands that add functionality to the Web page being created. Some of these commands may implement procedures that are executed when the resulting Web page is accessed thereby creating a dynamic Web page. [0047]
  • The currently preferred embodiment of the present invention utilizes a Java servlet to interpret the novel script commands. Accordingly, the server supports servlets for this embodiment. Servlets may be supported natively or through the use of plug-in programs that are common in the industry. The majority of these plug-in programs utilize a version of Java that is installed on the server. The Java Runtime Environment (JRE) or the Java Development Kit (JDK) may be installed on the server to enable servlet support. The Java environment also provides compatibility with virtually all established operating systems in use today. [0048]
  • The presently preferred embodiment of the present invention is entirely contained within one or more files stored in a standard file system, thereby eliminating the need for a bulky, cumbersome database for program operation and functionality. This structure improves performance and eliminates the need for licensing of third party database technology. [0049]
  • This implementation is quickly and easily employed for many applications, however, if more speed is required or if speed takes precedence over ease of implementation, another embodiment may be used that employs a server add-on using the Common Gateway Interface (CGI) standard or a server plug-in using the Internet Server Application Programming Interface—Dynamic Load Library (ISAPI—DLL) standard. [0050]
  • When the presently preferred embodiment of the present invention is used to provide database connectivity to Web pages or other documents, a Java Database Connectivity (JDBC) or Open Database Connectivity (ODBC) driver is utilized to communicate with the database. Currently, JDBC is the preferred driver as it provides better performance with the preferred software embodiment. [0051]
  • A preferred embodiment of the present invention generally utilizes one or more computer devices or computers in a network environment. As indicated above, these computers, as illustrated in FIGS. 1 & 2, may be any type of computer device, including mainframes, mini-computers, micro-computers or other variations, however, the most commonly used variations will employ a central processing unit (CPU) [0052] 50, with RAM and/or ROM memory 40, a display device 52 such as a cathode ray tube (CRT), one or more input/output processors 42, a hard disk 44 or other mass storage device, a pointing device, such as a mouse 46, an input device such as a keyboard 48 and various other peripherals or other devices.
  • A simple networking environment is illustrated in FIG. 3 where one or more client computers [0053] 60 are connected to a computer network 62. This computer network 62 may be a localized network, an intranet, or may utilize a wide-area network structure or the Internet to communicate with a server 64. Server 64 may communicate with a database 66 which can be physically located on the server hardware itself or elsewhere. In some embodiments, server 64 may communicate directly with database 66 or may employ the network 62 or Internet communications capability to access the database, as illustrated by database 68.
  • In a preferred embodiment of the present invention, as shown in FIG. 4, a client computer running [0054] web browser software 70 is connected to the Internet or an intranet 72. The client web browser initiates a request for a specific Web page represented by a URL address. The request is sent over the Internet or intranet 72 to the web server 74 where the URL is located. The web server 74 finds the document associated with the requested URL and, in a preferred embodiment, checks the file extension of the document that indicates whether inventive script commands of the present invention are contained therein. If the inventive script commands are not present in the document, the document is immediately sent to the client web browser in its current form.
  • If the inventive script commands are present in the document, the document is sent to the [0055] request interpreter 76 of the present invention. At this point, the request interpreter 76 checks to see if the script has already been loaded and parsed making it ready for execution. This may have taken place during a prior request for the Web page. If so, the script will be held in a RAM cache or otherwise stored in an executable form 78 and will be immediately executed 84 when the page is requested. If the file has not been previously accessed, the script will have to be loaded 80 and parsed 82 before execution 84. The results are then sent to the client at 86.
  • The data flow characteristics of the preferred embodiment of the present invention is shown in FIG. 5 where a [0056] client web browser 90 is again shown making a request over the Internet or an intranet 92 for a specific web page. The web server 94 receives the request and, when the file extension indicates that inventive script commands are not present in the document, accesses the file system 98 to retrieve the requested document and deliver it to the requesting browser 90. When the inventive script commands of the present invention are present in the document, the request is passed to the novel script interpreter 96. The script interpreter 96 interprets the inventive script commands in the document and, depending on the nature of the script commands, may access files in the file system 98, access one or more databases 100 or execute one or more programmatic objects 102. A detailed list of the inventive script commands of the present invention and the actions they invoke is given below.
  • The script processing method of the preferred embodiment of the present invention begins by loading the [0057] script file 110. In the Web application of the preferred embodiment, this file will be an HTML document that contains, in addition to text and HTML code, novel script commands. However, in other embodiments of the present invention, the novel script commands may be used to enhance other types of files. By way of example and not by limitation, these files may be spreadsheet files, word processor files or graphics files or combinations of file formats such as graphics or other files embedded in HTML documents. A script file may be any file that contains the novel script commands of the present invention.
  • Once the script file is loaded, the interpreter of the preferred embodiment of the present invention parses the [0058] script 112 thereby creating sequentially ordered tokens for each element of the file. These elements comprise HTML tags, text, inventive script commands of the present invention, and expressions used by these inventive commands such as database or file locations. After the file elements have been converted to executable tokens they are assembled into an executable token sequence that will be executed immediately and cached so it may be re-executed each time the page is requested in the future. Execution of the token sequence 114 creates a new “pure-format” or “pure-HTML” document that is sent to the client browser that requested the document 16. Accordingly, a dynamic Web page is created as the page is updated or recreated each time the page is requested.
  • The parsing procedure of the preferred embodiment of the present invention is shown in more detail in FIGS. 7 and 8. Parsing takes place at two distinct times in the process of the preferred embodiment, when the script is initially loaded [0059] 120 (FIG. 7) and when the file is executed 130 (FIG. 8).
  • When a script file is initially loaded [0060] 120, the elements of the file are parsed by a series of parsers that recognize and process individual types of commands and their related expressions. The HTML parser 122 distinguishes between HTML tags and inventive script commands in the file and creates tokens for contiguous HTML blocks. The Command parser 124 recognizes the inventive script commands of the present invention and creates tokens for each of these commands. When an inventive script command contains one or more expressions, the expression portion of the inventive script command is sent to the expression parser 126 which creates a token for the expression which is passed back to the command parser 124 and incorporated into the token for the inventive script command.
  • A second parsing process occurs at the time the token file is executed [0061] 130. This occurs each time a statement is encountered while executing a script. At this point, the statement parser 132 determines the type of statement and sends the statement to the interpreter appropriate for that statement.
  • When a scan statement is encountered by the statement parser, the statement is sent to the [0062] Scan interpreter 134 which interprets the statement by extracting designated words from strings as indicated in the statement.
  • When the statement parser encounters a directory statement, the statement is sent to the [0063] Dir interpreter 136 which will interpret the statement and enumerate the files within a directory.
  • The statement parser will, likewise, find array statements and send them to the [0064] Array interpreter 139 which will interpret those statements by iterating through the designated arrays.
  • SQL and database related commands are sent by the [0065] statement parser 132 to the SQL interpreter 137, which will directly interpret a database-switching modifier. Other database commands or the remainder of a statement containing a database switching command will be forwarded by the SQL interpreter 137 to a Database SQL interpreter 138 which is external to the preferred embodiment of the present invention and typically resides in a database driver or engine program.
  • During the script execution process, as detailed in FIG. 9, each command token is processed sequentially. With reference to step [0066] 140, if expression trees are attached to command tokens, they are also processed in the order encountered. Expression trees 142 follow an expression hierarchy or tree structure. When the result of an expression is dependent upon another, the script execution process of the preferred embodiment of the present invention executes the expressions in order 144 starting with the outermost expressions on the expression tree. The expression results are, then, inserted into the expressions of the next order until all expressions have been processed and the main parameter statement is ready to execute 146. This statement is subsequently parsed out 148 by the statement parser 132 (FIG. 8) to the appropriate interpreter that executes the command token 150 thereby returning a result that is sent to an output buffer 152 where it is combined with the results of other statements to form the resulting dynamic Web page that is sent to the client 154.
  • In order to increase performance, the preferred embodiment of the present invention utilizes caching techniques to increase response speed. A RAM cache technique is used to speed response time when a client requests a dynamic Web page. A file cache may also be used to increase performance. [0067]
  • When an inventive script document is requested [0068] 160, as shown in FIG. 10, the server checks to see if the script is stored in RAM cache 162. If so, the script is immediately executed 164 and the resulting HTML document is sent to the client browser 166. If the script is not stored in RAM Cache, the script file is loaded 168, and parsed 169 before execution 164 and, finally, sent to the client browser 166.
  • A programmer may use the Source command or Target command to control program execution and caching and relate script files. Using the inventive scripting language of the present invention, a script file may contain script commands which, when executed, create a new script file. The file from which the new file was created is referred to as a source file. The Source command initiates a comparison between the current file and an associated source file from which the current file was created. When a Source command is encountered during execution, the creation date of the current file is compared with the creation date of the associated source file. The file with the most recent date, the newer file, is selected for execution. [0069]
  • When a Target command is encountered during script execution, the output of the execution process is written to a target file that may be another script file that can be subsequently executed. [0070]
  • The operation of the Target and Source commands may be more fully understood by reference to FIG. 11. During the execution of a [0071] script file 170, if a source command is encountered 172, a comparison is made to determine whether the source or current file is newer 182. If the source file is newer, the execution process switches to the source file 184 and executes the source file. If the current file is newer, execution of the current file proceeds. The Source command can, therefore, be used to ensure that the most current version of a file is used.
  • If a target command is not encountered [0072] 174 during execution of a script file, the output of the script execution will be sent to a client browser 180 or other source which initiated the scripted document request. When a Target command is encountered the output of the script file execution process will be written to a target file rather than being sent to the client 176. The execution process will then switch to the target script file 178 and execute the target file. The Target command allows intermediate files, which may be more easily edited, to be created. It also allows file execution to become an iterative process.
  • In FIG. 12, the syntax of the scripting language of the preferred embodiment of the present invention is illustrated. An example line of code is shown [0073] 190 with various tags and commands therein. Within the code are some HTML tags 192 which will be differentiated and processed by the HTML parser 122 (FIG. 7). Script command syntax 194 is parsed and processed by the command parser 127 (FIG. 7). Database switching syntax 196 within the code line is parsed and sent to the SQL interpreter 137 (FIG. 8) for processing. When found in the code, expression syntax 198 is parsed and sent to the expression parser for processing. When database access and manipulation is performed, SQL syntax 200 will be present. This will be parsed out and sent to the database SQL interpreter 138 (FIG. 8) for processing.
  • In order to more fully demonstrate the capabilities of the preferred embodiment of the present invention, the following list of program properties, commands and functions is presented along with an explanation of each. This listing is offered as an example of the inventive commands of the preferred embodiment of the present invention and is not to be construed as a limitation to the scope of the claims of this patent. [0074]
  • 0.1 Standards [0075]
  • The format of this listing is as follows: syntax is in italics, and commands are bolded within paragraph descriptions. Also example scripts use Courier Font. [0076]
  • 0.2 Introduction [0077]
  • The server-side scripting language and programming tool of the present invention is called BrowZ Script. Its purpose is to greatly simplify programming for many types of web database applications. To use it, create normal HTML pages, then place special tags containing BrowZ Script commands in the pages. These tags are replaced dynamically with the result of the command execution when the script is requested by a browser and executed by the server. Several of the commands execute SQL statements against a database, and others retrieve data from the resulting rows and columns. BrowZ Script takes full advantage of the power of SQL and relies heavily on the resulting data. [0078]
  • BrowZ Script also supports the retrieving of data from HTML page forms as well as arguments passed after a question mark ‘?’ at the end of an Internet address or URL. [0079]
  • BrowZ Script has extra features for ease of programming, such as allowing you to use your favorite web page designer and editor for adding and editing of your script tags. Some knowledge of HTML is needed to take advantage of this feature. [0080]
  • Installation [0081]
  • 1.1 Server [0082]
  • BrowZ Script is implemented as a Java servlet. So, your web server must support servlets, either natively or by use of a server plug-in or CGI. If your server does not have built-in servlet support you must install one of several server plug-ins. Most of these servlet add-ons are free or inexpensive. Most of these plug-ins, however, will also require that you have a version of Java installed on your server. This can be freely downloaded from Sun's Java web site, www.javasoft.com. You'll need to download and install the JRE (Java Runtime Environment) or the JDK (Java Development Kit). [0083]
  • BrowZ Script is implemented in Java therefore you can run it on any operating system platform for which the Java runtime is available, which includes just about all of the modern ones. [0084]
  • 1.2 Files [0085]
  • BrowZ Script is entirely contained within the BZScript.jar file. You'll need to configure your server (or the server plug-in) by adding this file to its Java CLASSPATH. Some servers may work if you simply copy this file into the Servlets folder. Check with your server or plug-in for proper installation of servlets. [0086]
  • 1.3 Database [0087]
  • BrowZ Script requires a JDBC (Java DataBase Connectivity) or ODBC (Open DataBase Connectivity) driver to be able to communicate with your database. It is usually fastest if you have a JDBC driver for your particular database, but an ODBC driver will work fine if you do not. If you are using JDBC you'll need to know the JDBC URL to your database. Look in your driver's user manual for the proper URL to use for each of your databases. If you choose to use ODBC, you must set up a DSN (Data Source Name) for each database you wish to communicate with. The JDBC URL you will use will be as follows: “odbc:your_dsn”. [0088]
  • 2.0 Properties Files [0089]
  • These files give information to BrowZ Script concerning all of the files in a directory and the databases with which they plan to connect. For every folder in which BrowZ script is going to process files there must be a properties file called “BZScript.properties”. This is a plain text file usually containing four definitions, similar to the following: [0090]
  • driver=sun.jdbc.odbc.JdbcOdbcDriver [0091]
  • database=odbc:MyDSN [0092]
  • username=MyUser [0093]
  • password=MyPassword [0094]
  • The driver parameter defines which Java driver to load. In this case, we are loading the built-in ODBC driver. If you use another driver you would place its class name here. Driver defaults to sun jdbc.odbc.JdbcOdbcDriver. [0095]
  • The database parameter defines the JDBC URL to the database. This is dependent on the driver you use and the database you are connecting to. Since we used the ODBC driver we specified an ODBC URL containing the DSN. [0096]
  • The username and password parameters are used when your database requires a user name and password to access the database. You may include a space character, if needed, within the value, but do not surround it by quotation marks, as you might think. Also, do not put spaces or tabs on either side of the equal sign ‘=’. The name, the equals sign, and the value must be run together with no white space. [0097]
  • BrowZ script is not limited to only one database as described above. In order to support connections with more than one database the contents of the BZScript.properties file has to be changed a little. Let's start with an example and then explain the differences: [0098]
  • databases=customers, finance [0099]
  • customers.driver=sun.jdbc.odbc.JdbcodbcDriver [0100]
  • customers.database=odbc:CLIENTS [0101]
  • finance.driver=sun.jdbc.odbc.JdbcOdbcDriver [0102]
  • finance.database=odbc:FINANCE [0103]
  • finance.username=MyUser [0104]
  • finance.password=MyPassword [0105]
  • First notice the databases parameter. This is where you list all of the databases with which you wish to connect. All other parameters have the database name and a period before them, specifying the database to which they belong. Unless otherwise specified, BrowZ Scripts assume a connection with only one database. This default database will always be the first one listed in the databases parameter. To communicate with another database the programmer will have to specify the connection change within each script needing it. This can be done with the db command or with the db modifier in any command using SQL. [0106]
  • There are other variables allowed in this file that will enable verbose debugging features of BrowZ Script. To enable these features you should set the object and either the debug or trace variable to 1. The debug variable is less verbose, but more useful. The trace variable is only useful if you have the BrowZ Script source code. It will show you every function that was called. The recent debug/trace log, if any, will be attached to the bottom of the each script output. This log is also appended to a file called BZScript.log on the server. This log file is cleared each time BrowZ Script is restarted. The example below turns on all debug and trace features in BrowZ Script. It is strongly recommend, however, that you never use all of these together. open.debug and var.debug are usually the most useful. [0107]
  • open.debug=1 # Logs all statement executions [0108]
  • open.trace=1 # Logs all internal statement related function calls [0109]
  • var.debug=1 # Logs all input and temporary variable accesses [0110]
  • var.trace=1 # Logs all internal var related functions calls [0111]
  • prop.debug=1 # Logs all property variable accesses [0112]
  • prop.trace=1 # Logs all internal property related function calls [0113]
  • session.debug=1 # Logs all session variable accesses [0114]
  • session.trace=1 # Logs all internal session related function calls [0115]
  • One last thing, the properties file is not limited to just the variables detailed above. You may place many other parameters in this file, and retrieve them from any script in the same directory, using the prop object. See section 3.5.3 for more information on prop object. [0116]
  • 3.0 Language [0117]
  • This section details the language of BrowZ Script. To begin with, you need to know that BrowZ Script files are usually just normal HTML files, containing one or more BrowZ Script commands. These commands may be placed anywhere within the HTML document, but it is usually wise to place them in such a way that you do not break any of the HTML syntax rules. This recommendation becomes a requirement if you use an HTML page editor, such as Microsoft FrontPage, Adobe PageMill, or Netscape Composer to add or edit your BrowZ Script files. [0118]
  • BrowZ Script is designed to be case insensitive, but this has not been thoroughly tested yet. Only fully lower case commands, functions, objects, and variables have been tested. [0119]
  • 3.1 Syntax [0120]
  • ‘{’[‘!’<html tag>]<command>[‘#’<name>][<parameters>] ‘}’[0121]
  • 3.1.1 Brace Delimiters [0122]
  • Commands are delimited by curly brace characters, ‘{’ and ‘}’, at the beginning and end of each. When you're debugging, always make sure that these braces appear at the beginning and end of each command. [0123]
  • Note: In BrowZ Script 1.0 the tilde ‘˜’ character was used to delimit BrowZ Script commands. These were harder to read and match up when lots of commands were placed close together, so the change was made to curly braces. However, the tilde characters are still supported in 1.2, and you may see some older BrowZ Script files using them. But, these characters will not be supported in future versions of BrowZ Script so it is strongly recommended that you use the preferred curly braces, and begin fixing all 1.0 BrowZ Script files. [0124]
  • 3.1.2 HTML Tag Stripping [0125]
  • Following the open brace is an optional exclamation point, ‘!’, and an html tag name. BrowZ Script always strips the entire command from the output. However, in order to maintain the normal rules of HTML sometimes you have to place commands within a paragraph or table cell. There are HTML tags that get added to the document by the editor which surround the BrowZ Script command. However, you usually do not want these extraneous tags to appear in the output. You can specify that you wish them striped by adding the exclamation point, ‘!’, and the name of tag you wish to be stripped. Sometimes there is more than one tag that surrounds your command. An example of this is when you place a command in a cell of a table. If you want the entire row removed, rather than just the cell you are in, you would use ‘!tr’ as the tag to strip. All tags and text including the one you specify the BrowZ Script command and those following the command until the trailing tag will be stripped. [0126]
  • In order for this to work properly you must specify the tag using the same case as the HTML tag. HTML is not case sensitive but BrowZ Script is in this instance. Also, there must be a matching trailing tag. Some page editors do not add the trailing tag in some instances but this is required for BrowZ Script stripping, and it follows that the case of the trailing tag must match also. The best and sometimes only way to use this feature properly is to switch to HTML mode temporarily to see what the first tag you wish to strip is and to note its case. [0127]
  • Here is an example to illustrate how this stripping works: [0128]
  • <p>{!p while select * from MyTable}</p>[0129]
  • In this example the matching paragraph tags as well as the BrowZ Script command will be stripped from the output. Since while commands output no text by themselves the output will contain no evidence that the command was even there. Here is another example: [0130]
  • <table><tr><td>To Do List</td></tr>[0131]
  • <tr><td><p>{!tr while select * from PROJECTS where PROJ=‘My Project’}</p></td></tr>[0132]
  • <tr><td>{[row.ACTION]}</td></tr>[0133]
  • <tr><td>{!tr end}</td></tr></table>[0134]
  • In this more complicated example the programmer wished to completely remove the rows containing the if and end commands, not just the commands themselves. Also, by using the while command BrowZ Script will repeat everything between the while and end commands for each record found in the database, which in effect adds a row for each. The output of this script would look something like this: [0135]
  • <table><tr><td>To Do List</td></tr>[0136]
  • <tr><td>Write the code</td></tr>[0137]
  • <tr><td>Test the code</td></tr>[0138]
  • <tr><td>Write the manual</td></tr>[0139]
  • <tr><td>Prepare the packaging</td></tr>[0140]
  • <tr><td>Ship it!</td></tr>[0141]
  • </table>[0142]
  • If the programmer had not put in both ‘!tr’ options the output would have looked like the following, which is definitely not correct HTML: [0143]
  • <table><tr><td>To Do List</td></tr>[0144]
  • <tr><td><p></p></td></tr>[0145]
  • <tr><td>Write the code</td></tr>[0146]
  • <tr><td></p></td></tr>[0147]
  • <tr><td>Test the code</td></tr>[0148]
  • <tr><td></p></td></tr>[0149]
  • <tr><td>Write the manual</td></tr>[0150]
  • <tr><td></p></td></tr>[0151]
  • <tr><td>Prepare the packaging</td></tr>[0152]
  • <tr><td></p></td></tr>[0153]
  • <tr><td>Ship it!</td></tr>[0154]
  • <tr><td></td></tr>[0155]
  • </table>[0156]
  • Of course you can avoid this entire problem by simply using a text editor rather than an HTML editor, and disregard the rules of HTML. In this case you would have written the following simpler script to produce the same output: [0157]
  • <table><tr><td>To Do List</td></tr>[0158]
  • {while select * from PROJECTS where PROJ=‘My Project’}[0159]
  • <tr><td>{[row.ACTION]}</td></tr>[0160]
  • {end}</table>[0161]
  • Don't try to load this script into an editor which knows HTML, because it will definitely complain, or worse, attempt to correct the problem. The command itself is not optional. Also commands are not case sensitive. Each command is itemized in section 3.2. [0162]
  • 3.1.3 Name [0163]
  • You may optionally name any statement using a single word or number. This is used when you need to refer to the results of a previous SQL command, after executing another, but is not needed to refer to the results of the current SQL command. See the row object for more information. [0164]
  • Here's an example: [0165]
  • <p>List of items found:</p>[0166]
  • <p>{!p while #tb select * from TABLE}</p>[0167]
  • <p>{!p if select * from ANOTHER where A_STATE=‘[row.T_STATE]’}</p>[0168]
  • <p>{[tb.T_NAME]}</p>[0169]
  • <p>{!p end}[0170]
  • <p>{!p end}[0171]
  • In this example we're printing the T_NAME field from TABLE, but only if the value of that record's T_STATE field is found somewhere in the A_STATE field of the ANOTHER table. If we didn't use the #tb name, we would only have been able to print fields from the ANOTHER table, using the row object. See section 3.5.4 for an explanation of the row object. We could have accomplished the same thing by storing the T_NAME field into a temporary variable, using the var object, so we could access it from within the if command. See section 3.5.6 for an explanation of the var object. [0172]
  • Note also the use of the row object within the parameter of the if. Access to fields of the row object does not change until the closing brace of the next command containing a statement. This means that row continues to refer to the current record of the while command until the closing brace of the if command, at which point it changes to the row returned from the result of the if. Row again switches back to the row from the while command after the first end, which ends the if and closes the statement's results. See section 3.2.5 for more details on the end command. [0173]
  • 3.1.4 Parameters [0174]
  • The parameters to a command vary depending on the command used. Usually, the parameters are a statement, such as SQL. Note, one or more expressions may be used anywhere within the parameters section. See section 3.4 for information on how to add and use expressions of objects and functions. [0175]
  • 3.1.5 Special Characters and Sequences [0176]
  • Since HTML empowers certain characters with special meanings BrowZ Script has to be flexible in its interpretation and use of these. If your HTML editor inserts a &lt; instead of a less-than character ‘<’ into your SQL statement, BrowZ Script will properly convert it to a less-than character ‘<’ before attempting to execute it. The following are all of the automatic translations made by BrowZ Script. [0177]
  • %XX [0178]
  • A percent sign ‘%’ followed by two hex digits will be converted into the corresponding ASCII character. [0179]
  • &lt;, &gt;, &nbsp;, &amp; [0180]
  • These will be converted into less than ‘<’, greater than ‘>’, space ‘ ‘, and ampersand ‘&’, respectively. [0181]
  • \{, \}, \], \\[0182]
  • When you need BrowZ Script to ignore any special meaning of a character in your scripts simply precede the character by a backslash ‘\’. [0183]
  • <br>, carriage return and line feed [0184]
  • Carriage returns and/or line feeds within commands will be converted to a space. This is because HTML editors insert spaces in arbitrary positions within long lines. However, if you really do want carriage returns within a command, such as within quoted text, use an HTML line break, <br>. All <br> tags found within commands will get converted to a carriage return and line feed. [0185]
  • 3.2 Commands [0186]
  • Here is a list of commands in BrowZ Script, grouped by relationships. [0187]
    Flow Control Inter-file Assignment File
    Do-end Insert Set Copy
    If-else-end Redirect Unset
    While-else-end Target Default
    Db Source
  • 3.2.1 Do Command [0188]
  • Syntax: do <statement>, [end][0189]
  • The do command executes a statement unconditionally. Any statement may be executed, including SQL, scan, dir, and array statements. See section 3.3 for more information on statements. The do command produces no direct output. A matching end command, which should follow the do command somewhere in the script, closes the statement. It is not necessarily required to have a matching end command because all open statements will be automatically closed when a script completes, but it is better to explicitly end (close) each statement when you are done with it. The end command is required if you need to access results from an outer statement, if or while command when you nest more than one. Here is an example of the use of the do command. [0190]
  • <p>{!p do insert into MyTable (T_NAME, T_PHONE, T_DATE) values ([quote(var.name)],[quote(var.phone)], [date(sql,today( ))])}{end}</p>[0191]
  • <p>A new record was added to the database.</p>[0192]
  • Note: in BrowZ Script 1.1 and previous this command was named sql. In 1.2 sql is still allowed but is deprecated in favor of do, because statements are no longer limited to just SQL any more. Please use do instead of sql and fix your old scripts, because a future version of BrowZ Script will not support the sql command. [0193]
  • 3.2.2 If Command [0194]
  • Syntax: if [<statement>|‘[’expression ‘]’|], [else], end [0195]
  • The if command executes a statement unconditionally. It also controls the output and execution of HTML and commands that follow it. If the statement or expression results in a true condition all html and commands after the if until the matching else and/or end command are executed and output. A matching else command is not required, but if used, the HTML and commands between the else and the end are executed and output if the condition is false. [0196]
  • The condition is based on the results of the statement or the value of the expression. The condition will be true if a statement results in 1 or more rows, and false if it results in no rows. The condition will be true if an SQL insert, delete, or update statement results in 1 or more rows being modified and false if no rows were modified. [0197]
  • If you specify an expression as the parameter to if then the condition is based on the results of the expression. If the expression results in a number, then 0 or a negative number mean false, and 1 or greater mean true. If the expression results in a string then a null or zero length string mean false, and a string containing 1 or more characters mean true, including the word “false” so be careful. If the expression results in any other object, then a null means false, and any object means true. Here is an example of the use of an if command. [0198]
  • <p>{!p if update MyTable set T_NAME=[quote(var.name)] where T_ID=[var.id]}</p>[0199]
  • <p>Record # {[var.id]} has been saved.</p>[0200]
  • <p>{!p else}</p>[0201]
  • <p>Error: Record #{[var.id]} does not exist.</p>[0202]
  • <p>{!p end}</p>[0203]
  • If you do not include a parameter of any kind then the condition is based on the previous statement executed, such as a previous do, if, or while command, though the most common of these is the do command. This may be useful when you wish to execute a command previous to where you want to conditionally execute other commands or HTML. [0204]
  • 3.2.3 While Command [0205]
  • Syntax: while [<statement>|‘[’expression ‘]’|], [else], end [0206]
  • The while command is similar to the if command, except that it repeats in a loop until the condition becomes false. It also increments the row in the results of the statement when a statement returns more than one row. Everything after the while command to the end or else will be output or executed for each row returned in the result. If there is an else and the statement results in an empty table or no rows affected then everything after the else command to the end command is output once, the same as an if command. If an expression is used as the only parameter then the while will continue as long expression evaluates to true. See the if command for details on how objects are evaluated to a true or false. Here is an example of the use of the while command. [0207]
    <p>{!p while select * from MyTable where T_NAME like
    ‘%[var.name]%’}</p>
    <p>Name: {[row.T_NAME]}, Phone: {[row.T_PHONE]}</p>
    <p>{!p else}</p>
    <p>No names were found containing‘{[var.name]}’.</p>
    <p>{!p end}</p>
  • If no statement or expression is included then the while will be executed based on the result of the previous SQL executed in the file. This is useful, for instance, when you want to execute part of your script a single time, if any rows are returned, and part of your script repeatedly, for each row returned. Below is an example of this: [0208]
    <p>{!p if select * from MyTable where T_NAME like ‘%[var.name]%’}
    Here is the select for both the if and while commands.</p>
    <table><tr><td>Name</td><td>Phone</td></tr>
    <tr><td width=2>{!tr while} Notice the lack of a statement
    here.</td></tr>
    <tr><td>{[row.T_NAME]}</td><td>{[row.T_PHONE]}</td></tr>
    <tr><td width=2>{!tr end} This ends the repeated part.</td></tr>
    <tr><td width=2>{[row]} names were found.<td></table>
    <p>{!p else} Matches the if.</p>
    <p>No names were found containing ‘{[var.name]}’.</p>
    <p>{!p end} This ends the if. </p>
  • 3.2.4 Else Command [0209]
  • Syntax: if else end [0210]
  • Or: while else end [0211]
  • The else command is used only in conjunction with the if or while commands. It is always optional and specifies where to start outputting if the condition of the if or while is initially false. Any parameters added to this command are ignored so the parameter may be used as a comment. [0212]
  • 3.2.5 End Command [0213]
  • Syntax: do end [0214]
  • Or: if else end [0215]
  • Or: while else end [0216]
  • The end command is used only in conjunction with the do, if, or while commands. For the all of these commands end specifies the end of the conditional or repeated output. It closes the statement, if any were opened in the matching do, if, or while command. In the case of the while command, it closes the statement once the last row has been retrieved and the last loop has completed. End is recommended, but not necessarily required, for use with the do command, because all statements are closed when the script completes. However, if you nest more than one do, if or while you will be required to have an end statement before you can access results from the outer command. Any parameters added to this command are ignored so the parameter may be used as a comment. [0217]
  • 3.2.6 Db Command [0218]
  • Syntax: db <database>[0219]
  • The db command switches the current database to the one you specify by name. This name must match the name you used in the properties file. All following SQL statements will be executed with the new database. Individual SQL statements may override this by specifying a database explicitly. See section 3.3.4 for more information on specifying a database from within an SQL statement. [0220]
  • Note: if you used the single database format for the properties file then the db command will not work and should not be used. [0221]
  • 3.2.7 Insert Command [0222]
  • Syntax: insert <file path>[0223]
  • The insert command loads and runs another script. All objects, variables and their values are available to the inserted script. The remainder of the current script is also run after the inserted file executes, except in the case of redirect. See section 3.2.8 for more information on redirect. Any variables that were modified in the inserted script will keep their modified values after the insert completes and the current script continues. Insert is somewhat similar to a function or subroutine call in other languages. Inserted scripts may also insert other scripts, to as many levels as you desire. This command is useful when you need to execute and/or output the same or similar things from more than one script. [0224]
  • 3.2.8 Redirect Command [0225]
  • Syntax: redirect <file path>[0226]
  • The redirect command loads and runs a script from another file and aborts the current script. All objects, variables and their values are available to the redirected script. Any output from the current script already created is discarded and not sent to the client. If the current script had been executed via an insert from yet another script, that insert is aborted also. In other words, the inserting script will not continue if a redirect occurs in the inserted script. In fact, redirect aborts all multiple levels of insert. There is no problem, however, for a redirected script to redirect or insert other scripts, as you so desire. [0227]
  • 3.2.9 Target Command [0228]
  • Syntax: target [<file path>|‘.’<file extension>][0229]
  • The target command tells the execution engine to create a file and write the output of the current script to it, once the script completes. The output is not sent to client, but once the new script file is written this new script is then executed itself, and any output it generates will be sent to the client. [0230]
  • It is possible, and sometimes very useful, for the generated file to also, contain BrowZ Script commands. These will execute the same as if the file had been requested directly by the client. One very nice use for the target command is in the caching of dynamic pages, which change much less often than they are requested. In the case of caches, it is also useful to generate a source command to be placed in your target script referring back to the source script. This ensures that the target stays synchronized with the source. See section 3.2.10 for more information on the source command. [0231]
  • The parameter of this command is either a file path or a dot extension. The file path may be absolute or relative to the currently executing scripts folder. If you use a dot extension parameter then the new script will have the same name as the current one, but with the extension changed to what you specify. [0232]
  • The target command may be placed anywhere within the currently executing script. If it is placed within a conditional part of your script, such as between if, else, or end then it will only take effect if the condition allows the target command to actually execute. If it is skipped, for whatever reason, the current output will be sent to the requesting client and no file will be written, just as if the target command was not there. [0233]
  • I have not tested this yet, but it should be possible to create a one-shot script, a script that overwrites itself. When the script executes it changes itself, permanently. A good application of a one-shot script is left as an exercise to the reader. [0234]
  • 3.2.10 Source Command [0235]
  • Syntax: source [<file path>|‘.’<file extension>][0236]
  • The source command tells the execution engine that the current script was created by another script. BrowZ Script will check the dates of the two files. If the current script is older than the source script then the current script is aborted and the source script is executed instead. Its is mainly useful when the script contains a target command. It allows the target script to refer to its source to maintain synchronization between the two files. See section 3.2.9 for more information on the target command. [0237]
  • The parameter of this command is either a file path or a dot extension. The file path may be absolute or relative to the currently executing scripts folder. If you use a dot extension parameter then the source script will have the same name as the current one, but with the extension as you specified. [0238]
  • 3.2.11 Set Command [0239]
  • The set command will set the value of a variable. Once set, a variable holds and returns its value for the rest of the script, or until the script sets it again. Input and temporary variables are accessed through the var object. Currently, you may only set variables of the session or var objects. If you do not specify which object the member belongs to, the var object is assumed. [0240]
  • set <[object.]variable>[=]‘[’<expression>‘]’[0241]
  • This variation sets a variable with the value returned by the expression. The brackets are required and signal BrowZ Script to not execute a statement. [0242]
  • set <[object.]variable>[=]<statement>[0243]
  • This variation sets a variable based on the result of an SQL statement. The variable will be set with the value in the first column of the first row returned. All others columns and rows will be ignored. If an empty result set is return from the statement then the variable will be set to null. The statement is automatically closed so an end command is not needed, or allowed. This variation of set is really just a short cut and could be rewritten as follows: [0244]
  • {unset variable}{if <statement>}{set variable=[row.1]}{end}[0245]
  • 3.2.12 Default Command [0246]
  • Syntax: default <variable>‘[’<expression>‘]’[0247]
  • Or: set <variable><select statement>[0248]
  • The default command is almost the same as the set command. It differs only in that it does not change the value of the variable if the variable already has a value assigned. It will only set the value of the variable if the variable is null or is not set. [0249]
  • 3.2.13 Copy Command [0250]
  • Syntax: copy <source file path><target file path>[0251]
  • The copy command simply copies one file to another. The file names for the source and target must be specified. The path information may be relative to the current script's folder or absolute. BrowZ Script makes a copy of the file and also sets the modified date to be identical with the source. [0252]
  • 3.2.14 Expression Command [0253]
  • Syntax: ‘[’<expression>‘]’[0254]
  • The expression command simply outputs the results of the expression. It has no command name, just the expression itself, in square brackets, ‘[’ and ‘]’. See section 3.4 for more information on expressions. [0255]
  • 3.3 Statements [0256]
  • Statements are the workhorses of BrowZ Script; you will use these to do most of your work. Statements are the parameters to the following BrowZ Script commands: do, if, while, set and default. Statements include all of SQL, plus several BrowZ Script only additions. Statements may be modified in a way unique to BrowZ Script. BrowZ Script expressions may be used anywhere within the statement to make changes, customize, and parameterize it. Plus, there is a db modifier for SQL statements, used to switch connections between more than one database engine. [0257]
  • Here are the different types of statements: [0258]
    Statements Description
    Array Interates through an array, a variable which holds
    more one or more values
    Dir Interates though a directory of files
    Scan Parses a string, interates through the words
    (SQL) select Interates through a result set returned from a database
    (SQL) insert, Makes changes to a database, or does other
    delete, update, database related SQL
    etc.
  • 3.3.1 Array Statement [0259]
  • Syntax: array <variable>[0260]
  • The array statement is used to query and iterate (repeated) OR sequence (once) through the values of a variable. All variables in BrowZ Script may contain 0 or more values. If the variable has no value, then the statement returns an empty result set. If the variable contains one or more values then each value will be accessed sequentially through the row object. This statement is usually used only in a while command. However, in an if command, the condition will be true when the variable has one or more values, and false otherwise. [0261]
  • Here are the fields available through the row object when using this statement with do, if, or while: [0262]
    Index Fields Description
    1 Item The value
  • 3.3.2 Dir Statement [0263]
  • Syntax: dir <folder-path>[0264]
  • The dir statement is used to enumerate the files within a folder of the file-system. The path should be specified relative to the directory containing the executing script. Or it may be an absolute path, starting with the root directory. The path syntax can be based on the POSIX standard (Unix), using forward slashes, or it can be platform specific, such as with backslashes on Windows. [0265]
  • Information about each file will be returned as the result-set of the statement. This statement is usually used only in a while command. However, in an if command, the condition will be true when the folder has one or more files, and false otherwise. [0266]
  • Here are the fields available through the row object when using this statement with do, if, or while: [0267]
    Index Fields Description
    1 File A string containing the full file name
    2 Name A string containing the file name, without the
    extension
    3 Ext A string containing the file extension, without the
    period
    4 Size An integer containing the file size in bytes
    5 Date A date containing the last modified date of the file
  • 3.3.3 Scan Statement [0268]
  • Syntax: scan [<delimiters>]<string>[0269]
  • The scan statement is used to parse a simple, delimited string. A sequential list of words will be returned as the result-set. If no delimiters are specified then all white space is used as the delimiter. Delimiters are specified as one or more non-alpha-numeric characters, followed by a space and the string to parse. The only special case delimiter is the underscore ‘_’. If you put an underscore as the first delimiter then whitespace will be added as part of the delimiters. An underscore may be a delimiter if you put one or more other delimiters first. [0270]
  • This statement is usually used only with a while command. However, in an if command, the condition will be true when the string has one or more words, and false otherwise. [0271]
  • Here are the fields available through the row object when using this statement with do, if, or while: [0272]
    Index Fields Description
    1 Word A string containing the word
    2 Delim A string containing the delimiter(s) encountered
    following the word
  • 3.3.4 Select Statement (and all result-set SQL) [0273]
  • Syntax: [db <database>]select <select clauses>[0274]
  • This includes all variations of the SQL select statement and any other SQL that returns a result-set. BrowZ Script sends the entire statement (after expression evaluation) to the current database. The current database is the latest database specified with a db command, or the first (or only) database specified in your BZScript.properties file. This statement is usually used with a while command. However, in an if command, the condition will be true when the result-set contains one or more rows, and false otherwise. If this is used with a set or default command, the variable will be assigned the first value returned, the first column and first row. All other columns and rows will be ignored. [0275]
  • 3.3.5 All other SQL Statements [0276]
  • Syntax: [db <database>]<sql statements>[0277]
  • This includes all other SQL statements, including insert, delete, update, those that do not return a result set. The SQL is sent, same as above, to the current database. These types of statements are usually used with do, if, set, and default commands. Many, but not all, SQL commands will return a value, usually the number of rows modified. This number will be used in the condition of the if command, 0 meaning false, and all other values meaning true. When used with set or default, the value returned will be stored in the variable. It does not usually make sense to use this type of statement with a while command. [0278]
  • 3.4 Expressions [0279]
  • Syntax: ‘[’[object |[object.]function(<expression>[<expression> . . . ]) ‘]’[0280]
  • Expressions are designed to return a value. They may be placed anywhere within the parameters of a command, such as within a statement. Or, the expression may be the entire command, (see section 3.2.14). Expressions are delimited by square brackets, ‘[’ and ‘]’. They can be complex or simple. BrowZ Script 1.2 does not support in-line operator evaluation, such as ‘+’, or ‘−’, though this is planned for a future release, You may use any combination objects, object members, object functions and global functions. But, without in-line operators, you can only pass results from one expression as a parameter to a function, and nesting these function calls as deep as makes sense. [0281]
  • 3.5 Global Objects [0282]
  • There are several objects that are accessible globally, to be used in any expression. Objects may have member variables, functions or both. The members of an object can only be retrieved (read), except for the var and prop objects. Use the set or default command to change member variables of prop and var. Here is the list of the global objects: [0283]
    Object Purpose
    Init Access initialization parameters of BrowZ Script
    Open Access the results of a named statement
    Prop Access variables stored in the BZScript.properties file
    Row Access the fields, or columns of the current open statement
    Session Access the variables associated with a user's session
    Var Access HTTP POST and URL input, and temporary variables
  • 3.5.1 Init Object [0284]
  • The init object allows you to access the servlet initialization parameters. These are dependent upon how you initialized the BrowZ Script servlet with your web server. Any parameters you initialized your servlet with may be read, but you may not set the value of members of this object. [0285]
  • Examples: [0286]
    init.user Returns the value assigned to user
    init.user.id Returns the value assigned to user.id
  • 3.5.2 Open Object [0287]
  • The open object allows you to access result sets for those SQL statements that you gave names to in your script. If the statement has a result set you may access the columns by name or number, with 1 referring to the first column. If the statement does not have a result set, you may only retrieve the number of rows affected. This object is not normally needed because you may access statements by name alone. The time this object is needed is if you name a statement same as one of the other global objects. You may not set the value of members of this object, only read them. See section 3.1.1 for information on giving a statement a name. [0288]
  • Examples: [0289]
    open.abc.user Returns the value in column user from statement named
    abc
    Abc.user Same as above
    open.def.2 Returns the value in column 2 from the statement named
    def
    Def.2 Same as above
    open.ghi Returns the number of the current row from the statement
    named ghi, if the statement returns a result set, i.e. select
    open.ghi Returns the number of rows affected from the statement
    named ghi, if the statement does not return a result set,
    i.e. insert, update, or delete
    Ghi Same as the above two examples
  • 3.5.3 Prop Object [0290]
  • The prop object allows you to access variables in the BZScript.properties files. You may not set the value of members of this object, only read the values that you placed in the properties file. See section 2.0 for information on the purpose of this file. Examples: [0291]
    prop.databases Returns the value of the databases parameter
    prop.abc Returns the value of the abc parameter
    prop.abc.jkl Returns the value of the abc.jkl parameter
  • 3.5.4 Row Object [0292]
  • The row object allows you to access result sets for the current open SQL statement. If the statement has a result set you may access the columns by name or number, with 1 referring to the first column. If the statement does not have a result set, you may only retrieve the number of rows affected. You may not set the value of members of this object, only read them. [0293]
  • Examples: [0294]
    row.user Returns the value in column user from the current
    open statement
    Row.2 Returns the value in column 2 from the current open statement
    Row Returns the number of the current row from the current open
    statement, if the statement returns a result set, i.e. select
    Row Returns the number of rows affected from the current open
    statement, if the statement does not return a result set,
    i.e. insert, update, or delete
  • 3.5.5 Session Object [0295]
  • The session object allows access to variables associated with a user session. A new session with no member variables is created each time a new user requests a web page from BrowZ Script. The session stays alive as long as the same user continues to hit the server with the same browser. If the user exits the browser and launches it again a new session will be created, with no initial variables. These variables may be both read and written. This is where you would normally put variables that need to be passed between and among multiple scripts, but not among more than one user. If you need more permanent or persistent variables you should use records in your database. [0296]
  • Examples: [0297]
    session.user Access the variable called user associated with the user's
    session
    session.name Access the variable called name associated with the user's
    session
  • 3.5.6 Var Object [0298]
  • The var object is the most used object in BrowZ Script. It allows access to input variables from a form POST or URL parameter. You do not need to distinguish between a form input variables and URL variables, as only one type is allowed at a time. An HTTP POST only returns form input variables and an HTTP GET only returns URL variables, variables passed after the question mark in a URL. These variables may be both read and written, and you may create and use more variables than were initially passed to the script. This is where you would normally put all temporary script variables. [0299]
  • Examples: [0300]
    var.user Access the variable called user
    var.name Access the variable called name
  • 3.6 Global Functions [0301]
  • There are many functions that can be accessed globally, i.e. without using an object to access them. Below is a summary. [0302]
    Category Function Purpose
    Boolean And Boolean and
    Not Boolean negation
    Or Boolean or
    Conditional Eq Equality comparison
    Ge Greater than or equal to comparison
    Gt Greater than comparison
    If Conditional, switched result
    Le Less than or equal to comparison
    Lt Less than comparison
    Ne Not equal comparison
    Conversion Date Date conversion
    Int Integer conversion
    Math Add Addition
    Div Division
    Mul Multiplication
    Mod Modulus, remainder
    Sub Subtraction
    Query IsDate Date checking
    IsNull Null checking
    String Concat String concatenation
    Html HTML conversion
    IndexOf Finds sub-string within string
    Length String length
    Limit String truncation
    LowerCase Lower case conversion
    Quote Quotes strings for SQL
    Strip HTML tag stripping
    UpperCase Upper case conversion
    Url Conversion for URLs
    Time Now Returns the current time
    Today Returns the current date
  • 3.6.1 Add Function [0303]
  • add(p1 . . . )_int [0304]
  • The add function returns the sum of all its parameters. Each parameter is converted to an integer before it is added. In the future support for other types will be included, such as float, date, time, etc. [0305]
  • 3.6.2 And Function [0306]
  • and(p1 . . . )_boolean [0307]
  • The and function returns the boolean and of all its parameters. Each parameter converted to a boolean before its used. [0308]
  • 3.6.3 Concat Function [0309]
  • concat(p1 . . . )_string [0310]
  • The concat function returns the string concatenation of the all parameters. Each parameter is converted to a string before it is used. [0311]
  • 3.6.4 Date Function [0312]
  • date([type,]p1)_object [0313]
  • The date function returns either a string or an int, given various types of input data, and possibly a type parameter. If the type parameter is not specified then “short” is assumed. [0314]
  • Long [0315]
  • Returns a string formatted as follows: Weekday, Month dd, yyyy. [0316]
  • Short [0317]
  • Returns a string formatted as follows: yyyy-mm-dd. [0318]
  • Sql [0319]
  • Returns a string for use in an SQL statement formatted as follows: {d ‘yyyy-mm-dd’}. This variation is required for all SQL insert or update statements where the field type is a date or date/time. [0320]
  • 3.6.5 Div Function [0321]
  • div(p1, p2 . . . )_int [0322]
  • The div function returns the quotient of p1 divided by p2. If there are more parameters each is divided into the quotient. Each parameter is converted to an integer before it is used. [0323]
  • 3.6.6 Eq Function [0324]
  • eq(p1, p2)_boolean [0325]
  • The eq function returns true if the two parameters are the same. A good attempt is made to convert the second parameter to the same type as the first before comparison. [0326]
  • 3.6.7 Ge Function [0327]
  • ge(p1, p2)_boolean [0328]
  • The ge function returns true if p1>=p2. A good attempt is made to convert the second parameter to the same type as the first before comparison. [0329]
  • 3.6.8 Gt Function [0330]
  • ge(p1, p2)_boolean [0331]
  • The ge function returns true if p1>p2. A good attempt is made to convert the second parameter to the same type as the first before comparison. [0332]
  • 3.6.9 Html Function [0333]
  • html([noTags,]p1)_string [0334]
  • The html function converts the to HTML format. Its does this by looking for certain characters and converting them to the proper HTML tags. If noTags is specified then it is assumed that the input text contains no HTML, so anything resembling HTML is fixed. You will probably use this function heavily for scripts designed for the web, unless you store HTML directly in your database. Here are the conversions that take place within this function: [0335]
    From To Conditions and Comments
    \r, \n, or \r\n <br>
    \t &nbsp;&nbsp;&nbsp;&nbsp;
    <sp><sp>... &nbsp;...<sp> <sp> means a space characetr
    < &amp;lt; If noTags is specified
    > &amp;gt; If noTags is specified
    & &amp;amp;
    ; &semi;
    * <ul><li> Unordered list; must begin a line
    **... <ul><ul><li> Higher level lists; must begin a line
    # <ol><li> Ordered list; must begin a line
    ##... <ol><ol><li> Higher level lists; must begin a line
    {circumflex over ( )} <blockquote> Indented block
    {circumflex over ( )}{circumflex over ( )}... <blockquote><blockquote> Higher level indents; must begin a
    line
    (c) &amp;copy; ©
    (r) &amp;reg; ®
    (tm) <small><sup>TM</sup></small>
    (sm) <small><sup>SM</sup></small> SM
  • 3.6.10 If Function [0336]
  • if(p1, p2, p3)_boolean [0337]
  • The if function converts p1 to a boolean and returns p2 if p1 evaluates to true, or p3 otherwise. [0338]
  • 3.6.11 IndexOf Function [0339]
  • indexOf(p1, p2)_int [0340]
  • The indexOf function returns the index of the p2 if found within p1. Both parameters are converted to strings before they are used. If p2 is not found within p1 then −1 is returned. [0341]
  • 3.6.12 Int Function [0342]
  • int(p1[, p2, p3])_int [0343]
  • The int function converts p1 to an integer. If p2 and p3 are specified then p1 will be range checked. If p1 is below p2 then the result will be p2. If p1 is above p3 then the result will be p3. [0344]
  • 3.6.13 IsDate Function [0345]
  • isDate(p1)_boolean [0346]
  • The isDate function returns true if p1 is or can be converted to a date. [0347]
  • 3.6.14 IsNull Function [0348]
  • isNull(p1)_boolean [0349]
  • The isNull function returns true if p1 is null. [0350]
  • 3.6.15 Le Function [0351]
  • le(p1, p2)_boolean [0352]
  • The le function returns true if p1<=p2. A good attempt is made to convert the second parameter to the same type as the first before comparison. [0353]
  • 3.6.16 Length Function [0354]
  • length(p1)_int [0355]
  • The length function returns the length of p1. P1 is converted to a string before it is used. [0356]
  • 3.6.17 Limit Function [0357]
  • limit(p1, p2)_string [0358]
  • The limit function returns the truncation of the p1 if its length is greater than p2. P1 is converted to a string and p2 is converted to an int before they are used. [0359]
  • 3.6.18 LowerCase Function [0360]
  • lowerCase(p1)_string [0361]
  • The lowerCase function converts all characters of p1 to lower case and returns it. [0362]
  • 3.6.19 Lt Function [0363]
  • lt(p1, p2)_boolean [0364]
  • The lt function returns true if p1<p2. A good attempt is made to convert the second parameter to the same type as the first before comparison. [0365]
  • 3.6.20 Mod Function [0366]
  • mod(p1, p2 . . . )_int [0367]
  • The mod function returns the remainder of p1 divided by p2. If there are more parameters each is divided into the previous remainder resulting in new remainder. Each parameter is converted to an integer before it is used. [0368]
  • 3.6.21 Mul Function [0369]
  • mul(p1 . . . )_int [0370]
  • The mul function returns the product of all the parameters. Each parameter is converted to an integer before it is used. [0371]
  • 3.6.22 Ne Function [0372]
  • ne(p1, p[0373] 2)_boolean
  • The ne function returns true if the two parameters are not the same. A good attempt is made to convert the second parameter to the same type as the first before comparison. [0374]
  • 3.6.23 Not Function [0375]
  • not(p1)_boolean [0376]
  • The not function returns the boolean negation of p1. P1 in converted to a boolean before its used. [0377]
  • 3.6.24 Now Function [0378]
  • now( )_time [0379]
  • The now function returns the current time of day. [0380]
  • 3.6.25 Or Function [0381]
  • or(p1 . . . )_boolean [0382]
  • The or function returns the boolean or of all its parameters. Each parameter converted to a boolean before it's used. [0383]
  • 3.6.26 Quote Function [0384]
  • quote(p1)_string [0385]
  • The quote function returns p1 as a string with single quotes around it, or the word NULL if p1 is null. [0386]
  • 3.6.27 Strip Function [0387]
  • strip(links, p1)_string [0388]
  • The strip function returns p1 with all hyperlinks URLs, domain names and image tags removed from it. P1 is converted to a string before it is used. [0389]
  • 3.6.28 Sub Function [0390]
  • sub(p1, p2 . . . )_boolean [0391]
  • The sub function subtracts all other parameters from p1 and returns the result. Each parameter converted to an int before it's used. [0392]
  • 3.6.29 Today Function [0393]
  • today( )_date [0394]
  • The today function returns the current date. [0395]
  • 3.6.30 UpperCase Function [0396]
  • upperCase(p1)_string [0397]
  • The upperCase function converts all characters of p1 to upper case and returns it. [0398]
  • 3.6.31 Url Function [0399]
  • url(p1)_string [0400]
  • The url function formats p1 as a string with characters that are not allowed in a URL converted to % hex. Use this when you need to put a field value into an HTML URL. [0401]
  • xor(a, b), neg(a) [0402]
  • These functions will take the place of in-line operators, which I'm also planning to add, eventually. They will return int, float, or boolean results based on their input parameters. [0403]
  • time([<time format>,]<value>) [0404]
  • The time function returns the current time as a formatted string, or an integer in a few cases. The variation you choose specifies what the result will look like. [0405]
  • short: 2:32 PM (This is the default) [0406]
  • medium: 2:32:15 PM [0407]
  • long: 2:32:15 PM MDT [0408]
  • hour: 2 (integer) [0409]
  • hour24: 14 (integer) [0410]
  • minute: 32 (integer) [0411]
  • second: 15 (integer) [0412]
  • ampm: PM [0413]
  • sql: {t ‘14:32:15’}[0414]
  • float(data, [digits])_float [0415]
  • This function converts the data to a floating-point number. If you specify another parameter then the number will be truncated to that number of digits after the decimal point. [0416]
  • quotes(string)_string [0417]
  • This is the same a quote but it returns its parameter in double quotes, “”. [0418]
  • Thus, as discussed herein, the embodiments of the present invention embrace the field of dynamic computer document creation. In particular, the present invention relates to systems and methods for providing a scripting language that uses script codes in a document formatted for an independent application. While implementation of the present invention is particularly well suited for creating dynamic HTML documents with database information using scripting commands, the present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.[0419]

Claims (20)

What is claimed is:
1. In a system that includes a computer device, a method for facilitating the creation of a web page using a script command and a database, the method comprising the steps for:
creating a text-based document;
adding a server-side script command to the text-based document to create a mixed-format scripted document, wherein the server-side script command provides increased functionality to the web page;
using an interpreter to process the scripting command;
selectively accessing a database when the text-based document is requested by a browser; and
providing the web page on a display device.
2. A method as recited in claim 1, wherein the interpreter is a Java servlet.
3. A method as recited in claim 1, wherein the text-based document is a one of:
(i) an HTML document;
(ii) a spreadsheet; and
(iii) a word-processing document.
4. A method as recited in claim 1, wherein the step for using an interpreter to process the scripting command comprises the step for using the interpreter to scan the text-based document for the server-side script command.
5. A method as recited in claim 4, wherein the step for using an interpreter to process the scripting command further comprises the step for using the interpreter to execute the server-side script command upon encountering the server-side script command.
6. A method as recited in claim 5, wherein the step for using an interpreter to execute the server-side script command initiates the step for selectively accessing a database.
7. A method as recited in claim 6, wherein the step for selectively accessing a database comprises the steps for:
(i) processing information from the database;
(ii) returning a result to the browser; and
(iii) stripping the script command from a resulting document.
8. A method as recited in claim 7, wherein the resulting document is an HTML document without an extraneous tag.
9. A method as recited in claim 8, wherein the browser and the display device are at a client computer.
10. A method as recited in claim 1, wherein the step for adding a server-side script command is performed using one of:
(i) an HTML editor;
(ii) a word processor; and
(iii) a text editor.
11. In a networked system that includes a client and a server, a method for facilitating creation of a web page for display at the client, the method comprising the steps for:
initiating a request from a client computer device to a web server for information corresponding to a web page, wherein the web page is represented by a URL address that is located on the web server;
using the web server to locate a document associated with the URL address;
using the web server to check the file extension of the document to determine whether a script command is located in the document;
if the script command is located in the document, sending the document to an interpreter to execute the script command;
using the interpreter to selectively accessing a database; and
sending results to the client computer device for display of the web page on a display device.
12. The method as recited in claim 11, wherein the step for initiating a request is performed by a web browser of the client computer device.
13. The method as recited in claim 11, wherein the document is a text-based document that includes a server-side script command to create a mixed-format scripted document that provides increased functionality to the web page.
14. A method as recited in claim 13, wherein the text-based document is a one of:
(i) an HTML document;
(ii) a spreadsheet; and
(iii) a word-processing document.
15. The method as recited in claim 11, wherein the step for sending the document to an interpreter to execute the script command comprises the step for loading and parsing the script command.
16. A method as recited in claim 1, wherein the interpreter is a Java servlet.
17. A computer program product for implementing within a computer system a method for facilitating the creation of a web page using a script command and a database, the computer program product comprising:
a computer readable medium for providing computer program code means utilized to implement the method, wherein the computer program code means is comprised of executable code for implementing the steps for:
creating a text-based document;
adding a server-side script command to the text-based document to create a mixed-format scripted document, wherein the server-side script command provides increased functionality to the web page;
using an interpreter to process the scripting command;
selectively accessing information from a database; and
providing the web page on a display device.
18. A computer program product as recited in claim 17, wherein the step for using an interpreter to process the scripting command comprises the steps for
using the interpreter to scan the text-based document for the server-side script command; and
using the interpreter to execute the server-side script command upon encountering the server-side script command.
19. A computer program product as recited in claim 18, wherein the step for using an interpreter to execute the server-side script command initiates the step for selectively accessing a database.
20. A computer program product as recited in claim 19, wherein the step for selectively accessing a database comprises the steps for:
processing information from the database;
returning a result to the browser; and
stripping the script command from a resulting document.
US10/191,361 1999-03-11 2002-07-08 Providing a server-side scripting language and programming tool Abandoned US20030140045A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/191,361 US20030140045A1 (en) 1999-03-11 2002-07-08 Providing a server-side scripting language and programming tool

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/266,357 US6470349B1 (en) 1999-03-11 1999-03-11 Server-side scripting language and programming tool
US10/191,361 US20030140045A1 (en) 1999-03-11 2002-07-08 Providing a server-side scripting language and programming tool

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/266,357 Continuation US6470349B1 (en) 1999-03-11 1999-03-11 Server-side scripting language and programming tool

Publications (1)

Publication Number Publication Date
US20030140045A1 true US20030140045A1 (en) 2003-07-24

Family

ID=23014227

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/266,357 Expired - Lifetime US6470349B1 (en) 1999-03-11 1999-03-11 Server-side scripting language and programming tool
US10/191,361 Abandoned US20030140045A1 (en) 1999-03-11 2002-07-08 Providing a server-side scripting language and programming tool

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/266,357 Expired - Lifetime US6470349B1 (en) 1999-03-11 1999-03-11 Server-side scripting language and programming tool

Country Status (1)

Country Link
US (2) US6470349B1 (en)

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041077A1 (en) * 2001-01-24 2003-02-27 Davis Russell T. RDX enhancement of system and method for implementing reusable data markup language (RDL)
US20030220989A1 (en) * 2002-05-23 2003-11-27 Michael Tsuji Method and system for client browser update
US20040103199A1 (en) * 2002-11-22 2004-05-27 Anthony Chao Method and system for client browser update from a lite cache
US20040107183A1 (en) * 2002-12-03 2004-06-03 Jp Morgan Chase Bank Method for simplifying databinding in application programs
US20040254824A1 (en) * 2003-01-07 2004-12-16 Alex Loucaides System and method for process scheduling
US20050021502A1 (en) * 2003-05-23 2005-01-27 Benjamin Chen Data federation methods and system
US20050065965A1 (en) * 2003-09-19 2005-03-24 Ziemann David M. Navigation of tree data structures
US20050160431A1 (en) * 2002-07-29 2005-07-21 Oracle Corporation Method and mechanism for debugging a series of related events within a computer system
US20050222990A1 (en) * 2004-04-06 2005-10-06 Milne Kenneth T Methods and systems for using script files to obtain, format and disseminate database information
US20050262021A1 (en) * 2004-05-21 2005-11-24 Eric Wood Method and system for performing automated transactions using a server-side script-engine
US20060053369A1 (en) * 2004-09-03 2006-03-09 Henri Kalajian System and method for managing template attributes
US20060059210A1 (en) * 2004-09-16 2006-03-16 Macdonald Glynne Generic database structure and related systems and methods for storing data independent of data type
US20060080255A1 (en) * 1999-02-09 2006-04-13 The Chase Manhattan Bank System and method for back office processing of banking transactions using electronic files
US7040382B2 (en) * 2004-07-06 2006-05-09 Hul-Chun Hsu End surface capillary structure of heat pipe
US7096417B1 (en) * 1999-10-22 2006-08-22 International Business Machines Corporation System, method and computer program product for publishing interactive web content as a statically linked web hierarchy
US20060200508A1 (en) * 2003-08-08 2006-09-07 Jp Morgan Chase Bank System for archive integrity management and related methods
US20060277286A1 (en) * 2005-06-02 2006-12-07 Oracle International Corporation Globalization framework for providing locale-specific services using client-side scripting languages
US7165190B1 (en) 2002-07-29 2007-01-16 Oracle International Corporation Method and mechanism for managing traces within a computer system
US20070033520A1 (en) * 2005-08-08 2007-02-08 Kimzey Ann M System and method for web page localization
US7200588B1 (en) 2002-07-29 2007-04-03 Oracle International Corporation Method and mechanism for analyzing trace data using a database management system
US20070256062A1 (en) * 2006-04-29 2007-11-01 Jennifer Madden Computer programming and markup language source code visualization tool
US20080028340A1 (en) * 1999-05-21 2008-01-31 E-Numerate Solutions, Inc. Tree view for reusable data markup language
US7376937B1 (en) 2001-05-31 2008-05-20 Oracle International Corporation Method and mechanism for using a meta-language to define and analyze traces
US7380239B1 (en) * 2001-05-31 2008-05-27 Oracle International Corporation Method and mechanism for diagnosing computer applications using traces
US20090036095A1 (en) * 2007-07-30 2009-02-05 Lsi Corporation Information security and delivery method and apparatus
US20090132466A1 (en) * 2004-10-13 2009-05-21 Jp Morgan Chase Bank System and method for archiving data
US7650355B1 (en) * 1999-05-21 2010-01-19 E-Numerate Solutions, Inc. Reusable macro markup language
US20100257612A1 (en) * 2009-04-07 2010-10-07 Mcguire Kevin M Token-based payment processing system
US7865574B1 (en) * 2003-10-09 2011-01-04 Sprint Communications Company L.P. System for processing data retrieved from an information service layer
US20110161840A1 (en) * 2009-12-24 2011-06-30 International Business Machines Corporation Performance of template based javascript widgets
US8065606B1 (en) 2005-09-16 2011-11-22 Jpmorgan Chase Bank, N.A. System and method for automating document generation
US20110307710A1 (en) * 2009-04-07 2011-12-15 Princeton Payment Solutions Tokenized Payment Processing Schemes
US8104076B1 (en) 2006-11-13 2012-01-24 Jpmorgan Chase Bank, N.A. Application access control system
US9038177B1 (en) 2010-11-30 2015-05-19 Jpmorgan Chase Bank, N.A. Method and system for implementing multi-level data fusion
US9262384B2 (en) 1999-05-21 2016-02-16 E-Numerate Solutions, Inc. Markup language system, method, and computer program product
US9262383B2 (en) 1999-05-21 2016-02-16 E-Numerate Solutions, Inc. System, method, and computer program product for processing a markup document
US9268748B2 (en) 1999-05-21 2016-02-23 E-Numerate Solutions, Inc. System, method, and computer program product for outputting markup language documents
US9292588B1 (en) 2011-07-20 2016-03-22 Jpmorgan Chase Bank, N.A. Safe storing data for disaster recovery
CN109871505A (en) * 2019-01-28 2019-06-11 维沃移动通信有限公司 Obtain method, Cloud Server and the terminal device of web page contents
US10540373B1 (en) 2013-03-04 2020-01-21 Jpmorgan Chase Bank, N.A. Clause library manager

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US6832368B1 (en) * 1999-02-17 2004-12-14 International Business Machines Corporation Method and system for enhancing the performance of interpreted web applications
US6748580B1 (en) * 1999-04-22 2004-06-08 International Business Machines Corporation Method and apparatus for creating software tools using a JTML interface
US6986101B2 (en) * 1999-05-06 2006-01-10 International Business Machines Corporation Method and apparatus for converting programs and source code files written in a programming language to equivalent markup language files
US7594166B1 (en) * 1999-05-20 2009-09-22 Microsoft Corporation Dynamic web page behaviors
US6920608B1 (en) * 1999-05-21 2005-07-19 E Numerate Solutions, Inc. Chart view for reusable data markup language
US7165243B1 (en) * 1999-06-25 2007-01-16 Sun Microsystems, Inc. Multi-lingual tag extension mechanism
US6889359B1 (en) * 1999-10-07 2005-05-03 International Business Machines Corporation Method for providing a visual representation of dynamic HTML table attributes
US6715129B1 (en) * 1999-10-13 2004-03-30 International Business Machines Corporation Achieving application-specific document content by transcoding using Java Server Pages
US6732148B1 (en) * 1999-12-28 2004-05-04 International Business Machines Corporation System and method for interconnecting secure rooms
US7360153B1 (en) * 2000-01-17 2008-04-15 Lucent Technologies Inc. Method and apparatus for importing digital switching system data into a spreadsheet program
AU2001234758A1 (en) * 2000-02-04 2001-08-14 America Online Incorporated High performance "freeze-dried" dynamic web page generation
WO2001061568A2 (en) * 2000-02-17 2001-08-23 E-Numerate Solutions, Inc. Rdl search engine
US6754677B1 (en) * 2000-05-30 2004-06-22 Outlooksoft Corporation Method and system for facilitating information exchange
US6715141B1 (en) * 2000-06-15 2004-03-30 Bruce Hodge Multiphase single pass interpreter
US7191394B1 (en) 2000-06-21 2007-03-13 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US7346848B1 (en) 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US6948135B1 (en) 2000-06-21 2005-09-20 Microsoft Corporation Method and systems of providing information to computer users
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7624356B1 (en) 2000-06-21 2009-11-24 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US6883168B1 (en) 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US7117435B1 (en) 2000-06-21 2006-10-03 Microsoft Corporation Spreadsheet fields in text
JP2002140325A (en) * 2000-10-31 2002-05-17 Fujitsu Ltd Medium with document generating program recorded thereon
US6687897B2 (en) * 2000-12-01 2004-02-03 Microsoft Corporation XML based script automation
JP4644940B2 (en) * 2001-01-17 2011-03-09 ソニー株式会社 Billing method, script conversion system and method
US7228493B2 (en) * 2001-03-09 2007-06-05 Lycos, Inc. Serving content to a client
US20030018669A1 (en) * 2001-04-02 2003-01-23 International Business Machines Corporation System and method for associating a destination document to a source document during a save process
US7685229B1 (en) 2001-05-15 2010-03-23 Adobe Systems Incorporated System and method for displaying server side code results in an application program
US7480910B1 (en) * 2001-05-15 2009-01-20 Adobe Systems Incorporated System and method for providing information and associating information
US7013341B1 (en) * 2001-07-13 2006-03-14 Unisys Corporation Output area interpretation control
US7349916B2 (en) * 2001-07-17 2008-03-25 International Business Machines Corporation Information organization using markup languages
US7117479B2 (en) * 2001-10-01 2006-10-03 Sun Microsystems, Inc. Language-sensitive whitespace adjustment in a software engineering tool
US7240331B2 (en) * 2002-01-16 2007-07-03 Xerox Corporation Bi-valuation of programming statements
US7089566B1 (en) * 2002-02-07 2006-08-08 Unisys Corporation Method for accessing object linking-embedding database data via JAVA database connectivity
US20030182621A1 (en) * 2002-03-21 2003-09-25 Intel Corporation Websheets
KR20030087737A (en) * 2002-05-09 2003-11-15 주식회사 세중나모인터랙티브 Processing system of web document and processing method thereof
US20040006763A1 (en) * 2002-06-28 2004-01-08 Van De Vanter Michael L. Undo/redo technique with insertion point state handling for token-oriented representation of program code
US20040022312A1 (en) * 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
GB0227993D0 (en) * 2002-12-02 2003-01-08 Ncr Int Inc A system and method for enabling communication between a web browser and a software agent infrastructure
US7415672B1 (en) 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US7370066B1 (en) 2003-03-24 2008-05-06 Microsoft Corporation System and method for offline editing of data files
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US7296017B2 (en) 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7117483B2 (en) * 2003-04-15 2006-10-03 Microsoft Corporation Server debugging framework using scripts
US20040225998A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Undo/Redo technique with computed of line information in a token-oriented representation of program code
US20040225997A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Efficient computation of line information in a token-oriented representation of program code
US7451392B1 (en) 2003-06-30 2008-11-11 Microsoft Corporation Rendering an HTML electronic form by applying XSLT to XML using a solution
US7296187B1 (en) 2003-07-14 2007-11-13 Zilog, Inc. Hardware debug device having script-based host interface
US7406660B1 (en) 2003-08-01 2008-07-29 Microsoft Corporation Mapping between structured data and a visual surface
US7334187B1 (en) 2003-08-06 2008-02-19 Microsoft Corporation Electronic form aggregation
US20050149910A1 (en) * 2003-10-31 2005-07-07 Prisament Raymond J. Portable and simplified scripting language parser
US7458019B2 (en) * 2004-01-20 2008-11-25 International Business Machines Corporation System and method for creating and rendering client-side user interfaces via custom tags
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US8250034B2 (en) * 2004-04-14 2012-08-21 Verisign, Inc. Method and apparatus to provide visual editing
US7496837B1 (en) 2004-04-29 2009-02-24 Microsoft Corporation Structural editing with schema awareness
US7281018B1 (en) 2004-05-26 2007-10-09 Microsoft Corporation Form template data source change
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
EP1781087A4 (en) * 2004-06-21 2009-12-02 Equestron Llc Method and apparatus for evaluating animals' health and performance
US7712088B2 (en) * 2004-07-08 2010-05-04 Microsoft Corporation Method and system for a batch parser
US7692636B2 (en) 2004-09-30 2010-04-06 Microsoft Corporation Systems and methods for handwriting to a screen
US8487879B2 (en) 2004-10-29 2013-07-16 Microsoft Corporation Systems and methods for interacting with a computer through handwriting to a screen
US20060098673A1 (en) * 2004-11-09 2006-05-11 Alcatel Input queue packet switch architecture and queue service discipline
US7716231B2 (en) * 2004-11-10 2010-05-11 Microsoft Corporation System and method for generating suggested alternatives for visual or audible submissions
US7712022B2 (en) 2004-11-15 2010-05-04 Microsoft Corporation Mutually exclusive options in electronic forms
US7721190B2 (en) 2004-11-16 2010-05-18 Microsoft Corporation Methods and systems for server side form processing
US7424646B2 (en) * 2004-11-30 2008-09-09 International Business Machines Corporation Imposing a logical structure on an unstructured trace record for trace analysis
US20060129893A1 (en) * 2004-11-30 2006-06-15 Smith Alan R Apparatus, system, and method for criteria driven summarization of trace entry data
US7904801B2 (en) 2004-12-15 2011-03-08 Microsoft Corporation Recursive sections in electronic forms
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US7725834B2 (en) 2005-03-04 2010-05-25 Microsoft Corporation Designer-created aspect for an electronic form template
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US7543188B2 (en) * 2005-06-29 2009-06-02 Oracle International Corp. Browser based remote control of functional testing tool
US8200975B2 (en) 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US7945853B2 (en) * 2005-09-12 2011-05-17 Microsoft Corporation Script markup
US7814410B2 (en) * 2005-09-12 2010-10-12 Workman Nydegger Initial server-side content rendering for client-script web pages
US8001459B2 (en) 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US7779343B2 (en) 2006-01-30 2010-08-17 Microsoft Corporation Opening network-enabled electronic documents
JP5551938B2 (en) * 2007-02-09 2014-07-16 ノキア コーポレイション Method and apparatus for providing information content to be displayed on a client device
JP2008209985A (en) * 2007-02-23 2008-09-11 Canon Inc Data processor, electronic document registration method and computer program
US7689665B2 (en) * 2007-04-27 2010-03-30 Microsoft Corporation Dynamically loading scripts
US9906549B2 (en) * 2007-09-06 2018-02-27 Microsoft Technology Licensing, Llc Proxy engine for custom handling of web content
US20090070663A1 (en) * 2007-09-06 2009-03-12 Microsoft Corporation Proxy engine for custom handling of web content
US8407668B2 (en) * 2007-10-26 2013-03-26 Microsoft Corporation Model based spreadsheet scripting language
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) * 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8214903B2 (en) * 2009-10-02 2012-07-03 International Business Machines Corporation Analysis of scripts
US20110082875A1 (en) * 2009-10-02 2011-04-07 Netquote, Inc. System and method for dynamic payload generation on shared sites
US20130159889A1 (en) * 2010-07-07 2013-06-20 Li-Wei Zheng Obtaining Rendering Co-ordinates Of Visible Text Elements
US8671389B1 (en) * 2011-09-27 2014-03-11 Google Inc. Web application resource manager on the web and localizable components
US9141393B2 (en) * 2011-11-17 2015-09-22 EnterCalo, Inc. Business content authoring and distribution
US20130185623A1 (en) * 2012-01-12 2013-07-18 International Business Machines Corporation Instructing web clients to ignore scripts in specified portions of web pages
CN107817989A (en) * 2017-10-18 2018-03-20 南京邮数通信息科技有限公司 A kind of method that APP pop-ups are realized based on JS links
CN111143330B (en) * 2019-12-27 2023-10-03 湖南亚信软件有限公司 Method and device for realizing multi-mode database analysis engine

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530852A (en) * 1994-12-20 1996-06-25 Sun Microsystems, Inc. Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics
US5537586A (en) * 1992-04-30 1996-07-16 Individual, Inc. Enhanced apparatus and methods for retrieving and selecting profiled textural information records from a database of defined category structures
US5708826A (en) * 1995-05-16 1998-01-13 Fujitsu Limited Apparatus and method for converting presentation data
US5708825A (en) * 1995-05-26 1998-01-13 Iconovex Corporation Automatic summary page creation and hyperlink generation
US5727156A (en) * 1996-04-10 1998-03-10 Hotoffice Technologies, Inc. Internet-based automatic publishing system
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5748188A (en) * 1995-10-12 1998-05-05 Ncr Corporation Hypertext markup language (HTML) extensions for graphical reporting over an internet
US5761673A (en) * 1996-01-31 1998-06-02 Oracle Corporation Method and apparatus for generating dynamic web pages by invoking a predefined procedural package stored in a database
US5812134A (en) * 1996-03-28 1998-09-22 Critical Thought, Inc. User interface navigational system & method for interactive representation of information contained within a database
US6073160A (en) * 1996-12-18 2000-06-06 Xerox Corporation Document communications controller
US6119166A (en) * 1997-03-28 2000-09-12 International Business Machines Corporation Controlling communications with local applications using a browser application
US6178439B1 (en) * 1997-12-23 2001-01-23 British Telecommunications Public Limited Company HTTP session control
US6638315B2 (en) * 1998-09-21 2003-10-28 Wall Data Incorporated Method for preserving the state of a java applet during the lifetime of its container
US6651108B2 (en) * 1995-08-14 2003-11-18 Next Software, Inc. Method and apparatus for generating object-oriented world wide web pages

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5890170A (en) * 1996-02-28 1999-03-30 Silicon Graphics, Inc. Method and apparatus for publishing documents in a hypertextural network environment
US5898835A (en) * 1996-08-16 1999-04-27 Electronic Data Systems Corporation System and method for remotely executing a command
CA2198189C (en) * 1997-02-21 2001-05-29 Ibm Canada Limited-Ibm Canada Limitee Internet browser based data entry architecture
US5987523A (en) * 1997-06-04 1999-11-16 International Business Machines Corporation Applet redirection for controlled access to non-orginating hosts

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537586A (en) * 1992-04-30 1996-07-16 Individual, Inc. Enhanced apparatus and methods for retrieving and selecting profiled textural information records from a database of defined category structures
US5530852A (en) * 1994-12-20 1996-06-25 Sun Microsystems, Inc. Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics
US5708826A (en) * 1995-05-16 1998-01-13 Fujitsu Limited Apparatus and method for converting presentation data
US5708825A (en) * 1995-05-26 1998-01-13 Iconovex Corporation Automatic summary page creation and hyperlink generation
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US6651108B2 (en) * 1995-08-14 2003-11-18 Next Software, Inc. Method and apparatus for generating object-oriented world wide web pages
US5748188A (en) * 1995-10-12 1998-05-05 Ncr Corporation Hypertext markup language (HTML) extensions for graphical reporting over an internet
US5761673A (en) * 1996-01-31 1998-06-02 Oracle Corporation Method and apparatus for generating dynamic web pages by invoking a predefined procedural package stored in a database
US5812134A (en) * 1996-03-28 1998-09-22 Critical Thought, Inc. User interface navigational system & method for interactive representation of information contained within a database
US5727156A (en) * 1996-04-10 1998-03-10 Hotoffice Technologies, Inc. Internet-based automatic publishing system
US6073160A (en) * 1996-12-18 2000-06-06 Xerox Corporation Document communications controller
US6119166A (en) * 1997-03-28 2000-09-12 International Business Machines Corporation Controlling communications with local applications using a browser application
US6178439B1 (en) * 1997-12-23 2001-01-23 British Telecommunications Public Limited Company HTTP session control
US6638315B2 (en) * 1998-09-21 2003-10-28 Wall Data Incorporated Method for preserving the state of a java applet during the lifetime of its container

Cited By (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370232B2 (en) 1999-02-09 2013-02-05 Jpmorgan Chase Bank, National Association System and method for back office processing of banking transactions using electronic files
US8600893B2 (en) 1999-02-09 2013-12-03 Jpmorgan Chase Bank, National Association System and method for back office processing of banking transactions using electronic files
US20060080255A1 (en) * 1999-02-09 2006-04-13 The Chase Manhattan Bank System and method for back office processing of banking transactions using electronic files
US10467688B1 (en) 1999-02-09 2019-11-05 Jpmorgan Chase Bank, N.A. System and method for back office processing of banking transactions using electronic files
US20080282139A1 (en) * 1999-05-21 2008-11-13 E-Numerate Solutions, Inc. Tree view for reusable data markup language
US20080028340A1 (en) * 1999-05-21 2008-01-31 E-Numerate Solutions, Inc. Tree view for reusable data markup language
US9262384B2 (en) 1999-05-21 2016-02-16 E-Numerate Solutions, Inc. Markup language system, method, and computer program product
US8489982B2 (en) 1999-05-21 2013-07-16 E-Numerate Solutions, Inc. Reusable data markup language
US8185816B2 (en) 1999-05-21 2012-05-22 E-Numerate Solutions, Inc. Combining reusable data markup language documents
US9268748B2 (en) 1999-05-21 2016-02-23 E-Numerate Solutions, Inc. System, method, and computer program product for outputting markup language documents
US9262383B2 (en) 1999-05-21 2016-02-16 E-Numerate Solutions, Inc. System, method, and computer program product for processing a markup document
US7650355B1 (en) * 1999-05-21 2010-01-19 E-Numerate Solutions, Inc. Reusable macro markup language
US7636770B2 (en) 1999-10-22 2009-12-22 International Business Machines Corporation System, method and computer program product for publishing interactive web content as a statically linked web hierarchy
US7096417B1 (en) * 1999-10-22 2006-08-22 International Business Machines Corporation System, method and computer program product for publishing interactive web content as a statically linked web hierarchy
US20060248453A1 (en) * 1999-10-22 2006-11-02 International Business Machine Corporation System, method and computer program product for publishing interactive web content as a statically linked web hierarchy
US20030041077A1 (en) * 2001-01-24 2003-02-27 Davis Russell T. RDX enhancement of system and method for implementing reusable data markup language (RDL)
US9600842B2 (en) 2001-01-24 2017-03-21 E-Numerate Solutions, Inc. RDX enhancement of system and method for implementing reusable data markup language (RDL)
US7376937B1 (en) 2001-05-31 2008-05-20 Oracle International Corporation Method and mechanism for using a meta-language to define and analyze traces
US7380239B1 (en) * 2001-05-31 2008-05-27 Oracle International Corporation Method and mechanism for diagnosing computer applications using traces
US7987246B2 (en) 2002-05-23 2011-07-26 Jpmorgan Chase Bank Method and system for client browser update
US20030220989A1 (en) * 2002-05-23 2003-11-27 Michael Tsuji Method and system for client browser update
US7512954B2 (en) 2002-07-29 2009-03-31 Oracle International Corporation Method and mechanism for debugging a series of related events within a computer system
US7165190B1 (en) 2002-07-29 2007-01-16 Oracle International Corporation Method and mechanism for managing traces within a computer system
US7200588B1 (en) 2002-07-29 2007-04-03 Oracle International Corporation Method and mechanism for analyzing trace data using a database management system
US20050160431A1 (en) * 2002-07-29 2005-07-21 Oracle Corporation Method and mechanism for debugging a series of related events within a computer system
US20040103199A1 (en) * 2002-11-22 2004-05-27 Anthony Chao Method and system for client browser update from a lite cache
US20040107183A1 (en) * 2002-12-03 2004-06-03 Jp Morgan Chase Bank Method for simplifying databinding in application programs
US20040254824A1 (en) * 2003-01-07 2004-12-16 Alex Loucaides System and method for process scheduling
US8032439B2 (en) 2003-01-07 2011-10-04 Jpmorgan Chase Bank, N.A. System and method for process scheduling
US10692135B2 (en) 2003-01-07 2020-06-23 Jpmorgan Chase Bank, N.A. System and method for process scheduling
US20050021502A1 (en) * 2003-05-23 2005-01-27 Benjamin Chen Data federation methods and system
US20060200508A1 (en) * 2003-08-08 2006-09-07 Jp Morgan Chase Bank System for archive integrity management and related methods
US20050065965A1 (en) * 2003-09-19 2005-03-24 Ziemann David M. Navigation of tree data structures
US7865574B1 (en) * 2003-10-09 2011-01-04 Sprint Communications Company L.P. System for processing data retrieved from an information service layer
US20050222990A1 (en) * 2004-04-06 2005-10-06 Milne Kenneth T Methods and systems for using script files to obtain, format and disseminate database information
US8402433B2 (en) * 2004-05-21 2013-03-19 Sap Aktiengesellschaft Method and system for performing automated transactions using a server-side script-engine
US20050262021A1 (en) * 2004-05-21 2005-11-24 Eric Wood Method and system for performing automated transactions using a server-side script-engine
US7040382B2 (en) * 2004-07-06 2006-05-09 Hul-Chun Hsu End surface capillary structure of heat pipe
US20060053369A1 (en) * 2004-09-03 2006-03-09 Henri Kalajian System and method for managing template attributes
US20060059210A1 (en) * 2004-09-16 2006-03-16 Macdonald Glynne Generic database structure and related systems and methods for storing data independent of data type
US20090132466A1 (en) * 2004-10-13 2009-05-21 Jp Morgan Chase Bank System and method for archiving data
WO2006132676A1 (en) * 2005-06-02 2006-12-14 Oracle International Corporation Globalization framework for providing locale-specific services using client-side scripting languages
US9245032B2 (en) * 2005-06-02 2016-01-26 Oracle International Corporation Globalization framework for providing locale-specific services using client-side scripting languages
US20060277286A1 (en) * 2005-06-02 2006-12-07 Oracle International Corporation Globalization framework for providing locale-specific services using client-side scripting languages
US20070033520A1 (en) * 2005-08-08 2007-02-08 Kimzey Ann M System and method for web page localization
US8065606B1 (en) 2005-09-16 2011-11-22 Jpmorgan Chase Bank, N.A. System and method for automating document generation
US8732567B1 (en) 2005-09-16 2014-05-20 Jpmorgan Chase Bank, N.A. System and method for automating document generation
US20070256062A1 (en) * 2006-04-29 2007-11-01 Jennifer Madden Computer programming and markup language source code visualization tool
US8510647B2 (en) * 2006-04-29 2013-08-13 Jennifer Madden Computer programming and markup language source code visualization tool
US8104076B1 (en) 2006-11-13 2012-01-24 Jpmorgan Chase Bank, N.A. Application access control system
US20090036095A1 (en) * 2007-07-30 2009-02-05 Lsi Corporation Information security and delivery method and apparatus
US8584251B2 (en) 2009-04-07 2013-11-12 Princeton Payment Solutions Token-based payment processing system
US8763142B2 (en) * 2009-04-07 2014-06-24 Princeton Payment Solutions Tokenized payment processing schemes
US20110307710A1 (en) * 2009-04-07 2011-12-15 Princeton Payment Solutions Tokenized Payment Processing Schemes
US20100257612A1 (en) * 2009-04-07 2010-10-07 Mcguire Kevin M Token-based payment processing system
US20110161840A1 (en) * 2009-12-24 2011-06-30 International Business Machines Corporation Performance of template based javascript widgets
US10176270B2 (en) * 2009-12-24 2019-01-08 International Business Machines Corporation Performance of template based javascript widgets
CN102741811A (en) * 2009-12-24 2012-10-17 国际商业机器公司 Improving performance of template based JavaScript widgets
WO2012027385A1 (en) * 2010-08-23 2012-03-01 Princeton Payment Solutions Tokenized payment processing schemes
US9038177B1 (en) 2010-11-30 2015-05-19 Jpmorgan Chase Bank, N.A. Method and system for implementing multi-level data fusion
US9292588B1 (en) 2011-07-20 2016-03-22 Jpmorgan Chase Bank, N.A. Safe storing data for disaster recovery
US9971654B2 (en) 2011-07-20 2018-05-15 Jpmorgan Chase Bank, N.A. Safe storing data for disaster recovery
US10540373B1 (en) 2013-03-04 2020-01-21 Jpmorgan Chase Bank, N.A. Clause library manager
CN109871505A (en) * 2019-01-28 2019-06-11 维沃移动通信有限公司 Obtain method, Cloud Server and the terminal device of web page contents

Also Published As

Publication number Publication date
US6470349B1 (en) 2002-10-22

Similar Documents

Publication Publication Date Title
US6470349B1 (en) Server-side scripting language and programming tool
US7490167B2 (en) System and method for platform and language-independent development and delivery of page-based content
US6961750B1 (en) Server-side control objects for processing client-side user interface elements
US7165073B2 (en) Dynamic, hierarchical data exchange system
US5737592A (en) Accessing a relational database over the Internet using macro language files
US7296226B2 (en) XML-based multi-format business services design pattern
US7873668B2 (en) Application data binding
US20020032706A1 (en) Method and system for building internet-based applications
US20150205778A1 (en) Reducing programming complexity in applications interfacing with parsers for data elements represented according to a markup languages
US20120191840A1 (en) Managing Application State Information By Means Of A Uniform Resource Identifier (URI)
US7007266B1 (en) Method and software system for modularizing software components for business transaction applications
US20040261017A1 (en) Document generation
US20120173967A1 (en) Method and device for cascading style sheet (css) selector matching
US20080208830A1 (en) Automated transformation of structured and unstructured content
US7437663B2 (en) Offline dynamic web page generation
US6910181B2 (en) Extensible ordered information within a markup language document
Gilmore Beginning PHP and MySQL 5: From novice to professional
Walther Asp. Net Unleashed
US20040205587A1 (en) System and method for enumerating arbitrary hyperlinked structures in which links may be dynamically calculable
Keith Bulletproof Ajax
US20150324333A1 (en) Systems and methods for automatically generating hyperlinks
Naik et al. Enhancing PHP Coding with CodeIgniter: Hands-on Experience with CodeIgniter
US8527495B2 (en) Plug-in parsers for configuring search engine crawler
Goldfine Introduction to MERN Web Apps and JavaScript Algorithms
Surya et al. PHP For Beginners

Legal Events

Date Code Title Description
AS Assignment

Owner name: BROWZ GROUP, LC, UTAH

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROWZ.COM L.L.C.;REEL/FRAME:014619/0652

Effective date: 20040510

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: BROWZ LLC, UTAH

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROWZ GROUP, LC;REEL/FRAME:019649/0360

Effective date: 20070615

AS Assignment

Owner name: SILICON VALLEY BANK, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:BROWZ LLC;REEL/FRAME:034266/0015

Effective date: 20141120