|
Description  |
|
|
COPYRIGHT NOTICE
A portion of the disclosure of this patent document contains material which
is subject to copyright protection. The copyright owner has no objection
to the facsimile reproduction by anyone of the patent disclosure, as it
appears in the Patent and Trademark Office patent files or records, but
otherwise reserves all copyright rights whatsoever.
BACKGROUND OF THE INVENTION
This invention relates generally to a method and system for producing and
delivering documents having embedded dynamic content. More particularly,
the present invention relates to a method and system for producing world
wide web page document templates by embedding dynamic tags and flow
directives therein, populating the document templates with content stored
in a data source, and delivering the populated documents over the Internet
to clients requesting them.
The last few years has seen a rapid increase in usage of the worldwide
network known as the Internet. This increase is particularly significant
in the commercial arena. More and more businesses are recognizing the
commercial potential for marketing, selling, and distributing products and
services on-line, posting employment opportunities, and providing general
corporate information and technical and product support. The bulk of this
increased activity is taking place on the World Wide Web ("WWW" or "web"),
a resource discovery tool for connecting documents or pages stored on
networked computers by virtue of hypertext links. Although the
architecture and operation of the web will be briefly summarized below,
many resources are available for further background information on the
Internet and the web, including December, J. and Randall, N., The World
Wide Web Unleashed (Sams.net Publishing 1995) and Stanek, W. R., Web
Publishing Unleashed (Sams.net Publishing, 1996).
Web documents are stored on web servers and are provided to client
computers over the Internet upon receipt at the web server of a request
for the document in the form of a uniform or universal resource locator
("URL"). The URL specifies the communications protocol by which the
information is to be transferred and the Internet address of the host or
web server upon which the document is stored. The URL may also specify a
directory path and file name for the document. The communications protocol
for the web is the hypertext transfer protocol ("HTTP"). Other
communication protocols for other Internet communication tools include the
file transfer protocol or FTP, Gopher, news for the Usenet, telnet, and
mailto for electronic mail.
Documents or pages stored on web servers and available over the web are
generally formatted in a markup language. Markup language web documents
contain text and a number of tags which provide instructions as to how the
text should be displayed (e.g., character and paragraph formatting,
tables, forms, etc.), which text should be hyperlinked to other pails of
the document or other documents, and where other types of content,
including graphics and other images, video and audio segments, application
programs or applets, image maps, and icons, should be retrieved from and
displayed in the document.
One of the most commonly used standardized markup languages is the
Hypertext Markup Language ("HTML"), currently available in several
versions. Other standardized markup languages include the Standard
Generalized Markup Language ("SGML") and Virtual Reality Modeling Language
("VRML"). Some markup languages, such as page definition languages, mark
up web documents using a generally proprietary format which is specific to
a particular commercial page display application program.
After a web page is transmitted from the web server to a client computer, a
program referred to as a browser operates on the client's computer to
interpret the tags and perform the formatting and other operations
specified in the tags to display the text and other content in the
document on the client computer's display. Many types of browser programs
are available, including several variations of Mosaic, Netscape
Communications Corporation's Netscape Navigator, Microsoft Corporation's
Internet Explorer, TradeWave Galaxy's MacWeb, and Oracle's PowerBrowser,
to name just a few. Different browsers and different versions of the same
browser provide varying functionality in reading and displaying web pages
and are operable on a wide variety of different platforms.
Because of the huge and ever increasing number of available web sites
(which refers generally to the main or home page and ancillary or sub
pages) competing for users' attention, companies recognize the importance
of having well designed web sites which are informative, attractive, and
user friendly. Much paper and electronic literature has been devoted to
explaining techniques and styles for developing good web sites, and
companies invest much time, money and effort to develop good, competitive
web sites.
Despite its advances in recent years, several problems persist with the web
and the Internet in general which may inhibit its continued growth as a
useful commercial tool. One such problem is the lack of personalized
attention in web sites to users and their specific needs and interests.
For example, users accessing a merchant's web site all receive the same
catalog displaying the same products at the same prices. However, users
have their own particular interests and reasons for accessing a given web
site. Because of the substantial time involved for users to download and
review documents, users would prefer not to download an entire catalog in
order to receive limited information of interest. For example, a user
owning a IBM compatible personal computer would prefer not to have to
download information regarding Apple compatible computers.
Conversely, in real world settings merchants prefer to enter into direct,
one-to-one relationships with customers, and marketing which is more
directed and focused towards each customer's interest is generally more
effective and results in more sales. However, the almost anonymous nature
of the web makes it difficult for merchants to establish that type of
relationship on-line. Also, merchants frequently offer price discounts or
special prices to certain customers, and otherwise provide individualized
responses to customer's requests for assistance and information. Again,
the web environment makes it difficult for merchants to offer such
individualized attention to their customers.
A related problem is that the multiplicity of types of markup languages
and, more significantly, types of browsers makes it difficult for web site
developers to develop web pages that are compatible with all conceivable
browsers users may be operating. This is particularly true for web pages
employing enhanced features which are otherwise desirable to remain
competitive and to show users that the web host is on the cutting edge. As
a result, web pages often contain statements informing users that their
web sites may only or may best be accessed with a given version of a given
browser or may not be accessible with particular browsers. Alternatively,
web pages contain hyperlinked lists of browsers which are supported by the
web server, and users select one of the browsers on the list to hyperlink
to a page which supports their selected browser. This adds time and
inconvenience to the process of browsing the web and frequently annoys
users.
Thus, a methodology is needed for providing web pages to users which are
customized and individualized to each user's particular needs and
interests. Preferably, this should be done in a manner which is
transparent to the user, which does not require the user to search through
and download multiple documents, and which does not require the web site
developer to design and store a large number of web pages. The present
invention provides such a methodology and solves these and other problems
associated with the web to help make the web a more effective commercial
tool.
SUMMARY OF THE INVENTION
It is an object of the present invention to solve the problems described
above associated with use of the web as a commercial tool.
It is another object of the present invention to allow merchants and other
web site developers to create a one-on-one relationship over the Internet
with their customers and other users.
It is another object of the present invention to allow merchants to create
a customized, efficient sales environment in order to maximize online
sales and to provide an efficient and cost-effective shopping experience
for users.
It is another object of the present invention to provide the ability to
embed dynamic content into web pages.
It is another object of the present invention to provide a tool for
developing markup language document templates.
It is another object of the present invention to avoid the need to develop
and store multiple document templates to display hierarchically related
content.
It is another object of the present invention to provide customized web
pages to users in a manner which is transparent to the users.
It is another object of the present invention to automatically provide web
pages to users which are compatible with the specific type and/or version
of the browser being used by the user.
Some or all of the above and other objects of the present invention are
achieved by a method for delivering a document having dynamic content
embedded therein from a first computer to a second computer. The method
comprises the steps of storing a data source containing first content in a
form representing or reducible to a plurality of names and corresponding
values and storing on the first computer at least one document template
having second content arranged therein and a plurality of markers embedded
therein. The markers can include one or more dynamic content tags each
including at least one first content name. The markers can also include
one or more dynamic flow directives each including one or more
instructions and one or more first content names as arguments for the
instructions.
When a request issued by the second computer for the document is received
at the first computer, at least some of the first content is retrieved
from the data source and the document template is populated to produce the
document by substituting values corresponding to content names in the
dynamic content tag(s) or performing the instruction(s) based on the
content name(s) contained in the dynamic flow directive(s) or their
corresponding value(s). The populated template is the document which is
then delivered to the second computer in response to the request.
The present invention may be applied in the context of any type of
networking environment, including internets (including local intemets and
the worldwide Internet) and corporate or organizational intranets. When
applied to the world wide web on the Internet, the first computer is a web
server and the second computer is a client computer. In this context, the
document is a markup language web page such as a HTML document which is
processed by a browser program operating on the client computer. The
present invention thus provides the ability for a web server to deliver
web pages containing customized content.
In preferred embodiments, the customized content is provided based on the
identity of the user operating the client computer so that the document is
individualized to the user's interests and needs. The method then further
involves identifying the user and determining which of the first content
to retrieve based on the user's identity. Web sites may provide users the
ability to register at the site, and a list of registered users is then
stored on the server so that the server can determine whether any
identified user issuing a request for a document is on the list and is
registered.
The list of registered users may further include characteristics associated
with registered users, such as address information, particular interests,
and the user's membership in a group or organization which receives
special treatment such as discount prices. The step of determining which
of the first content to retrieve would then comprise retrieving the
characteristics associated with the identified user and determining which
of the first content to retrieve based on the characteristics.
The markers in the template preferably contain one or more control symbols
to identify them as markers. A control symbol is preferably placed before
and after each marker. When used with HTML the control symbol can be the
"@" symbol because it is not already used in HTML to identify HTML tags.
The process of populating the document template comprises parsing the
document template to locate the control symbols and thereby locate the
markers.
A template parser determines the nature of each marker. For dynamic tags,
the name(s) and control symbols in the tags are replaced with the value(s)
corresponding to the name(s) in the data source. For flow directives, the
actions specified by the instruction are performed. In preferred
embodiments, the instructions include IF or LOOP instructions. An If
instruction includes a condition and action. The condition is evaluated
and, if found to be true, the action is performed in the template. A LOOP
instruction includes one or more indexed names or name arrays. The indexed
names are sequentially processed and the values corresponding to the names
in the data source are inserted at the location of each name in the LOOP.
The flow directives may contain other types of instructions, as will be
recognized by those skilled in the art.
The data source may comprise any conventional type of database and database
management system, provided the content stored in the database represents
or is reducible to name/value pairs. When the content is reducible to
name/value pairs, the method involves reducing the first content to the
name/value pairs and storing the name/value pairs in a container class or
object. Alternatively, the data source itself may be a container in which
the content is already stored in name/value pairs.
In accordance with the further aspects and objects of the invention, a
method is described herein for, in response to a request from a client
computer for a document, automatically providing a document which is
compatible with the client computer's browser type. The method involves
storing on the web server a plurality of document templates compatible
with a plurality of types of web browsers, automatically identifying at
the web server the type of browser operating on the client computer, and
selecting one of the plurality of document templates to be populated which
is compatible with the client computer's browser type. This method may be
used for both dynamic document templates as well as for standard, static
web pages.
In preferred embodiments, the step of automatically identifying the browser
type comprises reading a browser signature after receiving the client
computer's request for the document. A signature table or registry may be
stored on the web server linking browser signatures with associated
document file extensions. The step of selecting one of the documents
comprises looking up in the signature table the read browser signature,
finding a document file extension associated with the read signature, and
selecting a document having the found file extension.
In accordance with still further aspects of the invention, a method is
described for automatically inheriting templates within a directory
structure on the web server. The method involves designing and storing a
plurality of document templates on the web server in a hierarchical
directory structure, each document template corresponding to one of a
plurality of possible documents which may be requested by users. When a
request is received which includes a locator such as a URL identifying a
directory and the requested document, the directory identified in the
locator is searched for a first default document template corresponding to
the requested document. If the first default template exists in the
directory, it is selected for use as the document template. If no first
default template exists in the directory, the path is changed to a
directory which is one level higher than the directory in the hierarchy
for a second default template, that is, to the parent directory. If a
second default template exists in the parent directory, it is selected for
use as the document template. If the second default template does not
exist in the parent directory, the two previous steps of changing the path
and searching the new directory are repeated until a default template is
found or until the highest level directory has been searched. As a result,
web site developers and publishers using the template scheme of the
present invention will not be required to design and store templates for
every conceivable path in the directory, but may rather design only a
limited number of templates which are used in a number of circumstances.
A system according to the present invention comprises a data source stored
on the web server containing first content in a form representing or
reducible to pairs of names and corresponding values and document
templates stored on the web server having second content arranged therein
and markers embedded therein. The markers include dynamic tags and flow
directives with IF, LOOP, or other instructions and content names as
environmental variables. The system further includes means such as a
communication link and web server management software for receiving at the
web server a request issued by the client computer for the web page
document. One or more scripts stored and operating on the web server
perform the steps of retrieving at least some of the first content from
the data source, selecting one of the templates, and populating the
selected template to produce the document.
Some or all of the objects of the invention are also achieved by a method
of modifying a markup language document such as a HTML document to provide
dynamic embedded content in a world wide web page produced from the
document. The method comprises storing content in a form representing or
reducible to a plurality of names and corresponding values, inserting into
the markup language document dynamic content tags comprising one or more
first control symbols and at least one content name, and inserting into
the markup language document dynamic flow directives comprising one or
more second control symbols, one or more if or loop instructions, and one
or more content names as arguments for the one or more if or loop
instructions.
Some or all of the objects of the invention are also achieved by a method
for delivering documents having dynamic content embedded therein over an
internet. The method comprises storing a data source on a server computer
connected to the internet, the data source containing content in a form
representing or reducible to names and corresponding values, creating
document templates by embedding dynamic tags and flow directives in
documents, the dynamic tags and flow directives comprising at least in
part one or more names of content stored in the data source, storing the
document templates on the server computer, in response to receipt by the
server computer of a request from a client computer connected to the
internet, the request identifying a desired document, performing the steps
of selecting a document template corresponding to the desired document,
populating the document template with content stored in the data source
based on respective values of content corresponding to names in the
dynamic tags and flow directives, and delivering the populated document to
the client computer.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention is illustrated in the figures of the accompanying drawings
which are meant to be exemplary and not limiting, in which like references
refer to like or corresponding parts, and in which:
FIG. 1 is a block diagram showing a system for creating, storing,
populating and delivering documents having dynamic content embedded
therein in accordance with one embodiment of the present invention;
FIG. 2 is a source file for a sample template designed in accordance with
the present invention;
FIG. 3 including 3A-3C is a flow chart showing the process of creating,
populating and delivering documents having dynamic content embedded
therein in accordance with one embodiment of the present invention;
FIG. 4 is a finite state diagram showing template parsing states and their
relationships for the template parsing function in accordance with one
embodiment of the present invention;
FIG. 5 is a flow chart showing the process of automatically sensing a
browser type and delivering a document compatible therewith in accordance
with one embodiment of the present invention; and
FIG. 6 is a flow chart showing the process of document template inheritance
in accordance with one embodiment of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
The system of one preferred embodiment of the present invention is shown in
the block diagram in FIG. 1. The system comprises a web server 10 which is
a computer system including one or more processors, volatile and
non-volatile memory devices, and input and output devices, upon which is
operating web server software, such as Netscape Commerce Server available
from Netscape Communications or one of many available server software
packages which may be downloaded from the Internet. On the web server 10
are stored a data source 12 and a script 14 containing a number of
functions including a template selection function 16, a template parsing
function 18, and a data source interface function 20. The script 14 can be
implemented in any programming language, though an object-oriented
programming language such as C++ is preferred.
The web server also stores a library of functions 22 which are called by
the script 14, and a plurality of document templates 24. The template
selection function 16 selects one of the templates 24 to be used based at
least in part on the URL received at the web site, and the template
parsing function 18, in conjunction with the library functions 22,
populates the selected template to produce a document 26 to be sent to a
client. Each of these components of the system and their functionality
will be described in more detail below.
A communication connection is established between the web server 10 and
client computers 2, either via direct links or via indirect links over the
Internet. The client computers 2 send URLs requesting particular documents
or pages from the server 10, and the server responds by delivering the
documents or pages to the clients 2. The manner of communication between
clients and servers over the Internet, including over the web, is well
known in the art and does not require further elaboration herein.
The data source 12 is stored in non-volatile memory on the web server 10.
Alternatively, the data source 12 may be stored on another computer to
which the web server 10 has access. In some embodiments, the data source
12 is a relational database and includes a database storing content to be
inserted into the templates 24 and a database management system for
creating database structures, declaring data relationships, and performing
database operations. Alternatively, the data source 12 may include a
database in conjunction with a proprietary search engine.
Regardless of its particular structure, the data stored in the data source
12 directly represents or is reducible to name/value pairs. Every item in
the data source 12 is or can be represented by a name or variable and a
value corresponding to the name. For example, a data source 12 storing
order and account information for users who purchase items from a merchant
operating a web site can include names such as User.sub.-- Id (storing a
unique identifier for each user who registers with the web site),
aOrder.sub.-- Date, aOrder.sub.-- Id, aTotal.sub.-- Due, Account.sub.--
Balance, etc., and values, if any, corresponding to these names. Some
names, such as aOrder.sub.-- Date and aOrder.sub.-- Id, represent multiple
indexed names or single or multi-dimensional arrays, and can thus take on
multiple values.
In preferred embodiments, the data source interface function 20 retrieves
content from the data source 12 and stores the content in a container
class as a pool of name/value pairs. A container class or container is an
object in which data is stored for use by an object oriented system, and
is well known in the art. Using the sample names given above, the data
source interface function 20 retrieves from the data source 12 the value
of the User.sub.-- Id based on the identity of the user or client 2,
retrieves the names and corresponding values for any other names which are
linked to the User.sub.-- Id name in the data source 12, and stores these
name/value pairs in the container. Thus, if the identified user 2 has
placed a previous order with the merchant operating the web server 10, the
data source interface function 20 retrieves the names and corresponding
values of aOrder.sub.-- Date, aOrder.sub.-- Id, aTotal.sub.-- Due, etc.
associated with the user 2 and stores those names and values in the
container.
The web page templates 24 stored on the web server 10 are markup language
documents containing a number of dynamic content tags 34 and flow
directives 36 embedded therein. In the preferred embodiments the documents
are encoded in HTML, which is currently compatible with a broad range of
browsers. In a manner similar to the placement of HTML tags in a document,
a control symbol is placed before and after each dynamic tag 34 and flow
directive 36 to identify it as such. In preferred embodiments of the
invention, the control symbol is the symbol "@", though one skilled in the
art will clearly recognize that any symbol may be used as a control symbol
provided it is distinguishable from symbols used to identify existing HTML
tags.
The source file for the sample template 24 shown in FIG. 2 is helpful in
illustrating the present invention. As with conventional HTML documents,
the template 24, titled ListOrders.tem (the filename extension .tem being
used to identify it as a template), contains text 30 and standard HTML
tags 32 including character and paragraph formatting tags (such as <head>,
<body>, <font>, <center>, and <table>), tags to produce a form to be
completed by a user (including the tags <form>, <select>, <input>, and
<option>), anchors for hyperlinks (represented by a tag in the form <a
href=URL><text or image to be linked></a>), and image insertion tags
(represented by a tag in the form <img src="path/filename.gif">).
In accordance with the invention, the template 24 also contains a dynamic
tag 34 (such as @(User.sub.-- Id@) and several flow directives 36a-36c
(such as @if month=Jan@SELECTED@end@ and @loop@ . . . @/loop@). Any number
of dynamic tags and flow directives may be placed within a template 24,
and they may be embedded anywhere in the template 24, including within
text 30, within HTML tags 32, and within other flow directives. The
placement of one flow directive 36 within another results in a nested flow
directive structure. In preferred embodiments, the system supports two
types of flow directives 36--IF and LOOP instructions. One skilled in the
art will recognize that many other types of flow directives may be
supported in accordance with the invention, including do-while, case, and
for instructions.
The following logic underlies the dynamic tags and flow directives as
interpreted by the script 14 and library functions 22 in preferred
embodiments of the invention: Given a pool P of name/value pairs retrieved
from the data source 12 and stored in the container, define V(name)=the
value corresponding to name for all names in P. The dynamic content tag
and flow directive logic is then:
for a dynamic content tag: @name@ outputs V(name) into the template 24;
for an IF instruction in a flow directive:
@if condition@X@end@ tests whether condition is TRUE and if so outputs X
into the template 24, where:
______________________________________
a condition having the form:
is TRUE when:
______________________________________
name name .di-elect cons. P
name=target V(name)=target
name!=target V(name).noteq.target
______________________________________
for a LOOP instruction in a flow directive 36:
@loop@Z@nameX@nameY@@/loop @ outputs into the template 24
ZV(nameXi)V(nameYi), where
i goes from 0 to min{j .vertline.nameXj .epsilon slash. P and nameYj
.epsilon slash. P};
Z represents a constant, text, or HTML tags; and
any number of names may be inserted in the LOOP instruction, with the above
instruction illustrating an example of two such names, nameX and nameY.
In the preferred embodiments, the names in the LOOP instruction are
retrieved from the data source 12 and stored in the container as an index
of names, e.g., nameX0, nameX1, . . . , nameXn. During execution of the
LOOP instruction, the index is traversed sequentially to retrieve the
series of values. Alternatively, the names in the LOOP instruction can be
represented as arrays, with the values being sequentially incremented
through the use of well-known techniques such as array indexing or pointer
arithmetic.
Applying the logic set forth above to the sample template 24 shown in FIG.
2, the dynamic tag 34 @User.sub.-- Id@ is replaced with the value of the
name User.sub.-- Id stored in the container. When processed by the
client's browser, the use of the <title>and </title> HTML tags produces a
title containing the value of the name User.sub.-- Id and the additional
text 30 within the <title> tags. The series of flow directives 36a
containing IF instructions within <option> HTML tags output the strings
"SELECTED" into the template 24 whenever the name month in the container
has a value corresponding to the respective target in the <option> tag,
i.e., Jan, Feb, etc. As a result, | | |