Once upon a time...

NetFish is a browser that surfs the Web. Users can view different files in the Web through its (NetFish) window. When NetFish starts up, it loads the default HTML homepage. An HTML document is represented as a hierarchy of parse tree nodes internally. WebComposites are internal nodes and WebComponents are leaf nodes. These nodes are related to other HTML documents through a URL embedded in the HTML element 'A'.

WebComposite and WebComponent have a common super abstract class HyperComponent. HyperComponent represents hypertext components defined in the Dexter Reference Model[]. Hypertext components are divided into atomic component, composite component and link component. They are represented by HyperAtom, HyperComposite and HyperLink respectively. Their examples are a gif file, an HTML document with text and images, and a link embedded in the anchor of a HTML document.

WebComponent and WebComposite are actually immediate subclass of HyperAtom and HyperComposite respectively. Their differences are the subclasses contain extra properties and methods used by the HTML parser.

The visual appearance of a HTML document is represented by different VisualLinks. VisualLink is a wrapper that links a VisualComponent to a HyperComponent. The details of VisualLinks are explained in latter sections.

<TITLE>This is an example</TITLE> <H1>This is an example </H1> This is an example for <a href="http://st-www.cs.uiuc.edu/users/mchung/hypertext/"> NetFish</a>. Below is a colorful line. <P> <img src="http://st-www.cs.uiuc.edu/users/smarch/pics/blue_big.gif">

Figure 1. An example HTML document.

The following diagram shows how the HTML document shown above is rendered by NetFish.

Figure 2. Screendump on NetFish.

The following diagram shows the internal structures of the representations of an HTML document shown in Figure1 after it is rendered. Note how the two different trees of VisualLinks and HyperComponents are connected together.

Fig.2. The internal structure..