<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<!-- test case: colgroup_valign_bottom.html -->

<!-- description: HTML 4.0 COLGROUP element with VALIGN attribute. Value=bottom --> 

<!-- Author: Christine Dreckman Date: 2/19/99 -->


<!-- ***** BEGIN LICENSE BLOCK *****
   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
   -
   - The contents of this file are subject to the Mozilla Public License Version
   - 1.1 (the "License"); you may not use this file except in compliance with
   - the License. You may obtain a copy of the License at
   - http://www.mozilla.org/MPL/
   -
   - Software distributed under the License is distributed on an "AS IS" basis,
   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   - for the specific language governing rights and limitations under the
   - License.
   -
   - The Original Code is table layout tests.
   -
   - The Initial Developer of the Original Code is
   - Netscape Communications Corp.
   - Portions created by the Initial Developer are Copyright (C) 1999
   - the Initial Developer. All Rights Reserved.
   -
   - Contributor(s):
   -
   - Alternatively, the contents of this file may be used under the terms of
   - either the GNU General Public License Version 2 or later (the "GPL"), or
   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
   - in which case the provisions of the GPL or the LGPL are applicable instead
   - of those above. If you wish to allow use of your version of this file only
   - under the terms of either the GPL or the LGPL, and not to allow others to
   - use your version of this file under the terms of the MPL, indicate your
   - decision by deleting the provisions above and replace them with the notice
   - and other provisions required by the LGPL or the GPL. If you do not delete
   - the provisions above, a recipient may use your version of this file under
   - the terms of any one of the MPL, the GPL or the LGPL.
   -
   - ***** END LICENSE BLOCK ***** -->

<!-- Purpose: To test the VALIGN/bottom attribute/value of the COLGROUP element tag -->

<!-- Expected result: A table with two distinct column groups should be displayed. The first column group has two columns and the second column group has three columns. Text in the cells should be bottom-aligned -->

<title>colgroup_valign_bottom.html</title>



<style type="text/css">

	TD { height: 50px }

	TH { height: 50px }

</style>



</head>

<body>

<p>Colgroups are used to identify column groups. The table below has two distinct column groups; 'Airport Location' and 'Car Rental Information'. The first column group contains two columns and the second column group contains three columns.</p>



<p>In this test case, the cell text should be bottom-aligned.</p>

<table BORDER >

<colgroup valign="bottom">

<colgroup valign="bottom">

<tr>

<th COLSPAN="2">Airport Location</th>

<th COLSPAN="3">Car Rental information</th>

</tr>



<tr>

<th>Country</th>

<th>City</th>

<th>ABC Company</th>

<th>EFG Company</th>

<th>XYZ Company</th>

</tr>



<tr>

<td>France</td>

<td>Paris</td>

<td>yes</td>

<td>yes</td>

<td>yes</td>

</tr>



<tr>

<td>Germany</td>

<td>Frankfurt</td>

<td>yes</td>

<td>yes</td>

<td>yes</td>

</tr>



<tr>

<td>England</td>

<td>London</td>

<td>yes</td>

<td>yes</td>

<td>yes</td>

</tr>



<tr>

<td>Netherlands</td>

<td>Amsterdam</td>

<td>yes</td>

<td>yes</td>

<td>yes</td>

</tr>



<tr>

<td>USA</td>

<td>New York</td>

<td>yes</td>

<td>yes</td>

<td>yes</td>

</tr>



</table>

</body>

</html>

