WO2004015567A2 - Validation framework for validating input in a markup language page on a client computer - Google Patents

Validation framework for validating input in a markup language page on a client computer Download PDF

Info

Publication number
WO2004015567A2
WO2004015567A2 PCT/IB2003/002042 IB0302042W WO2004015567A2 WO 2004015567 A2 WO2004015567 A2 WO 2004015567A2 IB 0302042 W IB0302042 W IB 0302042W WO 2004015567 A2 WO2004015567 A2 WO 2004015567A2
Authority
WO
WIPO (PCT)
Prior art keywords
rule
input
code
client computer
computer
Prior art date
Application number
PCT/IB2003/002042
Other languages
French (fr)
Other versions
WO2004015567A3 (en
Inventor
Evan Witt
Original Assignee
Sap Aktiengesellschaft
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 Sap Aktiengesellschaft filed Critical Sap Aktiengesellschaft
Priority to AU2003228022A priority Critical patent/AU2003228022A1/en
Publication of WO2004015567A2 publication Critical patent/WO2004015567A2/en
Publication of WO2004015567A3 publication Critical patent/WO2004015567A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • the present invention generally relates to data processing and, more particularly, the invention relates to computer systems, computer programs, and methods for validating data input for client/server applications, such as Internet applications.
  • the use of electronic media to convey information among networked users has become vital in many applications.
  • One way of conveying such information is through the Internet.
  • the Internet is a distributed network of computers that provides a worldwide information resource to users.
  • the Internet has experienced exponential growth that has been fueled by the phenomenal popularity of the World Wide Web (the "Web").
  • Web World Wide Web
  • the ease of self-publication via user-created "Web pages” has helped generate tens of millions of documents on a broad range of subjects, all capable of being displayed for a computer user with access to the Web.
  • ISPs Internet Service Providers
  • a user can electronically connect his personal computer to a server at the ISP's facility using the modem and a standard telephone line or a local area network (LAN) connection.
  • the ISP's server in turn provides the user with access to the Internet.
  • a user accesses information using a computer program called a "Web browser.”
  • a Web browser provides an interface to the Web. Examples of Web browsers include Netscape NavigatorTM from Netscape Communications Corporation or Internet ExplorerTM from Microsoft Corporation.
  • To view a Web page the user uses the Web page's Uniform Resource Locator (URL) address to instruct the Web browser to access the Web page.
  • the user via the Web browser, can view or access an object in the Web page, for example, a document containing information of interest.
  • the Web browser retrieves the information and visually displays it to the user.
  • URL Uniform Resource Locator
  • a Web page can be a document, and information contained in a Web page is commonly referred to as "content.”
  • Web pages are programmed using a computer language such as hypertext markup language (HTML).
  • HTML files or ".htm” files
  • Web server When a user enters a URL address into a Web browser, the URL address is used by the Web browser to locate a Web page stored on a Web server.
  • Internet applications are software applications that are run over the Internet, through the Web browser. Internet applications have several advantages over standard software applications. For instance, Internet applications may take the processing load off of a user's computer.
  • a version of a program such as Adobe® Photoshop®, may work best with 512 MB of RAM and 2GHz processor and a large amounts of disk space.
  • This desktop software program an Internet application, a user would not need to meet these requirements. Generally, they may only need a moderately good computer and an Internet connection. Further, Internet applications can store files on a central server, further allowing users to work from any terminal instead of only their home or work computer.
  • the Web interface is becoming familiar and comfortable to users.
  • the Web interface takes advantage of the use of Internet technology, such as HTML and Javascript, to standardize programming across computer platforms of users.
  • Internet technology such as HTML and Javascript
  • Input data from the user may comprise alphanumeric data, such as calendar dates (e.g., 05/21/2002 or May 21 , 2002), hour-and-minute time designations (e.g., 08:00 AM), numbers (e.g., a postal code), or letters (e.g., ABC) to specify a name, address and the like.
  • calendar dates e.g., 05/21/2002 or May 21 , 2002
  • hour-and-minute time designations e.g., 08:00 AM
  • numbers e.g., a postal code
  • letters e.g., ABC
  • Validation may occur at the client computer or server computer.
  • the client computer may verify that a postal code entered by a user has exactly a predetermined number of digits, or the server computer may confirm that the corresponding city matches.
  • client-side validation is quicker and, therefore, preferred.
  • client-side validation historically has been coded into each Web page separately. For instance, the appropriate routines are explicitly added into each screen and associated with the appropriate events. This approach increases development time and susceptibility to bugs, while lessening the complexity of validation that can be incorporated into a Web page.
  • a robust client-side validation framework would provide several benefits to any Internet application development team and enable greater functionality to be developed in a shorter period of time.
  • any validation must be consistent across all screens of an Internet application. This is because most users expect similar or equal behavior of similar or equal screen elements on different screens of an application. For example, if a user age restriction in a trade application is 18 years of age, this age restriction should be consistently applied such that any user under 18 years of age is excluded from trade on all presentations. If a change is made to a screen element, then this change must be consistently applied to all pages of the application. For instance, if the age limit is reduced to 16 years of age, then this change must be consistently applied everywhere. However, using previous validation schemes, making such an update is time consuming and prone to error since the code for every page would need to be changed.
  • FIG. 1 illustrates a general block diagram of an exemplary computer network system for implementing embodiments of the invention
  • FIG. 2 illustrates a block diagram of an exemplary client-server environment, consistent with an embodiment of the invention, in which a server computer sends a validation rule file and a markup page to a client computer in order to provide a presentation to a user;
  • FIG. 3 illustrates a flow chart of an exemplary method for operating a client computer and a server computer, consistent with an embodiment of the invention
  • FIG. 4 illustrates a diagram of an exemplary validation rule file
  • FIG. 5 illustrates a code example for a page file
  • FIG. 6 illustrates an exemplary presentation by a browser on a client computer at a first time point
  • FIG. 7 illustrates an exemplary presentation by the browser on the client computer at a second time point, wherein the presentation includes a message to the user;
  • FIG. 8 illustrates a flow chart an exemplary method related to the operation of a browser that interprets a page and a behavior file;
  • FIG. 9 illustrates an exemplary bar chart presentation of calendar dates.
  • Embodiments of the present invention provide a validation framework for validating input at a client computer. Such embodiments may be used in connection with validating a markup language page, such as HTML pages, used in Internet applications.
  • a validation framework is provided that isolates the definition of the validation routines and events with which they are associated from the input screen at the client computer.
  • Embodiments of the invention may be implemented to provide: consistent behavior throughout the screens; the ability to update the validation behavior of all screens by only changing one file; and/or an efficient and simple framework for adding validation routine(s) to new or existing screens.
  • Embodiments of the invention may also be implemented to provide both simple and complex validation that involves cross-field checking and/or to allow for multiple validation types to be added to one field.
  • a method for operating a client computer and a server computer.
  • the method comprises: sending a validation rule file from the server computer to the client computer; sending a markup language page from the server computer to the client computer; receiving a first input value X by the client computer, the first input value X corresponding to a first input field represented in the page by first input field code; receiving a second input value Y by the client computer, the second input value Y corresponding to a second input field represented in the page by second input field code; identifying a rule in the validation rule file from attributes in the first input field code and in the second input field code; applying the rule to the first input value X and to the second input value Y; and providing a message to the user of the client computer depending on a result of the rule application.
  • the above-described method contributes to solving the drawbacks found in past approaches to validation. For instance, the method provides a validation framework to ensure data quality of user input, even when the user input requires high complexity. In addition, validation of the user input may be performed fast on the client side and consistently across all screens of an application. Further, there is no longer a need to code validation routine(s) into each page separately. Instead, appropriate validation routines may be explicitly provided as part of a validation rule file and associated with appropriate events. Moreover, consistent with the invention, development time and susceptibility to bugs is decreased and the difficulty of adding complex validation is reduced.
  • the validation method is performed such that a validation rule file is sent to the client computer and, thereafter, one or more markup language pages are sent to the client computer.
  • the validation rule file includes coded validation rule(s) or routine(s) that cause the client computer to validate user input.
  • the validation rule may change only from time to time, for example, once a week.
  • the client computer may store the validation rule file for a predetermined time period (e.g., a day, a week, etc.), before replacing the validation rule file with an updated one. Updating influences the operation of the user's browser that interprets pages received after the update.
  • the validation method may receive input values for validation by receiving values from the user who operates a keyboard.
  • the keyboard may be implemented by hardware (cf. FIG. 1) or through a software-emulation on the screen.
  • the client computer may identify the rule in the validation rule file by interpreting a JavaScript file.
  • JavaScript is a script language that may be embedded with HTML markup language. Script technology is also applicable for other language pairs.
  • the step of applying a validation rule comprises validating input values X, Y of each input field separately.
  • a validation rule may cause the browser to reject letter characters.
  • Multiple validation rules can be applied for each field, such as to validate the format and to validate a magnitude.
  • the step of applying the rule comprises validating input values X, Y for both input fields in combination.
  • the step of applying the rule comprises validating input values X, Y for both input fields in combination.
  • the input field code is a markup code (e.g., HTML) and the attributes are part of the markup code.
  • the attributes are preferably located inside ⁇ > tags.
  • a message is provided with an indication of the input field to specify that the rule has been applied. This feature is convenient, and may be supported by the "name code” attribute. Such a message may be displayed or indicated by the corresponding field (cf. FIG. 7).
  • the input field code may comprise further attributes to cross-reference the first and second input values.
  • the first input field code and the second input field code are represented in the page by code that causes the browser in the client computer to generate code upon receiving the page.
  • input field codes can be created explicitly.
  • the rule file binds the rules to functions in libraries.
  • the step of applying the rule is event-triggered.
  • application of a validation rule may be triggered upon detection of predetermined user interaction.
  • the predetermined user interaction may comprise: operating a submit button, operating a predetermined key on a computer keyboard, and/or leaving the input field.
  • the first and second values are first and second calendar dates
  • the condition i.e., for the warning message
  • the condition are, for example: the first date antecedes the second date (e.g., May 31 antecedes May 24); the first date precedes the second date; the first date and the second date coincide; an input number for a day is larger than 31 or smaller than 1 ; an input number for a month is larger than 12 or smaller than 1 and so on.
  • the first and second values are first and second time values, such as hour-and-minute values.
  • a first input field may represent the start time of a mandatory activity.
  • the validation may ensure that the field represents a time value, that the value is not omitted, and/or that it is earlier than the end time (represented by the second input field).
  • the attribute "validationType” can be a comma delimited list of the types of validation that should be added to the field.
  • attributes can be set to provide the necessary information.
  • the input field needs to be less than the activity end time.
  • the “lessThanOther” validation type needs to know where the other field is in order to check the condition.
  • the “lessThanOther” looks for an attribute called “val_otherTime,” which represents the ID of the end time. Therefore, all the information that is needed to run the test is available within the ⁇ > tags.
  • the validation framework support the validation types "required,” “time,” and “lessThanOther.”
  • numerous approaches may be used to create the necessary validation types. For example, one may first create all of the validation routines that would have to be done regardless of whether the validation framework is used.
  • standard validation routines are written which are called "timeCheck” and "formatTime.”
  • the routines may use one input element as an argument and validation may occur based on the given input field's value.
  • the timeCheck function may verify that the value is a valid time.
  • the formatTime function may be called when the value is changed. If the value is not in the standard format, the formatTime function may put it into standard format.
  • the following is an example of the code that could be used to attach routines to the time type:
  • validation routines can be added to new fields that are created dynamically from a user action. For example, if a user clicks a button to add a new activity or event, new input fields may appear on the screen. These new fields can use the validation framework comprising the rule file.
  • Embodiments of the present invention also relate to systems, methods and computer programs for validating input and/or controlling behavior at a client computer.
  • a behavior rule file and markup language page are sent from a server computer to the client computer.
  • the markup page may include at least one input field code.
  • At the client computer at least one rule in the behavior rule file is identified from attribute(s) in the input field code and the rule is applied to the input field. Thereafter, a message is provided to the user of the client computer depending on a result of the application of the rule.
  • the behavior rule file is a validation rule file.
  • the person writing or coding the page does not need knowledge in writing JavaScript.
  • having separate page and behavior files allows one to efficiently divide development work between specialists, i.e., between the specialist for the page (e.g., HTML) and the specialist for the behavior file (e.g., JavaScript).
  • the specialist for the page e.g., HTML
  • the specialist for the behavior file e.g., JavaScript.
  • FIG. 1 illustrates a general block diagram of an exemplary computer network system 999, consistent with embodiments of the invention.
  • computer network system 999 comprises a plurality of computers 900, 901, and 902 that are coupled via inter-computer network 990.
  • intercomputer network 990 may comprise a public or private network, such as the Internet or a private intranet.
  • Computer 900 comprises a processor 910, a memory 920, a bus 930, and, optionally, an input device 940 and an output device 950 (I/O devices, user interface 960). Similar components may also be provided in computers 901 and 902.
  • embodiments of the invention may be implemented by one or more computer program products 100 (CPP), program carriers 970 and/or program signals 980, collectively "program". More details concerning computer network system 999 are given at the end of the description.
  • CCPP computer program products 100
  • program carriers 970 and/or program signals 980 collectively "program”. More details concerning computer network system 999 are given at the end of the description.
  • FIG. 2 illustrates a diagram of an exemplary client-server environment, in which a server computer 900 and a client computer 901 are coupled via an intercomputer network 990, such as the Internet or a private intranet.
  • server computer 900 sends a rule file 300 and page 200 to client computer 901.
  • Server computer 900 may store or host an application (such as an Internet application) for client computer 901.
  • Page 200 may be a file containing a markup language (such as HTML) that causes a browser on the client computer 901 to generate and provide a presentation 500 to a user.
  • Presentation 500 may be provided on a display screen or another suitable output device of client computer 901.
  • Rule file 300 may be used by client computer 901 to validate input or control behavior of the presentation.
  • Computers 900 and 901 may be implemented to perform methods consistent with the present invention, such as validation method 400 (cf. FIG. 3) further described below.
  • server computer 900 may store employee information, such as vacation plans or project deadlines.
  • server computer 900 invites the user of client computer 901 to enter the appropriate values (such as vacation dates, time values, etc.). Entry of such data may then be validated by client computer 901 using the rule file 300 sent from server computer 900.
  • Validation routines may be triggered by an event to which they are bound or by running a default validation, which may be done by calling, for example, a JavaScript function.
  • default validation may be performed before a form or input is submitted (e.g., triggered by the clicking of a SAVE button by the user). If there are errors, the form is not submitted and a message may be provided to identify the errors for the user to correct before resubmitting the form.
  • certain validation routines that are called by events in an application may trigger automated reformatting. For example, if a user enters a time value "10:00" but does not specify AM or PM, a validation routine may be provided to automatically reformat the data by assuming AM and adjusting the value to "10:00AM.”
  • the validation framework may be implemented such that it does not override other events. For example, if the validation framework triggers a function "onchange" and the user wants to add other functionality to the "onchange" event, both pieces of functionality will be performed.
  • FIG. 3 illustrates a flow chart of an exemplary method 400 for operating a server computer and a client computer.
  • method 400 will be described with reference to server computer 900 and client computer 901.
  • server computer 900 sends a validation rule file 300 (or, generally, a behavior rule file) to client computer 901.
  • server computer 900 sends a markup language page 200 to client computer 901.
  • steps 410 and 420 are performed by a server computer 900.
  • steps 410 and 420 may be performed by different server computers (e.g., one server computer that stores page 200 and another server computer that stores rule file 300).
  • the order of steps 410 and 420 may be performed such that either the validation rule file 300 or the page 200 is sent first to the client computer.
  • client computer 901 receives a first input value X that corresponds to first input field 510 (cf . FIG. 6).
  • the first input value X may be represented in page 200 by first input field code 210 (cf. FIG. 5).
  • client computer 901 receives second input value Y that corresponds to second input field 520 (cf. FIG. 6).
  • the second input value Y may be represented in page 200 by second input field code 220 (cf. FIG. 5).
  • client computer 901 identifies a rule (e.g., CompareDateLater) in validation rule file 300 from attributes 211 , 221 (in input field code 210, 220).
  • a rule e.g., CompareDateLater
  • client computer 901 applies the rule to first input value X and second input value Y. Thereafter, in step 470, client computer 901 may provide a message 540 to the user depending on the result of applying the rule from the validation rule file 300. Such a message may indicate whether an error has occurred in the input provided by the user.
  • FIG. 4 illustrates a diagram for an exemplary validation rule file 300.
  • validation rule file 300 may include a number of portions 301-311.
  • the code for portions 301-311 may be stored as part of one file or, optionally, portions 301 - 311 can be stored as separates files, for example, JavaScript files, with file extension ".js.”
  • the following is a list of exemplary JavaScript files with a short description of their associated function(s) in parenthesis: ButtonUtils.js 301 (e.g., detecting the presence of the mouse over an input field); Comparator.js 302 (e.g., comparing numerical values, such as checking that two numerical values are of the same type, such as both integers); Date.js 303 (e.g., verifying the existence of a numerical value; triggering an error message for non-existence of a value; parsing a string to convert a string like "August” to a numerical value like "8"; checking the validity of a date format,
  • Dirtyform.js 305 e.g., preventing the user to navigate from page 200, unless the user agrees after providing a warning message like "Do you want to leave this screen?"
  • Error.js 306 e.g., error message generation; using name identification in attributes to provide message
  • Fractional.js 307 e.g., handing over the input value to message, for example, user inputting "June 31 "; message with "June 31 is incorrect”
  • Keypress.js 308 e.g., detecting which keys are operated by the user
  • Number.js 309 e.g., checking number range; checking decimal points
  • Percentile.js 310 e.g., calculating percentages
  • Validation.js 311 e.g., storing exemplary rule 350-cf. FIG. 4).
  • the validation rule file may include one or more behavior or validation rules, including rule 350.
  • rule 350 (“Date, CompareDateLater”) compares calendar dates X and Y and can be expressed as "if date Y later than date X then continue else message.” For instance, if the user inputs vacation dates correctly (i.e., last day later than first day), both dates X and Y are accepted. Otherwise, an appropriate message may be generated to notify the user of the error (see, for example, message 540 in FIG. 7).
  • rules may be conveniently classified in accordance with a hierarchy, for example, "Date” with “CompareDateLater”, “CompareDateEarlier”, “CompareDateEqual” or the like (cf. Table 1).
  • FIG. 5 illustrates exemplary code for page 200.
  • page 200 may include a number of code portions 201-250.
  • an identification portion such as identification 201 may be provided in page 200 to indicate an address or file name for the validation rule file(s).
  • identification 201 may identify an Internet address for the portions or files related to validation rule file 300.
  • portions "ButtonUtils.js" to "Validation.js" are listed in identification 201.
  • Other code portions may be provided as part of page 200.
  • a code portion 210 may be provided for the first input field. As shown in FIG.
  • code 250 is provided to code the activation of the validation. In the example of FIG. 5, code 250 activates validation by inviting the user to press a SUBMIT button.
  • identification 201 can be made part of a ⁇ HEADER> portion and code 210-250 could be part of a ⁇ BODY> portion.
  • FIGS. 6 and 7 illustrate exemplary presentations 500 that may be generated by the browser on client computer 901 (e.g., output device 950-cf. FIG. 1) at first and second time points, respectively.
  • client computer 901 e.g., output device 950-cf. FIG. 1
  • first input field 510 accepts the first date or input value X (format "MM/DD/YYYY”) and second input field 520 accepts the last date or second input value Y (same format).
  • a message 540 may be provided to the user (double-line frame in FIG. 7) depending on the results of the validation.
  • a submit button 550 may be provided in the presentation 500 to trigger validation (cf. steps 450-470).
  • the presentation 500 includes a message 540 ("Insert an earlier date") to the user informing about the inconsistency.
  • message 540 "Insert an earlier date"
  • the error and the input field in question may be identified by the user.
  • Table 1 list several exemplary rules that may be provided as part of a validation rule file. The rules are arranged in hierarchy for: (1) comparing times; (2) comparing calendar dates; and (3) comparing numbers. Further classification is possible, for example, for numbers, to distinguish integers and floating point numbers.
  • the left column of Table 1 indicates the name of each exemplary rule according to normal conditions (e.g., "earlier” expected) and the right column indicates exemplary triggering or abnormal conditions (e.g., "later” occurred) to trigger message 540.
  • embodiments of the invention have been described above with reference to validating two input values or fields, embodiments of the invention are not limited to validating two values. As can be appreciated by persons of skill in the art, further functionality can be added consistent with the teachings herein to provide, for example, the ability to validate or check sequences of three or more input values. Moreover, embodiments of the invention may be implemented to check or validate a single input value or field that occurs on one or more pages. In such embodiments, the format of the input value may be verified, as well as other characteristics such as predefined maximums or minimums, limits on price or quantity, etc.
  • embodiments of the present invention have been described with reference to a rule file 300 that includes validation rules
  • embodiments of the invention are generally applicable to any markup language elements (e.g., input fields) that change their behavior.
  • effects like changing color on mouse-over can be programmed more efficiently by including the mouse-over detection and color changing code into rule file 300 as behavior rules.
  • a further behavior example is displaying a warning prior to closing a window, a screen or a program.
  • Such a feature may be convenient in combination with control or termination of a browser session (see, for example, publication WO 01/97012).
  • Embodiments of the present invention allow such features to be implemented in combination with behavior rule file 300.
  • FIG. 8 illustrates a flow chart of an exemplary method 800, consistent with an embodiment of the invention.
  • Method 800 may be implemented with a browser on a client computer that interprets a page 200 and a behavior rule file 300. Using functions in rule file 300, the browser may validate the input format (step 810). If the format corresponds to a predetermined format, e.g., 05/24/2002 and 05/31/2002, both given in the format "MM/DD/YYYY" (step 820; Yes), then the browser may validate the input consistency, e.g., CompareDateEarlier (step 840). If the input complies with the rules (step 850; Yes), the browser converts the input to a graphical representation (step 870). For instance, a calendar bar representation (see, for example, FIG. 9) may be used to graphically represent, validated input corresponding to calendar dates.
  • a graphical representation see, for example, FIG. 9
  • the browser may generate a message to the user, e.g., "Please type a valid date format" (step 830).
  • format checking may co-exist with presenting a graphical representation (such as a bar chart), and any existing graphical presentation may remain unchanged.
  • the browser may also give an error message, e.g., "Please input consecutive dates" (step 860). In other words, in case of any non-compliance, the browser may not generate a graphical representation (such as a bar chart or calendar).
  • FIG. 9 illustrates an exemplary bar chart presentation of calendar dates.
  • the bar chart presents a time interval between first and second time points, which may be represented by first and second input values that have been validated.
  • first and second input values that have been validated.
  • such a bar chart may be used in connection with a browser that interprets a page and behavior rule file.
  • a first rule file may provide the message in English and a second rule file may provide the message in a different language.
  • FIG. 1 is a general block diagram of an exemplary computer system environment 999 that may be used to implement embodiments of the invention.
  • inter-computer network 990 such as the Internet or a private intranet.
  • Computer 900 comprises a processor 910, a memory 920, a bus 930, and, optionally, an input device 940 and/or an output device 950 (I/O devices, user interface 960). As illustrated in FIG. 1 , embodiments of the invention may be implemented through one or more computer program products 100 (CPP), a program carriers 970 and/or a program signals 980, collectively "program.”
  • CPP computer program products 100
  • program carriers 970 program carriers
  • program signals 980 collectively "program.”
  • Computer 900 may include, for example, a conventional personal computer (PC), a desktop, a hand-held device, a multi-processor computer, a pen computer, a microprocessor-based or programmable consumer electronics, a minicomputer, a mainframe computer, a personal mobile computing device, a mobile phone, a portable or stationary personal computer, a palmtop computer or the like.
  • PC personal computer
  • desktop a hand-held device
  • multi-processor computer a pen computer
  • microprocessor-based or programmable consumer electronics a minicomputer
  • mainframe computer a personal mobile computing device
  • mobile phone a portable or stationary personal computer
  • palmtop computer or the like.
  • processor 910 is, for example, a central processing unit (CPU), a micro-controller unit (MCU), a digital signal processor (DSP), or the like.
  • CPU central processing unit
  • MCU micro-controller unit
  • DSP digital signal processor
  • memory 920 symbolizes elements that temporarily or permanently store data and instructions. Although memory 920 is conveniently illustrated as part of computer 900, memory functions can also be implemented in network 990, in computers 901/902, in processor 910 itself (e.g., a cache or register) or elsewhere. Memory 920 can be a read only memory (ROM), a random access memory (RAM), and/or a memory with other access options.
  • ROM read only memory
  • RAM random access memory
  • Memory 920 may be physically implemented by computer-readable media, such as, for example: (a) magnetic media, like a hard disk, a floppy disk or another type of magnetic disk, a tape, a cassette tape, or the like; (b) optical media, like an optical disk (CD-ROM, digital versatile disk - DVD); (c) semiconductor media, such as DRAM, SRAM, EPROM, EEPROM, a memory stick, etc.; or (d) by any other media, like paper.
  • computer-readable media such as, for example: (a) magnetic media, like a hard disk, a floppy disk or another type of magnetic disk, a tape, a cassette tape, or the like; (b) optical media, like an optical disk (CD-ROM, digital versatile disk - DVD); (c) semiconductor media, such as DRAM, SRAM, EPROM, EEPROM, a memory stick, etc.; or (d) by any other media, like paper.
  • memory 920 may be distributed across different media. Portions of memory 920 can be removable or non-removable.
  • computer 900 may use devices well known in the art such as, for example, disk drives, tape drives, etc.
  • Memory 920 stores support modules such as, for example, a basic input output system (BIOS), an operating system (OS), a program library, a compiler, an interpreter, and/or a text-processing tool.
  • support modules are commercially available and can be installed on computer 900 by those of skill in the art. For simplicity, these modules are not illustrated.
  • CPP 100 comprises program instructions and - optionally - data that cause processor 910 to execute embodiments of the present invention, such as the steps of the exemplary methods disclosed herein.
  • CPP 100 defines the operation of computer 900 and its interaction in network system 999.
  • CPP 100 can be available as source code in any programming language and/or as object code ("binary code") in a compiled form.
  • object code e.g., object code
  • Persons of skill in the art can use CPP 100 in connection with any of the above support modules (e.g., compiler, interpreter, operating system).
  • CPP 100 is illustrated as being stored in memory 920, CPP 100 can be located elsewhere. CPP 100 can also be embodied in carrier 970.
  • carrier 970 is illustrated outside computer 900.
  • carrier 970 may be inserted into input device 940.
  • Carrier 970 is implemented as any computer readable medium, such as a medium largely explained above (cf. memory 920).
  • carrier 970 is an article of manufacture comprising a computer readable medium having computer readable program code means embodied therein for executing embodiments of the present invention, such as the steps of the exemplary methods disclosed herein.
  • program signal 980 can also embody computer program 100. Signal 980 travels on network 990 to computer 900.
  • program carrier 970 and program signal 980 in connection with computer 900 is convenient.
  • program carrier 971/972 (not shown) and program signal 981/982 embody a computer program product (CPP) 101/102 to be executed by processor 911/912 (not shown) in computers 901/902, respectively.
  • CPP computer program product
  • Input device 940 symbolizes a device that provides data and instructions for processing by computer 900.
  • device 940 may include a keyboard, a pointing device (e.g., a mouse, a trackball, cursor direction keys), a microphone, a joystick, a game pad, a scanner, and/or a disk drive.
  • a wireless receiver e.g., with a satellite dish or terrestrial antenna
  • a sensor e.g., a thermometer
  • counter e.g., a goods counter in a factory.
  • Input device 940 can also serve to read carrier 970.
  • Output device 950 symbolizes a device that presents instructions and data that have been processed.
  • Output device 950 may include, for example, a monitor, a display, a cathode ray tube (CRT), a flat panel display, a liquid crystal display (LCD), a speaker, a printer, a plotter, and/or a vibration alert device. Similar as above, output device 950 communicates with the user, but it can also communicate with further computers.
  • Input device 940 and output device 950 can be combined to a single device. Alternatively, device 940 and/or 950 can be provided optional.
  • Bus 930 and network 990 provide logical and physical connections by, for example, conveying instruction and data signals. While connections inside computer 900 are conveniently referred to as “bus 930,” connections between computers 900-902 are referred to as “network 990.” Optionally, network 990 may comprise gateways including computers that specialize in data transmission and protocol conversion.
  • Devices 940 and 950 are coupled to computer 900 by bus 930 (as illustrated in FIG. 1) or by network 990 (optional). While the signals inside computer 900 are mostly electrical signals, the signals in network may comprise electrical, magnetic, optical and/or wireless (radio) signals.
  • Networking environments (to implement network 990) are commonplace in offices, enterprise-wide computer networks, intranets and the Internet (i.e., the World Wide Web). The physical distance between a remote computer and computer 900 is not important.
  • Network 990 can be a wired or a wireless network.
  • network 990 may comprise, for example: a local area network (LAN); a wide area network (WAN); an intranet; the Internet; a public switched telephone network (PSTN); a Integrated Services Digital Network (ISDN); an infra-red (IR) link; a radio link; a Universal Mobile Telecommunications System (UMTS); a Global System for Mobile Communication (GSM); a Code Division Multiple Access (CDMA) system; and/or a satellite link.
  • PSTN public switched telephone network
  • ISDN Integrated Services Digital Network
  • IR infra-red link
  • radio link a Universal Mobile Telecommunications System
  • GSM Global System for Mobile Communication
  • CDMA Code Division Multiple Access
  • Transmission protocols and data formats are known, such as transmission control protocol/internet protocol (TCP/IP), hyper text transfer protocol (HTTP), secure HTTP, wireless application protocol (WAP), unique resource locator (URL), unique resource identifier (URI), hyper text markup language (HTML), extensible markup language (XML), extensible hyper text markup language (XHTML), wireless application markup language (WML), and Standard Generalized Markup Language (SGML).
  • TCP/IP transmission control protocol/internet protocol
  • HTTP hyper text transfer protocol
  • WAP wireless application protocol
  • URL unique resource locator
  • URI unique resource identifier
  • HTML hyper text markup language
  • XML extensible markup language
  • XHTML extensible hyper text markup language
  • WML wireless application markup language
  • Standard Generalized Markup Language SGML
  • An interface can be, for example, a serial port interface, a parallel port interface, a game port, a universal serial bus (USB) interface, an internal or external modem, a video adapter and/or a sound card.
  • USB universal serial bus
  • embodiments of the invention relate to a validation framework for validating input at a client computer.
  • the validation framework may be used in connection with validating a markup language page, such as HTML pages used in Internet applications.
  • Each element in the application that needs validation may include an attribute (called, for example, "validationType"), which comprises a list of all of the kinds of validation that need to be performed on the field.
  • validationType an attribute
  • This approach permits the screen developer to include validation without writing any script and without attaching functions to any events.
  • the validation is complex and needs parameters
  • those parameters may be put into an HTML element.
  • the field is validated as a date and compared to another field which it is supposed to be equal to.
  • the parameter "displayName” will be passed so that the user will know which field caused the error.
  • the parameter "val_OtherField” specifies which field this must be equal to.
  • validation may be included on fields that are created explicitly or dynamically.
  • validation can be triggered by an event or triggered explicitly.
  • event driven validation may be triggered as a user navigates or uses a screen.
  • An explicit call can be made when a form is submitted. The explicit call may cause everything on the screen to be validated.
  • each kind of validation may be completely isolated from the screens where validation is used.
  • Each kind of validation can have a different function for any event. For example, a date validation may call one function when the user enters characters into a field in order to prevent characters, such a letters, that should not be part of an entered date. Further, a different function may be called when the user leaves a field to generate a message if the date entered was in the wrong format. Moreover, another function may be called when the form is submitted to perform a final check.
  • the implementation of each kind of validation may be independent of the screens which use validation. Further, the events which trigger the validation can be changed, or the functionality of the validation itself can be changed.
  • validation errors are indicated to the user.
  • the way in which validation errors are displayed to a user may be defined in the framework. For instance, errors found before a form is submitted may be displayed on a small pop-up window at the client computer.
  • Other types of error display messages may also be provided, such as event-triggered messages that display a JavaScript alert. This behavior can also be defined as part of the framework.

Abstract

A server computer with an application and a client computer with a browser communicate over a network, such as the Internet. The server computer sends a behavior rule file to the client computer. The server computer also sends a markup language page (such as an HTML page) to the client computer. The page has at least one input field code. The client computer identifies a rule in the rule file from attributes in the input filed code, applies the rule to the input field, and provides a message to the user of the client computer depending on a result of the rule application.

Description

TITLE OF THE INVENTION
VALIDATION FRAMEWORK FOR VALIDATING MARKUP PAGE INPUT ON A CLIENT COMPUTER
BACKGROUND OF THE INVENTION
I. Field of the Invention
[001] The present invention generally relates to data processing and, more particularly, the invention relates to computer systems, computer programs, and methods for validating data input for client/server applications, such as Internet applications.
II. Background Information
[002] The use of electronic media to convey information among networked users has become vital in many applications. One way of conveying such information is through the Internet. The Internet is a distributed network of computers that provides a worldwide information resource to users. The Internet has experienced exponential growth that has been fueled by the phenomenal popularity of the World Wide Web (the "Web"). On the Web, the ease of self-publication via user-created "Web pages" has helped generate tens of millions of documents on a broad range of subjects, all capable of being displayed for a computer user with access to the Web.
[003] Users can access information on the Web using standard computer equipment, such as a personal computer with a display and modem connected to the Internet. Several types of Internet connections are available, including connections through Internet Service Providers (ISPs). To use an Internet connection from an ISP, for example, a user can electronically connect his personal computer to a server at the ISP's facility using the modem and a standard telephone line or a local area network (LAN) connection. The ISP's server in turn provides the user with access to the Internet.
[004] Typically, a user accesses information using a computer program called a "Web browser." A Web browser provides an interface to the Web. Examples of Web browsers include Netscape Navigator™ from Netscape Communications Corporation or Internet Explorer™ from Microsoft Corporation. To view a Web page, the user uses the Web page's Uniform Resource Locator (URL) address to instruct the Web browser to access the Web page. The user, via the Web browser, can view or access an object in the Web page, for example, a document containing information of interest. The Web browser retrieves the information and visually displays it to the user.
[005] A Web page can be a document, and information contained in a Web page is commonly referred to as "content." Web pages are programmed using a computer language such as hypertext markup language (HTML). HTML files (or ".htm" files) are stored on a server ("Web server") and define the content and layout of Web pages. When a user enters a URL address into a Web browser, the URL address is used by the Web browser to locate a Web page stored on a Web server.
[006] Communication between the user's browser and a Web server is based on a request/response paradigm involving Hypertext Transfer Protocol (HTTP). When an HTTP request is made by the browser (such as to view a Web page), the Web server provides a response (to permit the Web page to be displayed by the browser). As a result, such interactions follow a client/server relationship, in which the browser on a user's computer serves as the "client" and a Web server acts as the "server." [007] One form of facilitating content on the Web via a Web browser is Internet Applications. Internet applications are software applications that are run over the Internet, through the Web browser. Internet applications have several advantages over standard software applications. For instance, Internet applications may take the processing load off of a user's computer. A version of a program, such as Adobe® Photoshop®, may work best with 512 MB of RAM and 2GHz processor and a large amounts of disk space. By making this desktop software program an Internet application, a user would not need to meet these requirements. Generally, they may only need a moderately good computer and an Internet connection. Further, Internet applications can store files on a central server, further allowing users to work from any terminal instead of only their home or work computer.
[008] The Web interface is becoming familiar and comfortable to users. The Web interface takes advantage of the use of Internet technology, such as HTML and Javascript, to standardize programming across computer platforms of users. The ease of sharing data, scalability and other factors, such as the standardization of Web programming languages and growing familiarity of Web interfaces, will likely make Internet applications a leading kind of software application.
[009] Internet applications continue to evolve and are capable of providing complex functionality. Functional applications, however, often require user input that is returned to the server and processed by the application. Input data from the user may comprise alphanumeric data, such as calendar dates (e.g., 05/21/2002 or May 21 , 2002), hour-and-minute time designations (e.g., 08:00 AM), numbers (e.g., a postal code), or letters (e.g., ABC) to specify a name, address and the like. Typically, the complexity of the user input increases with added functionality. Complex input necessitates validation to ensure data quality of the user input. In order for a software application to be usable, this validation must occur quickly and consistently across all screens of the application.
[010] Validation may occur at the client computer or server computer. For example, the client computer may verify that a postal code entered by a user has exactly a predetermined number of digits, or the server computer may confirm that the corresponding city matches. Generally, client-side validation is quicker and, therefore, preferred. Unfortunately, client-side validation historically has been coded into each Web page separately. For instance, the appropriate routines are explicitly added into each screen and associated with the appropriate events. This approach increases development time and susceptibility to bugs, while lessening the complexity of validation that can be incorporated into a Web page. A robust client-side validation framework would provide several benefits to any Internet application development team and enable greater functionality to be developed in a shorter period of time.
[011] In addition to the need to provide quick validations, any validation must be consistent across all screens of an Internet application. This is because most users expect similar or equal behavior of similar or equal screen elements on different screens of an application. For example, if a user age restriction in a trade application is 18 years of age, this age restriction should be consistently applied such that any user under 18 years of age is excluded from trade on all presentations. If a change is made to a screen element, then this change must be consistently applied to all pages of the application. For instance, if the age limit is reduced to 16 years of age, then this change must be consistently applied everywhere. However, using previous validation schemes, making such an update is time consuming and prone to error since the code for every page would need to be changed.
BRIEF DESCRIPTION OF THE DRAWINGS
[012] The accompanying drawings, which are incorporated herein and constitute a part of this specification, illustrate various features and aspects of embodiments of the present invention. In the drawings:
[013] FIG. 1 illustrates a general block diagram of an exemplary computer network system for implementing embodiments of the invention;
[014] FIG. 2 illustrates a block diagram of an exemplary client-server environment, consistent with an embodiment of the invention, in which a server computer sends a validation rule file and a markup page to a client computer in order to provide a presentation to a user;
[015] FIG. 3 illustrates a flow chart of an exemplary method for operating a client computer and a server computer, consistent with an embodiment of the invention;
[016] FIG. 4 illustrates a diagram of an exemplary validation rule file;
[017] FIG. 5 illustrates a code example for a page file;
[018] FIG. 6 illustrates an exemplary presentation by a browser on a client computer at a first time point;
[019] FIG. 7 illustrates an exemplary presentation by the browser on the client computer at a second time point, wherein the presentation includes a message to the user; [020] FIG. 8 illustrates a flow chart an exemplary method related to the operation of a browser that interprets a page and a behavior file; and
[021] FIG. 9 illustrates an exemplary bar chart presentation of calendar dates.
DETAILED DESCRIPTION
[022] Embodiments of the present invention provide a validation framework for validating input at a client computer. Such embodiments may be used in connection with validating a markup language page, such as HTML pages, used in Internet applications. In accordance with an embodiment of the invention, a validation framework is provided that isolates the definition of the validation routines and events with which they are associated from the input screen at the client computer. Embodiments of the invention may be implemented to provide: consistent behavior throughout the screens; the ability to update the validation behavior of all screens by only changing one file; and/or an efficient and simple framework for adding validation routine(s) to new or existing screens. Embodiments of the invention may also be implemented to provide both simple and complex validation that involves cross-field checking and/or to allow for multiple validation types to be added to one field.
[023] In accordance with an embodiment of the invention, a method is provided for operating a client computer and a server computer. The method comprises: sending a validation rule file from the server computer to the client computer; sending a markup language page from the server computer to the client computer; receiving a first input value X by the client computer, the first input value X corresponding to a first input field represented in the page by first input field code; receiving a second input value Y by the client computer, the second input value Y corresponding to a second input field represented in the page by second input field code; identifying a rule in the validation rule file from attributes in the first input field code and in the second input field code; applying the rule to the first input value X and to the second input value Y; and providing a message to the user of the client computer depending on a result of the rule application.
[024] The above-described method contributes to solving the drawbacks found in past approaches to validation. For instance, the method provides a validation framework to ensure data quality of user input, even when the user input requires high complexity. In addition, validation of the user input may be performed fast on the client side and consistently across all screens of an application. Further, there is no longer a need to code validation routine(s) into each page separately. Instead, appropriate validation routines may be explicitly provided as part of a validation rule file and associated with appropriate events. Moreover, consistent with the invention, development time and susceptibility to bugs is decreased and the difficulty of adding complex validation is reduced.
[025] In one embodiment of the invention, the validation method is performed such that a validation rule file is sent to the client computer and, thereafter, one or more markup language pages are sent to the client computer. The validation rule file includes coded validation rule(s) or routine(s) that cause the client computer to validate user input. In certain applications, the validation rule may change only from time to time, for example, once a week. In such cases, the client computer may store the validation rule file for a predetermined time period (e.g., a day, a week, etc.), before replacing the validation rule file with an updated one. Updating influences the operation of the user's browser that interprets pages received after the update. In one embodiment, the validation method may receive input values for validation by receiving values from the user who operates a keyboard. The keyboard may be implemented by hardware (cf. FIG. 1) or through a software-emulation on the screen.
[026] Consistent with an embodiment of the invention, the client computer may identify the rule in the validation rule file by interpreting a JavaScript file. JavaScript is a script language that may be embedded with HTML markup language. Script technology is also applicable for other language pairs.
[027] In another embodiment of the invention, the step of applying a validation rule comprises validating input values X, Y of each input field separately. For example, for numbers-only input fields (e.g., for age), a validation rule may cause the browser to reject letter characters. Multiple validation rules can be applied for each field, such as to validate the format and to validate a magnitude.
[028] In one embodiment, the step of applying the rule comprises validating input values X, Y for both input fields in combination. By way of a non-limiting example, details of an illustrative approach are explained below in connection with an exemplary embodiment that compares dates X and Y.
[029] In another embodiment of the invention, the input field code is a markup code (e.g., HTML) and the attributes are part of the markup code. As part of the markup code, the attributes are preferably located inside < > tags.
[030] In still another embodiment, a message is provided with an indication of the input field to specify that the rule has been applied. This feature is convenient, and may be supported by the "name code" attribute. Such a message may be displayed or indicated by the corresponding field (cf. FIG. 7).
[031 ] In one embodiment, the input field code may comprise further attributes to cross-reference the first and second input values.
[032] In another embodiment, the first input field code and the second input field code are represented in the page by code that causes the browser in the client computer to generate code upon receiving the page. In other words, input field codes can be created explicitly. In one embodiment, the rule file binds the rules to functions in libraries.
[033] In one embodiment, the step of applying the rule is event-triggered. For example, application of a validation rule may be triggered upon detection of predetermined user interaction. The predetermined user interaction may comprise: operating a submit button, operating a predetermined key on a computer keyboard, and/or leaving the input field.
[034] In another embodiment of the invention, the first and second values are first and second calendar dates, the condition (i.e., for the warning message) are, for example: the first date antecedes the second date (e.g., May 31 antecedes May 24); the first date precedes the second date; the first date and the second date coincide; an input number for a day is larger than 31 or smaller than 1 ; an input number for a month is larger than 12 or smaller than 1 and so on.
[035] In one embodiment, the first and second values are first and second time values, such as hour-and-minute values. By way of a non-limiting example, a first input field may represent the start time of a mandatory activity. The validation may ensure that the field represents a time value, that the value is not omitted, and/or that it is earlier than the end time (represented by the second input field). The validation routine(s) may be bound to the input using, for example, the following syntax: <input type="text" id="activityStart" validationType="required,time,lessThanOther" vaLotherTime=="activityEnd">. In this example, the attribute "validationType" can be a comma delimited list of the types of validation that should be added to the field. For complex validation types that require parameters, attributes can be set to provide the necessary information. In the noted example, the input field needs to be less than the activity end time. The "lessThanOther" validation type needs to know where the other field is in order to check the condition. The "lessThanOther" looks for an attribute called "val_otherTime," which represents the ID of the end time. Therefore, all the information that is needed to run the test is available within the < > tags.
[036] In the above-noted example, the validation framework support the validation types "required," "time," and "lessThanOther." Consistent with embodiments of the invention, numerous approaches may be used to create the necessary validation types. For example, one may first create all of the validation routines that would have to be done regardless of whether the validation framework is used. In the noted example, assume that standard validation routines are written which are called "timeCheck" and "formatTime." The routines may use one input element as an argument and validation may occur based on the given input field's value. For instance, the timeCheck function may verify that the value is a valid time. Further, the formatTime function may be called when the value is changed. If the value is not in the standard format, the formatTime function may put it into standard format. [037] The following is an example of the code that could be used to attach routines to the time type:
// creates the validation type time. The first argument is the // name of the default validation routine, var time = new ValidationType(timeCheck);
// causes function format time to be run var changeEvent = new EventFunction("onchange", formatTime);
// add this routine to time validation type time.eventValidationList.push(changeEvent);
[038] Consistent with an embodiment of the invention, validation routines can be added to new fields that are created dynamically from a user action. For example, if a user clicks a button to add a new activity or event, new input fields may appear on the screen. These new fields can use the validation framework comprising the rule file.
[039] Embodiments of the present invention also relate to systems, methods and computer programs for validating input and/or controlling behavior at a client computer. In such embodiments, a behavior rule file and markup language page are sent from a server computer to the client computer. The markup page may include at least one input field code. At the client computer, at least one rule in the behavior rule file is identified from attribute(s) in the input field code and the rule is applied to the input field. Thereafter, a message is provided to the user of the client computer depending on a result of the application of the rule. In one embodiment, the behavior rule file is a validation rule file.
[040] Numerous advantages can be achieved from practicing embodiments of the present invention. For example, in accordance with an embodiment of the invention, the person writing or coding the page does not need knowledge in writing JavaScript. For instance, having separate page and behavior files allows one to efficiently divide development work between specialists, i.e., between the specialist for the page (e.g., HTML) and the specialist for the behavior file (e.g., JavaScript). In accordance with another embodiment of the invention, it is advantage that once changes are made to the rules, the updates are applicable to all pages; in that case, the developer of the page is alleviated from adapting each page.
[041] FIG. 1 illustrates a general block diagram of an exemplary computer network system 999, consistent with embodiments of the invention. As illustrated in FIG. 1 , computer network system 999 comprises a plurality of computers 900, 901, and 902 that are coupled via inter-computer network 990. As further described below, intercomputer network 990 may comprise a public or private network, such as the Internet or a private intranet. Computer 900 comprises a processor 910, a memory 920, a bus 930, and, optionally, an input device 940 and an output device 950 (I/O devices, user interface 960). Similar components may also be provided in computers 901 and 902. In example of FIG. 1 , embodiments of the invention may be implemented by one or more computer program products 100 (CPP), program carriers 970 and/or program signals 980, collectively "program". More details concerning computer network system 999 are given at the end of the description.
[042] FIG. 2 illustrates a diagram of an exemplary client-server environment, in which a server computer 900 and a client computer 901 are coupled via an intercomputer network 990, such as the Internet or a private intranet. As illustrated in FIG. 2, server computer 900 sends a rule file 300 and page 200 to client computer 901. Server computer 900 may store or host an application (such as an Internet application) for client computer 901. Page 200 may be a file containing a markup language (such as HTML) that causes a browser on the client computer 901 to generate and provide a presentation 500 to a user. Presentation 500 may be provided on a display screen or another suitable output device of client computer 901. Rule file 300 may be used by client computer 901 to validate input or control behavior of the presentation. Computers 900 and 901 may be implemented to perform methods consistent with the present invention, such as validation method 400 (cf. FIG. 3) further described below.
[043] For purposes of illustration, assume in the example of FIG. 2 that both server computer 900 and client computer 901 belong to an enterprise. The application on computer 900 may store employee information, such as vacation plans or project deadlines. By sending page 200, server computer 900 invites the user of client computer 901 to enter the appropriate values (such as vacation dates, time values, etc.). Entry of such data may then be validated by client computer 901 using the rule file 300 sent from server computer 900.
[044] Validation routines may be triggered by an event to which they are bound or by running a default validation, which may be done by calling, for example, a JavaScript function. By way of a non-limiting example, default validation may be performed before a form or input is submitted (e.g., triggered by the clicking of a SAVE button by the user). If there are errors, the form is not submitted and a message may be provided to identify the errors for the user to correct before resubmitting the form.
[045] In one embodiment, certain validation routines that are called by events in an application may trigger automated reformatting. For example, if a user enters a time value "10:00" but does not specify AM or PM, a validation routine may be provided to automatically reformat the data by assuming AM and adjusting the value to "10:00AM." In another embodiment, the validation framework may be implemented such that it does not override other events. For example, if the validation framework triggers a function "onchange" and the user wants to add other functionality to the "onchange" event, both pieces of functionality will be performed.
[046] Consistent with an embodiment of the invention, FIG. 3 illustrates a flow chart of an exemplary method 400 for operating a server computer and a client computer. For purposes of illustration, method 400 will be described with reference to server computer 900 and client computer 901. In step 410, server computer 900 sends a validation rule file 300 (or, generally, a behavior rule file) to client computer 901. In step 420, server computer 900 sends a markup language page 200 to client computer 901. In one embodiment, steps 410 and 420 are performed by a server computer 900. In another embodiment, steps 410 and 420 may be performed by different server computers (e.g., one server computer that stores page 200 and another server computer that stores rule file 300). In addition, consistent with an embodiment of the invention, the order of steps 410 and 420 may be performed such that either the validation rule file 300 or the page 200 is sent first to the client computer.
[047] Referring again to FIG. 3, at step 430, client computer 901 receives a first input value X that corresponds to first input field 510 (cf . FIG. 6). The first input value X may be represented in page 200 by first input field code 210 (cf. FIG. 5). In step 440, client computer 901 receives second input value Y that corresponds to second input field 520 (cf. FIG. 6). The second input value Y may be represented in page 200 by second input field code 220 (cf. FIG. 5). In step 450, client computer 901 identifies a rule (e.g., CompareDateLater) in validation rule file 300 from attributes 211 , 221 (in input field code 210, 220). In step 460, client computer 901 applies the rule to first input value X and second input value Y. Thereafter, in step 470, client computer 901 may provide a message 540 to the user depending on the result of applying the rule from the validation rule file 300. Such a message may indicate whether an error has occurred in the input provided by the user.
[048] FIG. 4 illustrates a diagram for an exemplary validation rule file 300. As shown in FIG. 4, validation rule file 300 may include a number of portions 301-311. The code for portions 301-311 may be stored as part of one file or, optionally, portions 301 - 311 can be stored as separates files, for example, JavaScript files, with file extension ".js." The following is a list of exemplary JavaScript files with a short description of their associated function(s) in parenthesis: ButtonUtils.js 301 (e.g., detecting the presence of the mouse over an input field); Comparator.js 302 (e.g., comparing numerical values, such as checking that two numerical values are of the same type, such as both integers); Date.js 303 (e.g., verifying the existence of a numerical value; triggering an error message for non-existence of a value; parsing a string to convert a string like "August" to a numerical value like "8"; checking the validity of a date format, such as "MM/DD/YYYY"; converting a value to a correct date format); DateScroller.js 304 (e.g., adapting to local date input style, for example, to convert 31.12. 2002 to read as 12/31/2002); Dirtyform.js 305 (e.g., preventing the user to navigate from page 200, unless the user agrees after providing a warning message like "Do you want to leave this screen?"); Error.js 306 (e.g., error message generation; using name identification in attributes to provide message); Fractional.js 307 (e.g., handing over the input value to message, for example, user inputting "June 31 "; message with "June 31 is incorrect"); Keypress.js 308 (e.g., detecting which keys are operated by the user); Number.js 309 (e.g., checking number range; checking decimal points); Percentile.js 310 (e.g., calculating percentages); and Validation.js 311 (e.g., storing exemplary rule 350-cf. FIG. 4).
[049] As shown in FIG. 4, the validation rule file may include one or more behavior or validation rules, including rule 350. In the example of FIG. 4, rule 350 ("Date, CompareDateLater") compares calendar dates X and Y and can be expressed as "if date Y later than date X then continue else message." For instance, if the user inputs vacation dates correctly (i.e., last day later than first day), both dates X and Y are accepted. Otherwise, an appropriate message may be generated to notify the user of the error (see, for example, message 540 in FIG. 7).
[050] In one embodiment, rules may be conveniently classified in accordance with a hierarchy, for example, "Date" with "CompareDateLater", "CompareDateEarlier", "CompareDateEqual" or the like (cf. Table 1).
[051] FIG. 5 illustrates exemplary code for page 200. As shown in FIG. 5, page 200 may include a number of code portions 201-250. For example, an identification portion such as identification 201 may be provided in page 200 to indicate an address or file name for the validation rule file(s). For instance, identification 201 may identify an Internet address for the portions or files related to validation rule file 300. In the example of FIG. 5, portions "ButtonUtils.js" to "Validation.js" are listed in identification 201. [052] Other code portions may be provided as part of page 200. For instance, a code portion 210 may be provided for the first input field. As shown in FIG. 5, code 210 includes an attribute 211 to identify a validation rule (e.g., "Date, CompareDateLater") and an attribute 212 to identify a variable Y (e.g., val_OtherField="LaterDate"). Further, a code 220 is provided for the second input field and includes an attribute 221 to identify a rule ("Date") and an attribute 222 to identify the variable X (id=LaterDate). Further, code 250 is provided to code the activation of the validation. In the example of FIG. 5, code 250 activates validation by inviting the user to press a SUBMIT button.
[053] In the exemplary embodiment of FIG. 5, identification 201 can be made part of a <HEADER> portion and code 210-250 could be part of a <BODY> portion.
[054] FIGS. 6 and 7 illustrate exemplary presentations 500 that may be generated by the browser on client computer 901 (e.g., output device 950-cf. FIG. 1) at first and second time points, respectively.
[055] Generally, in FIGS. 6 and 7, first input field 510 accepts the first date or input value X (format "MM/DD/YYYY") and second input field 520 accepts the last date or second input value Y (same format). A message 540 may be provided to the user (double-line frame in FIG. 7) depending on the results of the validation. A submit button 550 may be provided in the presentation 500 to trigger validation (cf. steps 450-470).
[056] As illustrated in FIG. 6, the user has introduced an error for the first vacation day (DD should be "21", not "31 "). As a result, as shown in FIG. 7, the presentation 500 includes a message 540 ("Insert an earlier date") to the user informing about the inconsistency. By placing message 540 near to first input field 510 (e.g., below it), the error and the input field in question may be identified by the user. [057] Table 1 list several exemplary rules that may be provided as part of a validation rule file. The rules are arranged in hierarchy for: (1) comparing times; (2) comparing calendar dates; and (3) comparing numbers. Further classification is possible, for example, for numbers, to distinguish integers and floating point numbers. For convenience, the left column of Table 1 indicates the name of each exemplary rule according to normal conditions (e.g., "earlier" expected) and the right column indicates exemplary triggering or abnormal conditions (e.g., "later" occurred) to trigger message 540.
TABLE 1 - Validation Rules
Figure imgf000019_0001
Figure imgf000020_0001
[058] While embodiments of the invention have been described above with reference to validating two input values or fields, embodiments of the invention are not limited to validating two values. As can be appreciated by persons of skill in the art, further functionality can be added consistent with the teachings herein to provide, for example, the ability to validate or check sequences of three or more input values. Moreover, embodiments of the invention may be implemented to check or validate a single input value or field that occurs on one or more pages. In such embodiments, the format of the input value may be verified, as well as other characteristics such as predefined maximums or minimums, limits on price or quantity, etc.
[059] Although embodiments of the present invention have been described with reference to a rule file 300 that includes validation rules, embodiments of the invention are generally applicable to any markup language elements (e.g., input fields) that change their behavior. For example, effects like changing color on mouse-over can be programmed more efficiently by including the mouse-over detection and color changing code into rule file 300 as behavior rules. A further behavior example is displaying a warning prior to closing a window, a screen or a program. Such a feature may be convenient in combination with control or termination of a browser session (see, for example, publication WO 01/97012). Embodiments of the present invention allow such features to be implemented in combination with behavior rule file 300.
[060] FIG. 8 illustrates a flow chart of an exemplary method 800, consistent with an embodiment of the invention. Method 800 may be implemented with a browser on a client computer that interprets a page 200 and a behavior rule file 300. Using functions in rule file 300, the browser may validate the input format (step 810). If the format corresponds to a predetermined format, e.g., 05/24/2002 and 05/31/2002, both given in the format "MM/DD/YYYY" (step 820; Yes), then the browser may validate the input consistency, e.g., CompareDateEarlier (step 840). If the input complies with the rules (step 850; Yes), the browser converts the input to a graphical representation (step 870). For instance, a calendar bar representation (see, for example, FIG. 9) may be used to graphically represent, validated input corresponding to calendar dates.
[061] If the format does not correspond to a predetermined format, e.g., input 05/32/2002 (step 820; No), then the browser may generate a message to the user, e.g., "Please type a valid date format" (step 830). In one embodiment, format checking may co-exist with presenting a graphical representation (such as a bar chart), and any existing graphical presentation may remain unchanged.
[062] If the input does not comply with the rule (step 850; No), the browser may also give an error message, e.g., "Please input consecutive dates" (step 860). In other words, in case of any non-compliance, the browser may not generate a graphical representation (such as a bar chart or calendar).
[063] FIG. 9 illustrates an exemplary bar chart presentation of calendar dates. In the example of FIG. 9, the bar chart presents a time interval between first and second time points, which may be represented by first and second input values that have been validated. As described above, such a bar chart may be used in connection with a browser that interprets a page and behavior rule file.
[064] Those of skill in the art can apply the principles of separating rules from pages to a variety of applications. To name one further example, the above-mentioned mouse-over help could be diversified for international users. For instance, a first rule file may provide the message in English and a second rule file may provide the message in a different language.
[065] As indicated above, FIG. 1 is a general block diagram of an exemplary computer system environment 999 that may be used to implement embodiments of the invention. As illustrated in FIG. 1 , system 999 comprises a plurality of computers 900, 901, 902 (or 90q, with q=0...Q-1 , Q any number) that are coupled via an inter-computer network 990, such as the Internet or a private intranet.
[066] Computer 900 comprises a processor 910, a memory 920, a bus 930, and, optionally, an input device 940 and/or an output device 950 (I/O devices, user interface 960). As illustrated in FIG. 1 , embodiments of the invention may be implemented through one or more computer program products 100 (CPP), a program carriers 970 and/or a program signals 980, collectively "program." [067] With respect to computer 900, computer 901/902 may be referred to as a "remote computer." Further, computer 901/902 may be implemented with, for example, a server, a router, a peer device or other common network node, and typically comprises many or all of the elements described relative to computer 900. Hence, elements 100 and 910-980 in computer 900 collectively illustrate also corresponding elements 10q and 91q-98q (shown for q=0) in computers 90q.
[068] Computer 900 may include, for example, a conventional personal computer (PC), a desktop, a hand-held device, a multi-processor computer, a pen computer, a microprocessor-based or programmable consumer electronics, a minicomputer, a mainframe computer, a personal mobile computing device, a mobile phone, a portable or stationary personal computer, a palmtop computer or the like.
[069] Consistent with embodiments of the invention, processor 910 is, for example, a central processing unit (CPU), a micro-controller unit (MCU), a digital signal processor (DSP), or the like.
[070] In FIG. 1 , memory 920 symbolizes elements that temporarily or permanently store data and instructions. Although memory 920 is conveniently illustrated as part of computer 900, memory functions can also be implemented in network 990, in computers 901/902, in processor 910 itself (e.g., a cache or register) or elsewhere. Memory 920 can be a read only memory (ROM), a random access memory (RAM), and/or a memory with other access options. Memory 920 may be physically implemented by computer-readable media, such as, for example: (a) magnetic media, like a hard disk, a floppy disk or another type of magnetic disk, a tape, a cassette tape, or the like; (b) optical media, like an optical disk (CD-ROM, digital versatile disk - DVD); (c) semiconductor media, such as DRAM, SRAM, EPROM, EEPROM, a memory stick, etc.; or (d) by any other media, like paper.
[071] Optionally, memory 920 may be distributed across different media. Portions of memory 920 can be removable or non-removable. For reading from media and for writing in media, computer 900 may use devices well known in the art such as, for example, disk drives, tape drives, etc.
[072] Memory 920 stores support modules such as, for example, a basic input output system (BIOS), an operating system (OS), a program library, a compiler, an interpreter, and/or a text-processing tool. Support modules are commercially available and can be installed on computer 900 by those of skill in the art. For simplicity, these modules are not illustrated.
[073] CPP 100 comprises program instructions and - optionally - data that cause processor 910 to execute embodiments of the present invention, such as the steps of the exemplary methods disclosed herein. In other words, CPP 100 defines the operation of computer 900 and its interaction in network system 999. For example and without the intention to be limiting, CPP 100 can be available as source code in any programming language and/or as object code ("binary code") in a compiled form. Persons of skill in the art can use CPP 100 in connection with any of the above support modules (e.g., compiler, interpreter, operating system).
[074] Although CPP 100 is illustrated as being stored in memory 920, CPP 100 can be located elsewhere. CPP 100 can also be embodied in carrier 970.
[075] In FIG. 1 , carrier 970 is illustrated outside computer 900. For communicating CPP 100 to computer 900, carrier 970 may be inserted into input device 940. Carrier 970 is implemented as any computer readable medium, such as a medium largely explained above (cf. memory 920). Generally, carrier 970 is an article of manufacture comprising a computer readable medium having computer readable program code means embodied therein for executing embodiments of the present invention, such as the steps of the exemplary methods disclosed herein. Further, program signal 980 can also embody computer program 100. Signal 980 travels on network 990 to computer 900.
[076] Having described CPP 100, program carrier 970, and program signal 980 in connection with computer 900 is convenient. Optionally, program carrier 971/972 (not shown) and program signal 981/982 embody a computer program product (CPP) 101/102 to be executed by processor 911/912 (not shown) in computers 901/902, respectively.
[077] Input device 940 symbolizes a device that provides data and instructions for processing by computer 900. For example, device 940 may include a keyboard, a pointing device (e.g., a mouse, a trackball, cursor direction keys), a microphone, a joystick, a game pad, a scanner, and/or a disk drive. Although the examples are devices with human interaction, device 940 can also operate without human interaction, such as, a wireless receiver (e.g., with a satellite dish or terrestrial antenna), a sensor (e.g., a thermometer), or a counter (e.g., a goods counter in a factory). Input device 940 can also serve to read carrier 970.
[078] Output device 950 symbolizes a device that presents instructions and data that have been processed. Output device 950 may include, for example, a monitor, a display, a cathode ray tube (CRT), a flat panel display, a liquid crystal display (LCD), a speaker, a printer, a plotter, and/or a vibration alert device. Similar as above, output device 950 communicates with the user, but it can also communicate with further computers.
[079] Input device 940 and output device 950 can be combined to a single device. Alternatively, device 940 and/or 950 can be provided optional.
[080] Bus 930 and network 990 provide logical and physical connections by, for example, conveying instruction and data signals. While connections inside computer 900 are conveniently referred to as "bus 930," connections between computers 900-902 are referred to as "network 990." Optionally, network 990 may comprise gateways including computers that specialize in data transmission and protocol conversion.
[081] Devices 940 and 950 are coupled to computer 900 by bus 930 (as illustrated in FIG. 1) or by network 990 (optional). While the signals inside computer 900 are mostly electrical signals, the signals in network may comprise electrical, magnetic, optical and/or wireless (radio) signals.
[082] Networking environments (to implement network 990) are commonplace in offices, enterprise-wide computer networks, intranets and the Internet (i.e., the World Wide Web). The physical distance between a remote computer and computer 900 is not important. Network 990 can be a wired or a wireless network. To name a few network implementations, network 990 may comprise, for example: a local area network (LAN); a wide area network (WAN); an intranet; the Internet; a public switched telephone network (PSTN); a Integrated Services Digital Network (ISDN); an infra-red (IR) link; a radio link; a Universal Mobile Telecommunications System (UMTS); a Global System for Mobile Communication (GSM); a Code Division Multiple Access (CDMA) system; and/or a satellite link.
[083] Transmission protocols and data formats are known, such as transmission control protocol/internet protocol (TCP/IP), hyper text transfer protocol (HTTP), secure HTTP, wireless application protocol (WAP), unique resource locator (URL), unique resource identifier (URI), hyper text markup language (HTML), extensible markup language (XML), extensible hyper text markup language (XHTML), wireless application markup language (WML), and Standard Generalized Markup Language (SGML).
[084] Interfaces coupled between the elements are also well known in the art. Accordingly, for simplicity, such interfaces are not illustrated in FIG. 1. An interface can be, for example, a serial port interface, a parallel port interface, a game port, a universal serial bus (USB) interface, an internal or external modem, a video adapter and/or a sound card.
[085] Computers and programs are closely related. As used hereinafter, phrases such as "the computer provides" and "the program provides" are convenient abbreviations to express actions by a computer that is controlled by a program.
[086] As disclosed herein, embodiments of the invention relate to a validation framework for validating input at a client computer. The validation framework may be used in connection with validating a markup language page, such as HTML pages used in Internet applications. Each element in the application that needs validation may include an attribute (called, for example, "validationType"), which comprises a list of all of the kinds of validation that need to be performed on the field. This approach permits the screen developer to include validation without writing any script and without attaching functions to any events. By way of example, an element may be validated as a date and required using the following: <INPUT validationType="date,required">.
[087] In one embodiment, if the validation is complex and needs parameters, those parameters may be put into an HTML element. In the example provided below, the field is validated as a date and compared to another field which it is supposed to be equal to. The parameter "displayName" will be passed so that the user will know which field caused the error. The parameter "val_OtherField" specifies which field this must be equal to. Again, no scripting is required for the screen developer even for complex forms of validation like this example:
<INPUT displayName="Date 3" validationType="date,comparedateequal" val_OtherField="equalDate">
[088] In another embodiment, validation may be included on fields that are created explicitly or dynamically. In still another embodiment, validation can be triggered by an event or triggered explicitly. For example, event driven validation may be triggered as a user navigates or uses a screen. An explicit call can be made when a form is submitted. The explicit call may cause everything on the screen to be validated.
[089] In one embodiment of the invention, the functionality that is behind each kind of validation may be completely isolated from the screens where validation is used. Each kind of validation can have a different function for any event. For example, a date validation may call one function when the user enters characters into a field in order to prevent characters, such a letters, that should not be part of an entered date. Further, a different function may be called when the user leaves a field to generate a message if the date entered was in the wrong format. Moreover, another function may be called when the form is submitted to perform a final check. [090] As disclosed herein, the implementation of each kind of validation may be independent of the screens which use validation. Further, the events which trigger the validation can be changed, or the functionality of the validation itself can be changed.
[091] In accordance with still another embodiment of the invention, validation errors are indicated to the user. The way in which validation errors are displayed to a user may be defined in the framework. For instance, errors found before a form is submitted may be displayed on a small pop-up window at the client computer. Other types of error display messages may also be provided, such as event-triggered messages that display a JavaScript alert. This behavior can also be defined as part of the framework.
[092] Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the embodiments disclosed herein. In addition, embodiments of the invention are not limited to the particulars disclosed herein. For example, the individual features of each of the disclosed embodiments may be combined or added to the features of other embodiments. In addition, the steps of the disclosed methods herein may be combined or modified without departing from the spirit of the invention claimed herein. Accordingly, it is intended that the specification and embodiments disclosed herein be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.

Claims

WHAT IS CLAIMED:
1. A method for operating a server computer and a client computer, the method comprising: sending a validation rule file from the server computer to the client computer; sending a markup language page from the server computer to the client computer; receiving a first input value by the client computer, the first input value corresponding to a first input field represented in the page by first input field code; receiving a second input value by the client computer, the second input value corresponding to a second input field represented in the page by second input field code; identifying a rule in the validation rule file from attributes in the first input field code and in the second input field code; applying the rule to the first input value and the second input value; and providing a message to a user of the client computer depending on the result of applying the rule.
2. The method of claim 1 , wherein sending a validation rule file is performed prior to sending a markup language page.
3. The method of claim 1 , wherein receiving first and second input values comprises receiving values from a user of the client computer who operates a keyboard.
4. The method of claim 1 , wherein identifying a rule in the rule file comprises reading a JavaScript file.
5. The method of claim 1 , wherein applying the rule comprises validating input values of each input field separately.
6. The method of claim 1 , wherein applying the rule comprises validating input values for both input fields in combination.
7. The method of claim 1 , wherein the input field code is markup code and the attributes are part of the markup code.
8. The method of claim 1 , wherein providing the message comprises providing a message with an indication of the input field to which the rule has been applied.
9. The method of claim 1 , wherein the first and second input field code comprise further attributes to cross-reference the first and second input values.
10. The method of claim 1 , wherein the first input field code and the second input field code are represented in the page by code that causes a browser in the client computer to generate code upon receiving the page.
11. The method of claim 1 , wherein the rule file binds the rules to functions in libraries.
12. The method of claim 1 , wherein applying the rule is triggered upon the occurrence of an event.
13. The method of claim 1, wherein applying the rule is triggered upon a predetermined user interaction.
14. The method of claim 13, wherein the predetermined user interaction comprises one of: operating submit button; operating a predetermined key on a computer keyboard; and leaving the input field.
15. The method of claim 1 , wherein the first value and second value are first and second calendar dates, and wherein applying the rule comprises determining an error condition, the error condition comprising one of: the first date antecedes the second date; the first date precedes the second date; the first date and the second date coincide; an input number for a day is larger than 31 or smaller than 1 ; and an input number for a month is larger than 12 or smaller than 1.
16. The method of claim 1 , wherein the server computer and the client computer communicate by TCP/IP and wherein the page is a HTML page.
17. A method for operating a server computer and a client computer, the method comprising: sending a behavior rule file from the server computer to the client computer; sending a markup language page from the server computer to the client computer, the page including at least one input field code; identifying a rule in the behavior rule file from attributes in the input field code; applying the rule to the input field; and providing a message to a user of the client computer depending on the result of applying the rule.
18. The method of claim 17, wherein sending a behavior rule file comprises sending a validation rule file.
19. The method of claim 17, wherein providing a message comprises providing a message indicating a change in the behavior of the input fields.
20. The method of claim 17, wherein identifying a rule in the behavior rule file comprises reading a JavaScript file.
21. The method of claim 17, wherein applying the rule is triggered upon a predetermined user interaction.
22. The method of claim 21 , wherein the predetermined user interaction comprises one of: operating submit button; operating a predetermined key on a computer keyboard; and leaving the input field.
23. A computer program product embodied on a computer usable medium, for operating a server computer and a client computer, the computer program product comprising: instructions to the server computer for sending a validation rule file to the client computer; instructions to the server computer for sending a markup language page to the client computer; instructions to the client computer for receiving a first input value, the first input value corresponding to a first input field represented in the page by first input field code; instructions to the client computer for receiving a second input value by the client computer, the second input value corresponding to a second input field represented in the page by second input field code; instructions to the client computer for identifying a rule in the validation rule file from attributes in the first input field code and in the second input field code; instructions to the client computer for applying the rule to the first input value and to the second input value; and instructions to the client computer for providing a message to the user of the client computer depending on the result of applying the rule.
24. The computer program product of claim 23, wherein the instructions for receiving first and second input values are provided to receive values from a user who operates a keyboard of the client computer.
25. The computer program product of claim 23, wherein the instructions for identifying a rule in the rule file comprise instructions to read a JavaScript file.
26. The computer program product of claim 23, wherein the instructions for applying the rule comprise instructions to validate input values of each input field separately.
27. The computer program product of claim 23, wherein the instructions for applying the rule comprise instructions to validate input values for both input fields in combination.
28. The computer program product of claim 23, wherein the instructions for providing a message comprise instructions to provide an indication of the input field to which the rule has to be applied.
29. The computer program product of claim 23, wherein the first input field code and the second input field code are represented in the page by code that causes a browser in the client computer to generate code upon receiving the page.
30. The computer program product of claim 23, wherein the first value and second value are first and second calendar dates, and wherein applying a rule comprises determining an error condition, the error condition comprising one of: the first date antecedes the second date; the first date precedes the second date; the first date and the second date coincide; an input number for a day is larger than 31 or smaller than 1 ; and an input number for a month is larger than 12 or smaller than 1.
31. A computer-readable medium on which is stored instructions, which when executed performs steps in a method for operating a server computer and a client computer, the steps comprising: sending a validation rule file from the server computer to the client computer; sending a markup language page from the server computer to the client computer; receiving a first input value by the client computer, the first input value corresponding to a first input field represented in the page by first input field code; receiving a second input value by the client computer, the second input value corresponding to a second input field represented in the page by second input field code; identifying a rule in the validation rule file from attributes in the first input field code and in the second input field code; applying the rule to the first input value and to the second input value; and providing a message to a user of the client computer depending on the result of applying the rule.
32. A computer system of server computer and client computer that communicate to provide a presentation on the client computer, wherein: the server computer is adapted to send a validation rule file to the client computer; the server computer is adapted to send a markup language page to the client computer; the client computer is adapted to receive a first input value, the first input value corresponding to a first input field represented in the page by first input field code; the client computer is adapted to receive a second input value, the second input value corresponding to a second input field represented in the page by second input field code; the client computer is adapted to identify a rule in the validation rule file from attributes in the first input field code and in the second input field code; the client computer is adapted to apply the rule to the first input value and to the second input value; and the client computer is adapted to provide a message to the user of the client computer depending on the result of rule application.
33. A computer program product for controlling the operation of a server computer and a client computer, the program comprising the following code portions: code for sending a behavior rule file from the server computer to the client computer; code for sending a markup language page from the server computer to the client computer, the page including at least one input field code; code for identifying a rule in the behavior rule file from attributes in the input field code; code for applying the rule to the input field; and code for providing a message to a user of the client computer depending on a result of applying the rule.
34. The computer program product of claim 33, wherein the code for sending a behavior rule file comprises code for sending a validation rule file.
35. The computer program product of claim 33, wherein the code for providing a message comprises code for providing a message indicating a change in the behavior of the input fields.
36. The computer program product of claim 33, wherein the code for identifying a rule in the behavior rule file comprises code for reading a JavaScript file.
37. The computer program product of claim 33, wherein the code for applying the rule is triggered upon a predetermined user interaction.
38. The computer program product of claim 33, wherein the predetermined user interaction comprises one of: operating submit button; operating a predetermined key on a computer keyboard; and leaving the input field.
39. The computer program product of claim 33, further comprising code for sending a plurality of markup language pages from the server computer to the client computer, each page including at least one input field code.
40. The computer program product of claim 39, further wherein the code for applying the rule comprises code for applying the rule consistently to the plurality of markup language pages.
PCT/IB2003/002042 2002-07-31 2003-04-18 Validation framework for validating input in a markup language page on a client computer WO2004015567A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003228022A AU2003228022A1 (en) 2002-07-31 2003-04-18 Validation framework for validating input in a markup language page on a client computer

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/207,804 US20040024842A1 (en) 2002-07-31 2002-07-31 Validation framework for validating markup page input on a client computer
US10/207,804 2002-07-31

Publications (2)

Publication Number Publication Date
WO2004015567A2 true WO2004015567A2 (en) 2004-02-19
WO2004015567A3 WO2004015567A3 (en) 2005-03-17

Family

ID=31186715

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2003/002042 WO2004015567A2 (en) 2002-07-31 2003-04-18 Validation framework for validating input in a markup language page on a client computer

Country Status (3)

Country Link
US (1) US20040024842A1 (en)
AU (1) AU2003228022A1 (en)
WO (1) WO2004015567A2 (en)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415188B1 (en) * 1998-12-23 2002-07-02 Dennis Sunga Fernandez Method and apparatus for multi-sensor processing
US7624356B1 (en) * 2000-06-21 2009-11-24 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US6948135B1 (en) * 2000-06-21 2005-09-20 Microsoft Corporation Method and systems of providing information to computer users
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
US6883168B1 (en) * 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
US7275216B2 (en) * 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
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
US7296017B2 (en) * 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US7516145B2 (en) * 2003-03-31 2009-04-07 Microsoft Corporation System and method for incrementally transforming and rendering hierarchical data files
US20040268225A1 (en) * 2003-06-26 2004-12-30 Walsh Raymond V. Method and system for controlling navigation of a graphical user interface
US20040268229A1 (en) * 2003-06-27 2004-12-30 Microsoft Corporation Markup language editing with an electronic form
US7451392B1 (en) * 2003-06-30 2008-11-11 Microsoft Corporation Rendering an HTML electronic form by applying XSLT to XML using a solution
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
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US7318063B2 (en) * 2004-02-19 2008-01-08 Microsoft Corporation Managing XML documents containing hierarchical database information
US7496837B1 (en) * 2004-04-29 2009-02-24 Microsoft Corporation Structural editing with schema awareness
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US20070100834A1 (en) * 2004-09-15 2007-05-03 John Landry System and method for managing data in a distributed computer system
US7516399B2 (en) * 2004-09-30 2009-04-07 Microsoft Corporation Structured-document path-language expression methods and systems
US7692636B2 (en) * 2004-09-30 2010-04-06 Microsoft Corporation Systems and methods for handwriting to a screen
US20060074933A1 (en) * 2004-09-30 2006-04-06 Microsoft Corporation Workflow interaction
US20060107224A1 (en) * 2004-11-15 2006-05-18 Microsoft Corporation Building a dynamic action for an electronic form
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
US20060130155A1 (en) * 2004-12-10 2006-06-15 International Business Machines Corporation Method for verifying the validity of a day/date combination
US7904801B2 (en) * 2004-12-15 2011-03-08 Microsoft Corporation Recursive sections in electronic forms
US7437376B2 (en) * 2004-12-20 2008-10-14 Microsoft Corporation Scalable object model
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
US7673228B2 (en) * 2005-03-30 2010-03-02 Microsoft Corporation Data-driven actions for network forms
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US8200975B2 (en) * 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US20070016960A1 (en) * 2005-07-18 2007-01-18 Nt Objectives, Inc. NTO input validation technique
US7613996B2 (en) * 2005-08-15 2009-11-03 Microsoft Corporation Enabling selection of an inferred schema part
US7484173B2 (en) * 2005-10-18 2009-01-27 International Business Machines Corporation Alternative key pad layout for enhanced security
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
US20080027207A1 (en) * 2006-07-28 2008-01-31 Jason Christopher Jenkins Non-precipitating alkali/alkaline earth metal and aluminum compositions made with mono-ol ether solvents
US8635069B2 (en) 2007-08-16 2014-01-21 Crimson Corporation Scripting support for data identifiers, voice recognition and speech in a telnet session
JP5229871B2 (en) * 2008-01-10 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション Technology that supports user input of data
EP2081355B1 (en) * 2008-01-18 2017-03-15 BlackBerry Limited System and method for network interaction between computing devices
US8265606B2 (en) * 2008-10-09 2012-09-11 Microsoft Corporation Targeted advertisements to social contacts
US8375291B2 (en) 2008-11-07 2013-02-12 Web Filings, Inc. Method and system for generating and utilizing persistent electronic tick marks
US9563616B2 (en) 2008-11-07 2017-02-07 Workiva Inc. Method and system for generating and utilizing persistent electronic tick marks and use of electronic support binders
US8156420B2 (en) * 2008-11-14 2012-04-10 Microsoft Corporation Form validation with table driven error handling
US20100257413A1 (en) * 2009-04-03 2010-10-07 International Business Machines Corporation Verification service for dynamic content update
US20110061022A1 (en) * 2009-09-08 2011-03-10 Reed Michael A Date-Day Checker
US10242118B2 (en) * 2010-06-21 2019-03-26 International Business Machines Corporation Multi-source electronic forms with concealed fields
US9210030B1 (en) 2010-11-01 2015-12-08 Aol Advertising Inc. Methods and systems for data validation in a client-server environment
US9323722B1 (en) 2010-12-07 2016-04-26 Google Inc. Low-latency interactive user interface
US9813524B2 (en) 2012-02-07 2017-11-07 Vergic Group Ab Dynamic sharing and updating of an electronic form
JP6249770B2 (en) * 2013-12-27 2017-12-20 キヤノン株式会社 Character input device
US20150242389A1 (en) * 2014-02-27 2015-08-27 Netapp, Inc. Techniques to identify user interface elements associated with model violation events
US9910883B2 (en) 2014-04-07 2018-03-06 International Business Machines Corporation Enhanced batch updates on records and related records system and method
US10204134B2 (en) 2014-08-14 2019-02-12 International Business Machines Corporation Automatic detection of problems in a large-scale multi-record update system and method
US10033797B1 (en) 2014-08-20 2018-07-24 Ivanti, Inc. Terminal emulation over HTML
US11100278B2 (en) 2016-07-28 2021-08-24 Ivanti, Inc. Systems and methods for presentation of a terminal application screen
CN110362313A (en) * 2019-07-02 2019-10-22 威富通科技有限公司 A kind of form validation method, client and server
US11860715B2 (en) * 2021-11-08 2024-01-02 Sap Se Messaging for OData error targets

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710901A (en) * 1995-12-29 1998-01-20 Tci Summitrak Of Texas, Inc. Method and apparatus for validating data entered by a user
WO2001057720A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated Automated client-server data validation

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167523A (en) * 1997-05-05 2000-12-26 Intel Corporation Method and apparatus for forms data validation and processing control
US6345278B1 (en) * 1998-06-04 2002-02-05 Collegenet, Inc. Universal forms engine
US6178308B1 (en) * 1998-10-16 2001-01-23 Xerox Corporation Paper based intermedium for providing interactive educational services
US6714928B1 (en) * 1999-03-19 2004-03-30 Sybase, Inc. Development system providing HTML database control object
US6859910B2 (en) * 2000-04-10 2005-02-22 Bluestreak.Com Methods and systems for transactional tunneling
US20020103906A1 (en) * 2000-07-10 2002-08-01 Knight Thomas A. Internet protocol intranet network system and method for a financial institution
AU2001288445A1 (en) * 2000-08-29 2002-03-13 American International Group, Inc. Method for selling marine cargo insurance in a network environment
US6874025B2 (en) * 2000-12-22 2005-03-29 Intel Corporation System and method of application input validation
US6629098B2 (en) * 2001-01-16 2003-09-30 Hewlett-Packard Development Company, L.P. Method and system for validating data submitted to a database application
WO2002088883A2 (en) * 2001-04-26 2002-11-07 Optionable, Inc. A system and method for real-time options trading over a global computer network
US7296297B2 (en) * 2001-07-30 2007-11-13 At&T Bls Intellectual Property Corporation System and method for using web-based applications to validate data with validation functions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710901A (en) * 1995-12-29 1998-01-20 Tci Summitrak Of Texas, Inc. Method and apparatus for validating data entered by a user
WO2001057720A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated Automated client-server data validation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DENTEDREALITY: "JavaScript Validation Library" DENTEDREALITY WEBSITE, [Online] no. Version 1.2 public, 25 January 2002 (2002-01-25), XP002309206 Retrieved from the Internet: URL:http://www.dentedreality.com.au/jsvali dation/readme-JSValidation.html#rules> [retrieved on 2004-12-06] *
NELSON, JOE: "Client-Side Form Validation Using JavaScript" ENTREPRISE DEVELOPER GROUP - DEVELOPER ADVISORY, [Online] 21 September 2001 (2001-09-21), pages 1-9, XP002309849 Retrieved from the Internet: URL:http://edg.utah.gov/developer_advisory /form_validation/validation.pdf> [retrieved on 2004-12-06] *

Also Published As

Publication number Publication date
AU2003228022A8 (en) 2004-02-25
AU2003228022A1 (en) 2004-02-25
WO2004015567A3 (en) 2005-03-17
US20040024842A1 (en) 2004-02-05

Similar Documents

Publication Publication Date Title
US20040024842A1 (en) Validation framework for validating markup page input on a client computer
US6167523A (en) Method and apparatus for forms data validation and processing control
US20040030991A1 (en) Systems and methods for facilitating automatic completion of an electronic form
US6973625B1 (en) Method for creating browser-based user interface applications using a framework
US7149887B2 (en) System and method for computer hardware identification
EP1683009B1 (en) Systems and methods for configuring software
US6806890B2 (en) Generating a graphical user interface from a command syntax for managing multiple computer systems as one computer system
US20060277248A1 (en) Configuration-based application architecture using XML/XSLT
US8141106B2 (en) Managing elements residing on legacy systems
US7908560B2 (en) Method and system for cross-screen component communication in dynamically created composite applications
US11017052B1 (en) Electronic forms interaction framework for a consistent user experience
EP1604349A2 (en) Associating website clicks with links on a web page
EP1796006B1 (en) System and methods for extensible document generation
EP1230605A2 (en) Method for automatic form filling
US7480680B2 (en) Validating application resources
US7966601B2 (en) Generating web service without coding logic with a programming language
US11663395B2 (en) Automated customization of user interface
US20020091870A1 (en) Method for providing kiosk functionality in a general purpose operating system
US7072974B2 (en) Extensible application interface using machine-readable graphical codes
US6976227B2 (en) Dynamic indication of field status
EP1327929A1 (en) Operating a browser to display first and second virtual keyboard areas
JP2009205353A (en) User interface providing method, and device and program therefor
EP2144160B1 (en) Method and computer system for providing stateful favorites
EP1363199B1 (en) Method and computer system for editing browser documents
EP1326175B1 (en) Method and computer system for editing text elements having hierachical relationships

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP