WWW5 Fifth International World Wide Web Conference
May 6-10, 1996, Paris, France


NIF-T-NAV :
A Hierarchical Navigator for WWW Pages

Kirsten L. Jones, Silicon Graphics, Inc.

Abstract

The statelessness of HTTP makes it difficult for information providers to present complex hierarchical information in an easily navigable fashion. Many non-WWW interfaces allow users to browse through a hierarchical index of information, divided into categories to reduce confusion. This paper describes a program which was developed to create an improved interface for complex hierarchies on the web. Nif-T-nav was developed to solve the problem using standard HTTP; the state information is stored at the client and passed back to the server through the URL. This allows an information provider to present complex information in an easily navigated fashion, reducing the time needed for the user to find the desired data. Keywords: stateful and stateless, interface, navigation, hierarchy, index

1.0 Introduction

Navigation is one of the primary interface challenges for information providers. If an information structure is not easy to navigate, the user will become frustrated and move on without finding the data they're seeking[13]. One way to navigate complex information structures is through a hierarchical index. Generally, this type of information is displayed with a graphical or text-based hierarchical tree, grouping information into categories for easier navigation. This breaks up the complex structure into smaller pieces, causing less confusion for the user. Unfortunately, with the World Wide Web[6], the simplicity of HTML[2] and the statelessness of HTTP[1] force undesired compromises in this type of hierarchical data navigation.

With SGML[9] browsers, as well as most personal computer applications, the situation is quite different. Hierarchical information is represented with an expandable table-of-contents (TOC). As each node is activated, the next level of information for that node is shown indented, directly below its "parent" node. That portion of the tree is thus expanded, giving the user further choices appropriate to their selection. Although complex indexes are often needed on the web, there is no easy way for the information provider to accomplish the tree behavior using HTML. The environment does not support automatic hierarchical behavior for browsing indexed information.

smoke fetish archive Avril lavigne pussy genie in a string bikinie cast Girls fuck horses stories pornstars xxx babes Nikki schieler ziering nude dickies jeans Skinny teen bitches hentai sex videos free Little girls sex nude pot Boob tube High school musical vanessa nude pics free artistic nude photos pussy prowler Gayforit watch free lesbian videos free teen celebs nude Bikini dare galleries spiritual sport fucking Big and beautiful porn stars
faked nude Sleep nude girls nature nude video Catfight nude nude asian sluts nude ladies pussy Sara roemer nude asian girls non nude School girls nude pics gay nude workout Nude nudist pamela anderson playboy nude pics Kathrine heigel nude Free nude hentai fairies nude swedish blonde nude Nude celebrity videos for free nude celebrities miley cyrus nude south african men Free hardcore nude nude cellphone pictures Bollywood nude boobs
blowjobs gallery Jim hardick free porn videos no credit card Creatine sex milfporn star aluminium essex Free video sex positions ultrapasswords xxx Xxx teen britney spears blowjob video Facts teenagers curfews natural hairy pussy Amature women Edwin carungay fuckyourtube sexproadventures Free kinky sex tips rave sex porn lyrics sexy back Better than sex cake recipe final fantasy rikku xxx Paris hilton blowjob
free yno sex video 3d young art sex phone web cam sex Amature woman sex party free home-made sex clips young sex in america Free dirty sex pictures best sfrican sex movies He she sex pics picts of amature sex Julie michaels sex scene bible view on sex Sex tv tv show Extreme insertion sex 6 fee animal sex vids sex girls piss tube Thai pussy sex porn sex 3d fantasy pics sex mature woman jokes Jeremiah birthday sex bio tulsa police sex registration Sex vedeo stream chat
independent sex scenes Racist daughter sex clearanced sex toys K9 sex clips britney sex movies black sex squirt Awsome hard sex manson sex onstage Nimpho sex classifieds sex offenders index Nomid animal sex hardcore lezbo sex Oral sex possitions Out sex videos sly fox sex famos toon sex Only ebony sex anette dawn sex extent sex pill Mature hairy sex asian sex french Kim kardishan sex
education research group Ari banerjee yankee group ancestry group Randy orton group free group sex porno group insurances Galleon group hedge fund rubber fab technologies group Attorneys group group b infection Risk retention group insurance the rules support group Green resources group Group dynamics team r46b group high five amateurs group Amazing group sex on demand color group lesbian group gallery Campy centaur group accept group Group of deer is called
fucking machine xxx College sex xxx chobits xxx Iran xxx sexo xxx enanas collection xxx Eve angel xxx pork xxx Older women xxx download free psp xxx Xxx sluts videos swingers xxx free Free bi xxx Photos xxx free harecore xxx xxx porn passwords Rapes xxx xxx adult dvd xxx gratis con putas Web site xxx free xxx mangas Alena seredova xxx
ball dragon porn video The thrills music video woman squirting free video Roma video card e pci video mtv jam video Apartment mikes picture video paris hilton video stills Big cock homemade movie council meeting video Studio telescope video converter ipod ora video Victoria pink videos Uk movies cussler movie new video releases 2005 Conferencing live video violence video games children tasha nelson video Rv video camera movie graber Adam sandler secret video
teacher sex crazydumper Sex health video marriage with sex Celebrity sex viceos busty office sex shove bull sex Football sex rio free sex shots Consensual submission sex free sex gemes Mauritius sex site hardcore sex mp3 Barbarella sex machine Hunting sex jessica alien sex gaems free sex xxx Muscular sex pictures ass booty sex dogpound group sex Anail sex videos vitamins before sex Brewster sex stories
asians sex Haveing sex with a man lesbien sex xxx Hypno girl sex arabic sex 9356 biker girls sex Guilty gear sex mature free sex tube Nude girls having sex with boys ray j and kim kardashian full sex tape for free Cyber sex forum what is angry sex Sex while pregnant pictures When can i have sex and not get pregnant home made amateur sex tapes dog sex beastality Sex games online for women clips cartoon sex taboo charming mother sex Girl sex pose hardcore gothic sex Best sex teacher
love sex relatioships Historical books sex pegging sex literature Sex story community sex bites torrent long sex trailors Gonzo rawr sex carrie bradshaw sex Voung teen sex home sex stream Kinky sex forum savvanah gold sex Anal sex wide Crushing for sex comic sex jokes mermaid sex videos Pet sex foram ali sheffield sex cancer sex partners Calforina sex retreat mini teens sex Anal sex cum
victorian xxx Xxx sci fi sexy photos xxx Xxx video play xxx babe videos animail xxx All xxx tube tilf 2 xxx Xxx puzzle black porno xxx 3gp xxx wap videos streaming xxx Free xxx moves Muscle gay xxx free gothic xxx video naruto xxx Xxx pass free best xxx movie 2008 xxx dog clips Xxx free e cards xxx porn full videos Xxx stone
porn movie theaters Morgan lane porn catherine porn Porn mom son sex mommy and daddy porn kasumi porn Find porn torrents rumania porn Xxx pictures porn black porn videos free Discipline porn biggest penis porn Littel girl porn Porn leg warmers tiny tits porn movies top 10 porn clips Free lovemaking porn homemade mexican porn vanessa raia porn Muslim porn sex free high definition porn streaming James nichols gay porn
fuck me gay Vulva fuck sexy fuck movie Mother lets son fuck her fuck you mom and dad mommy fuck son Father son fuck girl porn to fuck Fuck off letter fuck my boob Megaupload fuck i fuck my mother inlaw Doggy style fuck videos Woman looking to fuck shemales fuck girls movies kama sutra fuck Fuck you love mother daughter fuck boyfriend fuck church Dog fuck woman movies the fuck buttons Man fuck his dog
Blowjob And Cum Swallow mom giving son blowjob Preggo Blowjob free blowjob compilations blowjob mature Blowjob Guys blowjob fantasies 18 Avatar Blowjob sister gave me a blowjob Tickling Blowjob blowjob at school Hentai Porn Blowjob Fake Blowjob girl pukes during blowjob blowjob tryouts Guys Blowjob japanese girl giving blowjob most famous blowjob Gay Horse Blowjob double blowjob vids Blowjob Outdoor
Youngest Girl Porn Ever plus size sexy school girl Flavor Flav Girl Poops all girl sex videos girl porche Baby Girl I Want You gossip girl on tv com Hey Hey Baby Will You Be My Girl naked girl shitting Little Girl Photos ghetto black girl Go Go Girl Adult Girl Psp Theme girl for sale on ebay pin up girl hats Little Monster Girl naked teen girl pics black girl actress Sleeping Girl Gets Raped how to approach a girl online Girl And Girl Haveing Sex
Ink bitch webbie gutta bitch Lyrics to five star bitch bitch in french Badd bitch quotes cant trust no bitch Bitch asian im a pretty bitch Kristen stewart is a bitch a bitch slap G unit fat bitch Shut up bitch download im in san diego bitch cock hungry bitch Teeh fuck the bitch is kristen stewart a bitch bitch milfs Lyrics to bitch by meredith brooks foot fetish bitch Shake that ass bitch and let
paris hilton beach sex Cocksucker snake girls xxx Nude booty poppin little teens pics most extreme porn list Audience analysis heather locklear nude Porn star named madison lolita preteens Cheyanne bride black cock joelle amateur Nude christina aguilera Nice nude teen photo gallery hot cab mature sex sites Fucked by my dog mpegs massive tits men fucking boys Swedish porn galleries amateur nudes Sexy superheroes
bbw nude women Nude pussy cum naomi nude Nude asian americans courtney smith nude sienna guillory nude Girls basketball nude kate bosworth nude fakes Amateur wife nude photos ukraine nude teen Big black ass nude kiera knightley nude pics Nude russians Sleep nude chris brown rihanna nude photos pic of nude girls Bollywood nude images sexy and nude pics free nude college girl videos Nude dads and daughters ameture nude pictures Serena williams nude pix
1st Anal Sex what is an anal prolapse Types Of Anal Sex gay anal sex technique gay anal fisting videos Why Does Anal Sex Feel Good video double anal Lesbian Teens Anal largest anal dildo Lesbian Anal Toy anal sex poop videos Anal Hidden Cam Amateur Interracial Anal amy amour anal how to anal intercourse Anal Sex Condoms eyaculacion anal free anal streaming Anne Hathaway Loves Anal mini anal Unnatural Anal Insertions
Anal Guest free full anal movies Manual Anal 1st anal video shits herself anal Couple Anal Sex roxy renolds anal Sara Jay First Anal Scene anal destruction casedy Como Hacer El Sexo Anal anal sex effects Anal Cancer Blog Anal Toys Lesbian ice la fox anal scene lesbian anal vid Rough Anal Sex Clips wet anal double anal sex movie Palin Anal really painful anal Shitty Anal Fuck
rodox sex mpg Shower sex how penis breasts sex Sex malam pertama random sex videos exsplicit sex videos Sex lubrication silicone i post sex Sex fat chick celebriies having sex Adult sex animations sex and motorcycles Adult sex therapy Laura cover sex fucking having sex sex vacation caribbean Pool sex orgasm women barbershop sex office sex gay Secretaire office sex black sex vod Rainbow mika sex
Rock cock jock cock robin when your Wife big cock huge cock free pics Mature sucking black cock cock docking clips Hardcore riding cock cock sucking whores Fuck you cock sucker cock fighting rules Big cock hardcore Hubby loans to black cock milf sucking young cock two cock in pussy Cock sucker t shirt two cock fucking cock pierced Tila tequila suck cock largest cock videos White teen black cock
miss teen usa south carolina Fucking boobs thumbnails free videos of gay black me gandbang Senior sex trailer sophie monk nude nude music videos Britney spears porn video maggie grace nude Preteen bikini movies xxx Sexy pamela anderson vanessa new nude photos Aisha tyler nude pics Gametophyte produces male female sex mate plants toothless blowjob monthly membership streaming porn Pinkpanteens preteens in thongs lingerie nudecollege students Fat mature sex teen monologues Ebony muff diving
sex with hookers Free jaybee sex sex with redheads Cartoons about sex usa sex forum retarted girls sex Photo booth sex gay virgin sex Female sex chromosome sex teen candy Teenage sex story sex feet tingle Celebrity sex sces Flex girl sex lesbian sex galerii work at sex Rough sex free roug gangbang sex hypnosis sex best Sex trek 6 teens wating sex Ssecretary sex videos
1st Anal Sex what is an anal prolapse Types Of Anal Sex gay anal sex technique gay anal fisting videos Why Does Anal Sex Feel Good video double anal Lesbian Teens Anal largest anal dildo Lesbian Anal Toy anal sex poop videos Anal Hidden Cam Amateur Interracial Anal amy amour anal how to anal intercourse Anal Sex Condoms eyaculacion anal free anal streaming Anne Hathaway Loves Anal mini anal Unnatural Anal Insertions
Displaying this type of information should be possible for web page providers, but until now, the solutions have been less than ideal. This paper will first explore the various solutions to this problem, addressing current solutions as well as possible alternatives. Next, the proposed solution will be discussed in detail: how the hierarchy is built; how the "state" is maintained and deciphered; how this creates the desired behavior.

2.0 Current Implementations

Several different paradigms have been developed to attempt to display this type of information, while maintaining as much of the expected behavior as possible. There are two possible ways to create the tree: statically and dynamically. The two most common solutions are described below. Both of them are static page environments, where the "tree" is simply a maze of pages designed to behave in a tree-like fashion. This allows the user to exploit the "bookmark" feature of his browser with expected results, but as we'll see, the solutions fall short in other areas.

2.1 The Limited Context Solution

The most common solution (used by yahoo[10], among others) is the following : when a node is activated, a new page is displayed, with only the information pertaining to that node displayed. The node path information is often displayed at the top of the page, to maintain the specific context for the current node. Figure 1 displays this behavior.

Figure 1. http://www.yahoo.com. Note the parent node information indicated above the selection list.

Nonetheless, this solution does cause a context shift for the user, forcing them into an unnecessarily restricted view, and removing relationships to the other nodes at higher levels. This solution also requires separate pages to be maintained for each node and sub-node on the server.

2.2 The Single-Open Solution

Another solution, closer to ideal, mimics the correct behavior only to a certain extent. When a single node is expanded, the page behaves as expected. The page is re-drawn with the sub-nodes displayed indented under the activated node. However, when another node at the same level is selected, the first node collapses back to its default state. This unexpected behavior causes unnecessary confusion: the user has no reason to assume there is a limitation on the number of expanded nodes. Figure 2 shows a single-open hierarchy at it's limit. If the "Second Child" is opened, the "First Child" will close.

Figure 2 - The "Single-Open Solution" with a single path open.

This limitation is caused by the implementation; one static page with an expanded node is created for each node in the table of contents. In order to support multiple open nodes, the number of pages required would increase logarithmically. In a static world, this is the best solution, but it still falls short of our desired behavior. The situation becomes even more unwieldy when additional levels are added.

2.3 What the "Ideal" Solution Would Need

What is needed is an implementation which maintains context for the user, following the expected behavior of a hierarchical text view without adding unexpected behaviors or unwanted context shifts. Simplicity is important, although practicality is imperative: the simplest implementation would be to build a tree of pages for each possible combination of open nodes. As was mentioned above, this would be unwieldy for even the simplest tree, and does not scale at all.

The reality, then, is that the best solution would be a dynamic one. The method should transparently behave as the user expects, without expecting concessions or adding a learning curve. Figure 3 shows the expected behavior for the information view. The ideal program would accomplish this without imposing unnecessary requirements on the client or server; it should be flexible and extensible. It should also support HTML-type behavior, in that using a "bookmark" feature should behave as expected.

Figure 3 - The ideal interface, displaying multiple open paths at once.

3.0 Storing the "State" Information

In order to correctly mimic hierarchical tree behavior, the current "state" of the tree must be retained whenever a new node is selected. This introduces a new question: should this information be held at the server or the client? This decision is crucial for the design[8].

3.1 Storing the State at the Server Side

In order to maintain the current tree state at the server, some sort of token needs to be assigned to each client. The best implementation of this is the Netscape[11] "cookie." When a cookie-less client contacts the server, the server assigns it a unique cookie to pass back whenever it needs a new page. The state information is stored at the server end, and it accesses this information whenever a new page is requested.

