Notice: This material is excerpted from Special Edition Using HTML, 2nd Edition, ISBN: 0-7897-0758-6. This material has not yet been through the final proof reading stage that it will pass through before being published in printed form. Some errors may exist here that will be corrected before the book is published. This material is provided "as is" without any warranty of any kind.
By Jim O'Donnell
As a tool for government, commercial, educational, and personal Web applications, HTML has quite a few needs and expectations to meet. It's the language for what is becoming the standard interface of the Internet, and, as such, is required to support a much greater range of uses today than perhaps its original creators had first imagined.
The level of sophistication of the developing HTML 3.0 specification (currently in draft format) will be head and shoulders above the current standard, and will accommodate a wider range of user needs. Two deficiencies in HTML 2.0, the lack of support for tables and for mathematical equations, will be supported in HTML 3.0. Although none of the popular Web browsers currently support the full draft specification for either, there is support for tables (a subset of the HTML 3.0 draft specification and some extensions introduced by Netscape).
Much of the information presented in this chapter is based on public texts and discussions regarding the development process for HTML 3.0. This new version is not a finished product (at the time of this writing), so any specific notations or expressions may change drastically before the new standard is finalized. However, most of the table elements discussed are supported by the popular Web browsers and are becoming widely used, making it unlikely that they will disappear any time soon.
HTML 3.0 defines tables in much the same way it defines list containers. The <TABLE> element is the container for the table's data and layout. HTML tables are composed row by row: you separate the data with either the <TH> (table header) or <TD> (table data) tags and indicate a new row with the <TR> (table row) tag. Think of the <TR> tag as a line break, signaling that the following data starts a new table row. Table headers are generally shown in bold and centered by WWW browsers, and table data is shown in the standard body text format.
The HTML for a basic table is shown in figure 13.1. All of the table elements used are supported by the latest versions of the most popular Web browsers: Netscape Navigator, Microsoft Internet Explorer, and NCSA Mosaic. This table, as rendered by Netscape Navigator, is shown in figure 13.2.
Fig. 13.1
This HTML document shows the basic table tags.
Fig. 13.2
Many of the basic HTML 3.0 table tags are supported by the most popular Web browsers.
The basic HTML table tags shown in figure 13.1 and figure 13.2 are as follows:
In addition to the basic tags shown above, some other characteristics should be noted from the example shown in figures 13.1 and 13.2:
If you're concerned about browsers displaying your header text correctly (as emphasized text, preferably in a bold font), you can use style tags to force the issue. Be careful what you wish for, though: if you want an italicized font but the browser automatically formats the text bold, you can wind up with bold italicized headers.
Cells do not necessarily have to contain data. To create a blank cell, either create an empty cell (e.g., <TD></TD>), or create a cell containing nothing visible (e.g., <TD> </TD>). Note that is an HTML entity, or special character, for a nonbreaking space. Though you would think these two methods would produce the same result, as you will see later in this chapter, in the section "Empty Cells and Table Appearance," different browsers treat them differently.
It's not really necessary to create blank cells if the rest of the cells on the row are going to be blank; the <TR> element signals the start of a new row, so the Web browsers automatically fill in blank cells to even out the row with the rest of the table.
Tables are necessarily uniform with equal numbers of cells in each row and in each column. No "L-shaped" tables (or worse!) allowed.
It is possible, through the use of the ALIGN and VALIGN attributes, to align table elements within their cells in many different ways. These attributes can be applied in various combinations to the <CAPTION>, <TR>, <TH>, and <TD> table elements. The possible attribute values for each of these elements are as follows:
These alignments are illustrated by the HTML document shown in figure 13.3 and rendered by Netscape Navigator in figure 13.4.
Fig. 13.3
There are many options and possibilities for aligning table elements.
Fig. 13.4
Table element alignment can be specified row-by-row or for each individual element in the table.
Although this table is pretty ugly, it illustrates the capabilities of the different ALIGN and VALIGN attributes, as follows:
Troubleshooting
My table doesn't look like I want it to. What am I doing wrong?
If you're having trouble getting a table to look the way you want - it has too many or not enough rows and/or columns, information is missing, or things aren't in the places you think they should be - the most likely problem is missing </TR>, </TD>, or </TH> tags. Web browsers need these tags to correctly determine how many rows and columns are in the table, so when they are mistakenly left out, it can lead to unpredictable results.
There are more sophisticated things that can be done with tables, both by using additional table attributes and by different uses of some of the ones you already know about.
As mentioned above, the BORDER attribute to the <TABLE> element is what gives the borders around the table elements. Even though this attribute is off by default, for most conventional tables - those used to organize information in a tabular format - borders are usually used to accentuate the organization of the information. Consider the HTML document shown in figure 13.5 and rendered in figure 13.6. In this case, the organization of the information is much easier to see in the version that includes borders.
Fig. 13.5
Tables can be displayed with or without borders.
Fig. 13.6
In many cases, borders accentuate the organization of the information.
However, HTML tables can be used in other ways, rather than for the simple tabular display of data. They give an HTML author great flexibility in presenting information, grouping it, and formatting it along with other information. Consider the HTML document shown in figure 13.7 and rendered in figure 13.8. In this case, the use of a borderless table allows the descriptive text of the image to be displayed alongside the image.
Fig. 13.7
Borderless tables can be used to present information with considerable flexibility in how that information is grouped.
Fig. 13.8
Side-by-side presentation of information elements can be achieved using HTML tables.
Rows and columns can be spanned - combined with adjacent cells to create larger cells for the data. For instance, in a table with five rows and five columns, the first row could be spanned across all five columns to create a banner header for the whole table. In the same table, each of the columns could have elements that spanned multiple rows. It would be possible, through spanning, to create rectangular table elements span that both multiple rows and columns, up to the full size of the table.
To span two adjacent cells on a row, use the ROWSPAN attribute with <TH>, as follows:
<UX><TH ROWSPAN=2>
To span two adjacent cells in a column, use the COLSPAN attribute with <TH>, as follows:
<UX><TH COLSPAN=2>
Don't forget to close your table data with the </TABLE> closing tag.
Figures 13.9 and 13.10 show an HTML document that makes use of row and column spanning. This example is shown in figure 13.11, which shows some of the trouble you can get yourself into with row and column spanning. The table shown on the left is formatted correctly. However, HTML will allow you to overlap rows and columns if you aren't careful with your spanning, and the results of this can (and usually will) be unfortunate.
Fig. 13.9
Row and column spanning can be used for table banner headers and for grouping elements in more than one category.
Fig. 13.10
HTML will allow you to span row and column tables in such a way that they will overlap - this is usually a bad idea.
Fig. 13.11
If you aren't careful, you can overlap rows and columns when using spanning, which tends to give ugly results.
If you look closely at the code shown in figures 13.9 and 13.10, you'll see that I was able to get the two tables in figure 13.11 to appear side-by-side by nesting them in another borderless table. The nesting of tables is a Netscape enhancement to HTML and is part of the draft HTML 3.0 specification. It is also supported by Microsoft Internet Explorer. However, if you view such a file with a Web browser that does not support the nesting of tables - even if it has support for normal tables - all of the information can be lost. Figure 13.12 shows the same HTML document displayed in figure 13.11, as rendered by NCSA Mosaic. (See the "Netscape Table Enhancements" section, later in this chapter.)
Fig. 13.12
Trying to view nested tables with a Web browser that doesn't support them can result in losing all of the included information.
When you create larger cells in an HTML table, you might find that your cell data acts a bit unruly: not breaking properly, wrapping text when it shouldn't, and crowding too close to the cell divisions. Like other HTML documents, tables support internal HTML elements, such as <BR> (to create a line break in the data), hypertext link anchors, inline images, and even forms.
Use an HTML table in the same manner you would a spreadsheet: for data display, for creating data layouts (such as inventory lists or business invoices), and for calculation tables (when combined with a CGI script that can take your form input and generate output data that's displayed in your HTML table). The uses for tables are limited only by your data and your creativity.
The major Web browsers - Netscape Navigator, Microsoft Internet Explorer, and NCSA Mosaic - all support tables. Tables are rendered slightly differently in each of the three browsers, and each behaves slightly differently under some circumstances. Additionally, Netscape has introduced enhancements to their table support, most of which are also supported my Microsoft Internet Explorer.
As mentioned earlier, there is sometimes a difference between an empty cell in a table and one with nothing visible in it. This is particularly true with Netscape Navigator, which will display the two differently. Consider the HTML document shown in figure 13.13, which shows two tables. In the top table, there are several empty table cells - cells with only white space in them, which Netscape Navigator will not treat as data. In the lower table, these same cells have something in them: the HTML entity  , which is a nonbreaking space (an invisible character).
Fig. 13.13
Cells with no data in them can either be left empty or contain an invisible character; this will sometimes affect how they are displayed.
As shown in figure 13.14, Netscape Navigator will display these two tables differently. Earlier versions of Netscape's browsers displayed the table with empty cells incorrectly, and it was necessary to include some "dummy" invisible data to make the table display correctly. As you can see here, now it is mainly an aesthetic difference.
Fig. 13.14
Netscape Navigator will display tables with empty cells differently from those that contain invisible characters.
Microsoft Internet Explorer will display both of these cases the same, similar to the bottom table in figure 13.14. NCSA Mosaic, on the other hand, offers the greatest degree of control at the user end over how tables are displayed. Figure 13.15 the Tables tab of Mosaic's Preferences menu. This menu enables the user to decide whether empty cells are displayed (i.e., whether they appear similar to the upper table in fig. 13.14 or the lower), and whether or not to give the tables a 3-D and/or recessed appearance.
Fig. 13.15
NCSA Mosaic offers the user several options about how to display HTML tables.
Netscape Navigator has introduced several enhancements to HTML tables to increase the degree of control HTML authors have on how their documents are displayed. Figure 13.16 shows the HTML document for these enhancements, which are rendered by Netscape Navigator in figure 13.17.
Fig. 13.16
This HTML document shows off Netscape Navigator's enhancements to HTML tables.
Fig. 13.17
Netscape Navigator's table enhancements give the HTML author greater control over the appearance of HTML tables.
The Netscape table enhancements are as follows:
When using the Netscape BORDER=<num> table enhancement, it is possible to specify a table with no borders by including BORDER=0 in the <TABLE> element. While this will give a borderless table when viewed with Netscape Navigator, Web browsers that do not support this enhancement will ignore the "=0" and display the table with a border. So, to use a borderless table that will work on all browsers that support tables, include the <TABLE> element without specifying a BORDER attribute at all.
The Netscape enhancements to HTML tables are also supported by Microsoft Internet Explorer, except for the numerical value for the BORDER attribute. NCSA Mosaic does not support any of them at this time.
Table support has become very widespread with most of the popular Web browsers, so there is less reason to avoid using them. Still, there are folks out on the Web, either because of their Internet service provider of because of the type of connection to the Internet they have, who are forced to use Web browsers that do not have table support. If you are worried about missing such people, there are some alternatives that you can use, either instead of or in addition to using tables themselves.
Figure 13.18 shows an HTML document for a fairly simple table shown in figure 13.19. Some other ways of displaying this information, not using tables, are as follows:
Fig. 13.18
This HTML document uses a table to display information.
Fig. 13.19
A sample table showing a fairly straightforward organization of information.
Fig. 13.20
Simple tabular data can also be displayed using a list format.
Fig. 13.21
Because support for lists is more widespread than that for tables, they can sometimes be a good alternative.
Fig. 13.22
A preformatted text block can also be used to organize information in a table.
Fig. 13.23
A preformatted table isn't very pretty, but it will be displayed correctly in just about any Web browser.
The use of tables to display tabular information is, by definition, pretty obvious. Tables can also come in handy when using HTML forms, as they give you the ability to create a very well-organized form for entering information. Tables can be used in other ways as well, as mentioned briefly earlier. Because they give you the ability to group text and graphics with one another in many different ways, they can be used to enhance the way a page is displayed.
Consider the HTML document shown in figure 13.24. This document includes graphics and text information, and is meant to display it as a sort-of trading card. (Forgive the shameless self-promotion, but it was the only hockey picture I have!) This document is shown, as rendered by Netscape Navigator, in figure 13.25.
Fig. 13.24
Tables allow you to combine text and graphics in many different ways.
Fig. 13.25
Though at first glance this does not look like a "table," the use of an HTML table to organize the information has made the display more effective.
To refine this Web page further, some of the information presented within it can be displayed differently - in this case, using an HTML list (an unordered list, but any other kind of list could be used just as easily). The HTML code for this is shown in figure 13.26 - it makes sense to group lists of data using HTML list elements, and the ability to include these within a table allows the information to be conveyed more clearly. The revised Web page is shown in figure 13.27.
Fig. 13.26
HTML lists can be used within other HTML elements, including tables.
Fig. 13.27
Combining lists and tables gives you powerful means for organizing and displaying information within your Web pages.
Another way to display this information is to use tables within a larger table. As shown in figure 13.27, the list items are composed of both a team name and a year (or range of years). Couldn't this information also be displayed in a table? It is possible to nest tables within other tables using Netscape Navigator and Microsoft Internet Explorer. Not all Web browsers that support tables also support nested tables, however. As shown above, NCSA Mosaic does not, so all the information presented within the nested table is lost. For that reason, care should be exercised when using nested tables.
Figure 13.28 shows the HTML code for the hockey trading card Web page using nested tables. It is displayed in 13.29. Notice that the nested tables are displayed with borders (and with cell spacing and padding reduced to make them more compact), while the outer table used to structure the whole page is not.
Fig. 13.28
Some Web browsers, particularly Netscape Navigator and Microsoft Internet Explorer, support nesting tables within other tables.
Fig. 13.29
Nested tables are another way to organize information effectively within a Web page.
HTML Level 3 will provide full support for creating mathematical equations in the body of the text in HTML documents. The basic element will be the <MATH. element, and it will contain attributes that define the formula expressions and numerical data (and variables). HTML's <MATH> will display mathematical elements in a plain font and numerical variables in italicized text. The HTML standard will borrow heavily from the LaTeX UNIX application, so if you have experience using LaTeX to create mathematical content for documents, you'll have a leg up on the HTML 3.0 implementation.
The <MATH> container will support elements for brackets, delimiters, the proper display of numerators and denominators (the former placed above the latter), superscript and subscript text, and matrices and other arrays. HTML entities will be provided for mathematical functions, Greek letters, operators, and other math symbols.
Currently, however, none of the major Web browsers support HTML math equations. Arena, a browser used as the HTML 3.0 test bed that runs under UNIX and Linux, does support them - though Arena is not a production Web browser.
As mentioned, Arena is the Web browser for the HTML 3.0 specification. It is not a production browser meant for widespread use or support, but is intended to give the developers of the HTML 3.0 specification a test bed. It is available for UNIX and Linux machines from:
http://www.w3.org/hypertext/WWW/Arena/
Arena has a series of Web pages meant to showcase the elements of the HTML 3.0 specification that it supports. Figure 13.30 shows examples of what can be done with HTML 3.0 math equations.
Fig. 13.30
Many different symbols and formulas can be displayed in HTML documents with the HTML 3.0 specification.
No commercial browsers offer math equation support. As mentioned in the previous section, Arena is the only browser that supports equations, and it's primarily a testing location for the HTML 3.0 development process. How then can equations be used in Web documents that anyone can access and display?
You can accomplish this through inline images. Many word processors include math equation editors. Create your math formulae in your favorite word processor or graphics program, setting the font size, style, and color to the proper size in relation to your Web document text (see fig. 13.31).
Fig. 13.31
Many word processors and graphics programs enable you to create math formulas and equations.
Once you have created the graphic and saved it as a GIF file, you can include it in your HTML documents (see fig. 13.32 and fig. 13.33).
Fig. 13.32
Equations saved in a GIF format can be included in your HTML documents.
Fig. 13.33
It's a little more work getting them there than with normal text, but it is possible to include math equations in HTML documents.
Incorporating math equations requires a little more work than just entering text into a Web page, and it will until there is more support of the HTML 3.0 math equation specification by the popular Web browsers. If you maintain your equations in a single source file, you can always go back and edit or reuse your math "code" in future HTML documents.
Use colors in your equations to highlight specific variables and values for your audience.
|