This solution has several drawbacks. The first, most obvious problem is that it is a Netscape-specific solution. This is a show-stopper for many information providers, as they are not able to dictate browser selection to their users. However, there are other challenges for any "cookie" type solution.

One problem involves expiration. The server can never tell if the client is truly "finished" with a page, so an arbitrary expiration time must be selected for each cookie (lest the server's storage capacity become overfull). This means that the user cannot "bookmark" the tree in a particular state. When they return to that bookmark, the "cookie" will have expired, and they will have to re-create the state from scratch. The expiration time will also cause unexpected problems if the user simply stows the browser for long periods of time. Both of these problems cause unexpected behavior of the tree, without adding any value to the solution.

The major drawback is simply that there is too much overhead in this solution. Expiration is not needed, nor is user tracking. The only information that is important for the tree display is the previous state, and the requested state. Storing this information on the server adds unneccesary steps to the completion of the request, as well as causing unexpected tree behavior.

3.2 Storing the State at the Client Side

If the information is to be stored at the client side, where should it be kept? It can remain completely invisible to the user using hidden variables, or be passed from the client to the server through the PATH_INFO variable, adding the necessary state information to the URL[12].

3.2.1 Hidden Variables

Using hidden variables allows complete transparency to the user, and definitely satisfies most of the requirements for state storage, but for one problem: "bookmarking" the tree in a desired state would not work correctly. When the user returned to the page, it would be in the default starting state.

3.2.2 PATH_INFO

The PATH_INFO is the variable which contains any information in the URL beyond the name of the program itself (if "niftnav.cgi/PATH/INFO" were the HREF for the link, the PATH_INFO would contain "PATH/INFO"). This method has been used to maintain "statefulness" in other Web applications, such as the Xerox PARC map viewer[5]. Using the PATH_INFO variable exposes the state information to the user, removing the complete transparency afforded by hidden variables. However, by using PATH_INFO, the tree can be "bookmarked" in any specific state, and when the user returns to that bookmark, it will look exactly as expected. This is an important advantage which outweighs the loss of privacy for the tree information.

4.0 The Solution

So the ideal program creates the pages dynamically, storing the state information at the client, and passing it back to the server using PATH_INFO. After considering various options, we decided to implement the process using a structure definition file of some sort, and a Perl[7] program, run through CGI[3,4], which uses that file to create the desired pages for the end-user. The definition file needs to have enough structure to define a tree with no limit on depth or number of nodes. The program should be efficient enough to process only those portions of the tree which apply to the current state, to ensure speed and minimal resource usage.

4.1 The Tree

The first definition for our environment will be the structure definition file (the "tree"). We need to create a template that is simple to use, yet completely extensible. The fields required for each node are:

Additionally, we want to have an easy way to describe relationships between nodes (parents / children / peers). The structure that we use for our tree is as follows:

LEVEL | NAME | LABEL | (optional) URL

The "level" and "label" fields are straightforward. The "URL" field is filled in when the author has finished creating a navigable path to an actual information source. The "name" field allows us to record and track node activation; in addition, the name field is responsible for maintaining the relationships between nodes. A child of another node has two identifiable features: its level is one greater than the parent node, and its name begins with the parent node's name.

An example tree might look like this.

1 | ST | "Starting Node" |
2 | STCH | "First Child Node" |
3 | STCHCH | "Next Generation Node" | http://foo.com
2 | STCHI | "Second Child Node" | http://bar.com

In this tree, the relationships between the nodes are as follows: "Starting Node" has a name of "ST", and its level is 1. Any children of "Starting Node" would then have these characteristics: their level would have to be 2, and their names would have to start with "ST". Thus, the direct children of "Starting Node" are "First Child Node" and "Second Child Node". In addition, "First Child Node" has one child, "Next Generation Node," whose name starts with "STCH" and whose level is 3 (one more than "First Child Node").

This tree layout describes the author's intent as follows: When the tree is initially displayed, only "Starting Node" should be visible (it is the only Level 1 node in the tree). If that node is activated, "First Child Node" and "Second Child Node" should be revealed; both of those nodes are Level 2 nodes whose names begin with the name given to "Starting Node." "First Child Node" can be activated to reveal "Next Generation Node." Both "Next Generation Node" and "Second Child Node" directly link to web pages external to the tree structure. <insert explanatory image here>

This design defines a structure from which a tree can be built, without adding extraneous overhead to the creation of the file. It allows indefinite depth as well as unlimited nodes at any particular level. It describes the relationship between nodes in a human-readable and predictable fashion. Now that the tree has been defined, a program must be designed to correctly translate it into a hierarchical index display.

4.2 The Program

The remainder of section 4 will cover the code and how it creates the desired output. The actual program reads in the above tree file, dynamically creating html pages that match the user's expectations. An algorithm is needed for parsing the fields of the tree and the client-provided state information to create these pages correctly. The program does not unnecessarily process unnecessary entries in the file, restricting its attention to the lines which are potential display targets. Directory lists are used to indent the child nodes, allowing us to use our own icons (menu lists would work equally well, if graphics were not needed).

4.2.1 The API

The PATH_INFO contains the "name" information from the tree file for each link that has been activated. When the tree is in its initial state, each first level node is linked back to the program, with its own name as the PATH_INFO. This allows the client to indicate to the program which node was opened. As the tree is further navigated, additional names are added to the PATH_INFO (separated by "/"'s) to indicate to the program which nodes were previously opened. When a node that has previously been opened is activated again, the program closes that node, along with any children, removing their entries from the PATH_INFO.

As an example, look at the tree listed above. This simple tree has only one node where the level is 1, so the initial page would have only a single visible link:

<a href="niftnav.cgi/ST"> Starting Node </a>

When "Starting Node" is activated, the page would change to the following:

<a href="niftnav.cgi/ST/ST"> Starting Node </a>
<dl>
<dd><a href="niftnav.cgi/ST/STCH"> First Child Node </a></dd>
<dd><a href="http://bar.com"> Second Child Node </a></dd>
</dl>

The page would now have the original link listed, with its children nested in a list below it. Each link would now have a different action associated with it. Activating the "Starting Node" again would "close" that node and all of its children (everything in the list), giving the user a page exactly like the first one. Activating "First Child Node" would display a new page, with all of its current information, adding "Next Generation Node" as a new list item nested below "First Child Node". Activating "Second Child Node" would take the user away from the navigational interface, to the information listed in the indicated URL.

4.2.2 The Algorithm

In order to process the tree efficiently and correctly, the program keeps track of the information passed back from the client through the PATH_INFO variable, the highest useable level, and the current level; it also stores the name of the most recently encountered variable, paired with its level. As the names are processed, the current level variable is adjusted appropriately The highest useable level changes when the variable being processed has a higher level than previous variables.

When the program starts, it first checks to see if there is a PATH_INFO variable passed to it from the client. If there is, it creates an array to hold the names from PATH_INFO, and checks that array for duplicates; upon finding a duplicate, it runs the "closing" routine, which removes both copies of the name as well the names of any descendants from the array. This closes the node selected and removes any state information for nodes below it. Once that is done, it processes each entry in the file.

The processing of each entry starts with a check against the array. If an exact match is found within the array, the following occurs: the level and name are stored as an associative pair; the level of the entry becomes the current level, and the highest useable level is adjusted, if necessary. Once that step is complete, the entry moves on to the next stage if its level is not higher than the highest useable level. Otherwise, the program moves to the next entry for processing.

Next, the entry is processed to determine if it will be displayed. For any level, the URL information is determined. If there is a URL indicated, then that is the expansion information for that node. If not, the URL includes the program name, current PATH_INFO, and the name for the current entry. The entry is then processed differently depending on whether the level is 1 or not.

If its level is 1, the entry is displayed regardless of any state information. The previous level is checked to see if any lists need to be closed before creating the entry; also, an anchor is added to the entry if it matches the last PATH_INFO entry activated (to maintain context for the user).

If the level is not 1, a check is made to see if there is a node associated with its (level -1), and if the entry is a direct child of that node. If so, the entry will be displayed with the above-defined URL. Before displaying, the previous level is compared with the current entry to determine if a list needs to be opened or closed before writing out the current node.

4.2.3 Putting it all Together

To understand how the processes work at a higher level, let's look at the specific scenarios encountered by the program. When the program is started from scratch, no PATH_INFO is passed in. Consequently, neither the current level nor the highest level change, and the program processes only entries with a level of 1; each such entry is written out with either the URL specified for that node, or calling the program with its own unique name as the PATH_INFO.

If one of these nodes is activated, the program is called again, this time with some information in the PATH_INFO variable. It processes each line as before, but when it encounters the line which matches the variable, it creates a name:level pair in an array, increments the current level counter and the highest level counter. Subsequent lines which do not have a level of 1 are checked to see if they are direct descendants of the matched variable, and if so they are displayed.

If a previously open node is clicked again, it creates a duplicate entry in the PATH_INFO. When the PATH_INFO array is checked for duplicates, both copies of the node name are removed from the array, along with the names of any descendants, either direct or indirect. The tree is then processed normally.

As we can see, then, the program correctly responds to the various scenarios as a user browses through the hierarchy. The information is stored at the user's end, able to be "bookmarked" without losing the state of the tree. The program requires minimal involvement by the server, which is only required to process the user's state information when the client requests a new page. Using the PATH_INFO allows us to correctly emulate the behavior we're after, without adding unnecessary complexity to the process.

5.0 Conclusion

User interfaces on the web are often far behind what can be found in other applications. It is tempting, as an information provider, to use the limited environment of HTML as an excuse not to improve the interface. This gives the users an impression of the whole web arena as more simplistic and less robust than non-web applications. It forces them through a learning curve, or at the least exposes them to jarring context shifts. Rather than hide behind the limitations of HTML, the web community should find ways to innovate to the ideal, giving users the behavior they're expecting from the tool they're using.

Java allows information providers to offer their users excellent user interfaces, but is limited to browsers designed to accept applets. When working in a more generic Web environment, web developers must work with what is available. The technology used by nif-T-nav is supported by all browsers and servers. No changes need to be made by the user or by the information provider. Using the same technology, other interface improvements are certainly possible. So, rather than compromising the delivery of your data with substandard interfaces, look for ways to do it right.

References

1. "The Hypertext Transfer Protocol," http://www.w3.org/hypertext/WWW/Protocols/HTTP/HTTP2.html

2. "The Hypertext Markup Language," http://www.w3.org/hypertext/WWW/MarkUp/MarkUp.html

3. "The Common Gateway Interface," http://hoohoo.ncsa.uiuc.edu/cgi/overview.html

4. Steven E. Brenner, "CGI Form Handling in Perl," http://www.bio.cam.ac.uk/web/form.html

5. S. Putz, "Interactive Information Services Using World Wide Web Hypertext", First International Conference on the World Wide Web (Geneva, May 1994), Conputer Networks and ISDN Systems, 27(2):273-280, 1994 http://pubweb.parc.xerox.com/hypertext/www94/iisuwwwh.html

6. T. Berners-Lee, R. Cailliau, A. Loutonen, H.F. Nielsen, and A. Secret. "The World Wide Web, Communications of the ACM," 37(8), August 1994

7. Wall, L., and Schwartz, R.L., "Programming Perl," O'Reilly & Associates, Sebastopol, CA 1990

8. L. Perrochon, "Translation servers: gateways between stateless and stateful information systems," Network Services Conference (London, November 1994), November 1994. ftp://ftp.inf.ethz.ch/doc/papers/is/ea/nsc94.html

9. Charles Goldfarb, "The SGML Handbook," Oxford University Press, 1990

10. Yahoo, http://www.yahoo.com/

11. Netscape, http://www.netscape.com/

12. T. Berners-Lee, "Uniform Resource Locators," 1992. http://www.w3.org/hypertext/WWW/Addressing/Addressing.html

13. M. Galer, S. Haker, J. Ziegler, "Methods and Tools in User-Centred Design for Information Technology," North-Holland, Elsevier Science Publishers, 1992

About the Author

Kirsten L. Jones, Silicon Graphics, Inc.

kirsten@csd.sgi.com