The many-to-many relationship (XML) (Answers)

traderainSoftware and s/w Development

Aug 15, 2012 (5 years and 1 month ago)

385 views


1

The many
-
to
-
many relationship (XML)
(Answers)

CMPCD 3044 Fundamentals of XML
Technologies

WORKSHOP 3

The many
-
to
-
many relationship
Answers

Exercises 1
-
3

1.

Create an XML schema to describe franchise
-
type restaurants and the cities in
which they are located. I
nclude a price range for each restaurant. When
describing the city, include a country element. Using the country list at
http://www.opentourism.org/xm
l/country.xsd
, create a separate schema and
include it in your main schema using the <include> tag. Make sure both
schemas are well formed and valid.

2.

Using the schema, create an XML document that describes at least three
restaurants that are located in at

least two of the same cities. Make sure it is
well formed and valid.

3.

Create an XML style sheet that lists each restaurant by city. Be sure to include
the restaurant information, with the price range correctly formatted, and neatly
laid out using tables.

t
he Schema

1.
FranchiseRestaurant.xsd

<?xml version="1.0" encoding="UTF
-
8"?>


<!
--


Document : FranchiseRestaurant.xsd


Created on : November, 1, 2005
-
10
-
18


Author : Hulya Francis


Description: XML Schema document describing franchise res
taurants
and the cities they're located.

--
>

<?xml version="1.0" encoding="UTF
-
8"?>


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"


targetNamespace="http://xml.netbeans.org/examples/targetNS"


xmlns="http://xml.ne
tbeans.org/examples/targetNS"


2


elementFormDefault="unqualified">




<xsd:include


schemaLocation="http://www.opentourism.org/xmltext/country.xsd" />


<xsd:include schemaLocation="fr
anchiserestaurantlist.xsd" />


<!
--

Tour Guide
--
>

<xsd:element name="tourGuide">


<xsd:complexType>


<xsd:sequence>


<xsd:element name="city" type="cityDetails" minOccurs="1"


maxOccurs="unbounded" />


</xsd:sequence>


</xsd:complexType>

</xs
d:element>



<!
--

City
--
>

<xsd:complexType name="cityDetails">


<xsd:sequence>


<xsd:element name="cityName" type="xsd:string" />


<xsd:element name="adminUnit" type="xsd:string" />


<xsd:element name="country" type="countryNameType" />



<xsd:element name="population" type="xsd:integer" />


<xsd:element name="area" type="xsd:integer" />


<xsd:element name="elevation" type="xsd:integer" />


<xsd:element name="longitude" type="xsd:decimal" />


<xsd:element name="latitude"
type="xsd:decimal" />


<xsd:element name="cityDescription" type="xsd:string" />


<xsd:element name="history" type="xsd:string" />


<xsd:element name="FranchiseRestaurants"
type="FranchiseRestaurantDetails"


minOccurs="0" maxOccurs="unbounde
d"/>


</xsd:sequence>

</xsd:complexType>




<!
--

FranchiseRestaurant
--
>

<xsd:complexType name="FranchiseRestaurantDetails">


<xsd:all>


<xsd:element name="restaurantName" type="restaurantNameType"/>


<xsd:element name="descript
ion" type="xsd:string"
minOccurs="0"/>


<xsd:element name="restaurantAddress" type="xsd:string"
minOccurs="0"/>


<xsd:element name="region" type="xsd:string"/>


<xsd:element name="postalCode" type="xsd:string" minOccurs="0"
/>


<xsd:element

name="telephoneNumber" type="xsd:string"
minOccurs="0"/>


<xsd:element name="websiteURL" type="xsd:anyURI" minOccurs="0"
/>


<xsd:element name="restaurantType" type="xsd:string"
minOccurs="0"/>


<xsd:element name="lowerPrice" type="xsd:positi
veInteger"/>


<xsd:element name="upperPrice" type="xsd:positiveInteger"/>



</xsd:all>

</xsd:complexType>



<xsd:element name="version" type="xsd:string"/>

</xsd:schema>


3

The schema included in the major schema: franchiserestaurantlist.xsd

<?xml ver
sion="1.0" encoding="UTF
-
8"?>

<?xml version="1.0" encoding="UTF
-
8"?>


<schema xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified">


<annotation>


<documentation>A list of all franchise restaurants</documentation>


</annotation>



<simpleType name="restaurantNameType">


<restriction base="string">


<enumeration value="TGIF" />


<enumeration value="Burger King" />


<enumeration value="McDonalds" />


<enumeration value="CheeseCake Factory" />


<enumeration value="Schlotzky'
s" />


</restriction>


</simpleType>


</schema>

the Document

2.


<!
--
>


Document : FranchiseRestaurant.xml


Created on :


Author : Hulya Francis


Description: XML document describing the franchising restaurants
and the



cities they're located.


--
>


<?xml version="1.0" encoding="UTF
-
8"?>


<tourGuide xmlns:xsi="http://www.w3.org/2001/XMLSchema
-
instance"


xmlns="http://xml.netbeans.org/examples/targetNS"


xsi:schemaLocation="http://xml.netbeans.org/example
s/targetNS


FranchiseRestaurant.xsd" >

<city>


<cityName>Atlanta</cityName>


<adminUnit>Georgia</adminUnit>


<country>United States</country>


<population>394017</population>


<area>131780</area>



<elevation>1050</elevation>


<longitude>33.46</longitude>


<latitude>84.25</latitude>


<cityDescription>Atlanta determination rebuilt the city
following

its destruction by fire at the end of the Civil War. Today the
spraw
ling city

is filled with sky
-

scrapers, interstate highways, trees, diverse
neighborhoods

all proudly linking the present to the city's rich heritage.


</cityDescription>


<history>Though steeped in history, Atlanta nevertheless
remai
ns a


4

comparatively new city by East Coast standards, having been founded
only in

1837 as the end of the Western and Atlantic railroad line (it was
first named

Marthasville in honor of the then
-
governor's daughter, nicknamed
Terminus for

its rail location
, and then changed soon after to Atlanta,the
feminine of

Atlantic
--

as in the railroad). </history>


<FranchiseRestaurants>


<restaurantName>CheeseCake Factory</restaurantName>


<description>The Cheesecake Factory serve
s much more
than just


cheesecake! </description>


<restaurantAddress>3024 Peachtree Road,
NW</restaurantAddress>


<region>Buckhead</region>


<postalCode>30305</postalCode>


<te
lephoneNumber>(404) 816
-
2555</telephoneNumber>


<websiteURL>http://www.thecheesecakefactory.com/locations.htm


</websiteURL>


<restaurantType>World</restaurantType>


<lowerPrice>9</lowerPrice>



<upperPrice>30</upperPrice>


</FranchiseRestaurants>




<FranchiseRestaurants>


<restaurantName>CheeseCake Factory</restaurantName>


<description>The Cheesecake Factory serves much mo
re
than just


cheesecake!</description>


<restaurantAddress>4400 Ashford
-
Dunwoody Road Suite,


30005</restaurantAddress>


<region>Perimeter Mall</region>


<postalCode>30346
-
1513</postalCod
e>


<telephoneNumber>(678) 320
-
0201</telephoneNumber>


<WebsiteURL>http://www.thecheesecakefactory.com/locations.htm


</websiteURL>


<restaurantType>World</restaurantType>


<lowerPrice>9</lo
werPrice>


<upperPrice>28</upperPrice>


</FranchiseRestaurants>




<FranchiseRestaurants>


<restaurantName>TGIF</restaurantName>


<description>You're getting hungry... very
hung
ry...</description>


<restaurantAddress>2061 Peachtree Rd,
NE</restaurantAddress>


<region>Midtown</region>


<postalCode>30309</postalCode>


<telephoneNumber>(404) 350
-
0199</telephoneNumber>


<web
siteURL>http://tgifridays.com</websiteURL>


<restaurantType>Tex
-
Mex</restaurantType>


<lowerPrice>12</lowerPrice>


<upperPrice>34</upperPrice>


</FranchiseRestaurants>


</city>


5





<city>


<cityName>Istanbul</cityName>


<adminUnit>Marmara</adminUnit>


<country>Turkey</country>


<population>9631700</population>


<area>4600</area>


<elevation>30</elevation>



<longitude>28.96</longitude>


<latitude>41.01</latitude>


<cityDescription>Straddling the Bosphorus, its skyline
studded with

domes and minarets, Istanbul is one of the truly great romantic
cities. It has

natural beauty, as well as h
istorical richness. </cityDescription>


<history>Prompted by the oracle at Delphi, a man named
Byzas

established a town on the site of present
-
day Istanbul around 657 BC.
Although

conquered by Alexander the Great and eventually subsumed by the R
oman
Empire,

Byzantium fared pretty well until it annoyed a Roman emperor by
backing his

rival in a civil war, and it was subsequently destroyed.</history>


<FranchiseRestaurants>


<restaurantName>TGIF</restaurantName>



<description>A good place too eat, usually too
crowded

though.</description>


<restaurantAddress>223 Nispetiye St.
</restaurantAddress>


<region>Etiler</region>


<postalCode>30000</postalCode>



<telephoneNumber>(212) 345
-
2121</telephoneNumber>


<websiteURL>http://tgifridays.com</websiteURL>


<restaurantType>Tex
-
Mex</restaurantType>


<lowerPrice>11</lowerPrice>


<upperPr
ice>55</upperPrice>


</FranchiseRestaurants>




<FranchiseRestaurants>


<restaurantName>Burger King</restaurantName>


<description>For he people who are in
hurry...</descripti
on>


<restaurantAddress>83 Yildizposta St.
</restaurantAddress>


<region>Besiktas</region>


<postalCode>43005</postalCode>


<telephoneNumber>(212) 314
-
5509</telephoneNumber>


<
websiteURL>http://burgerking.com/</websiteURL>


<restaurantType>Fast
-
food</restaurantType>


<lowerPrice>2</lowerPrice>


<upperPrice>7</upperPrice>


</FranchiseRestaurants>





<FranchiseRestaurants>


<restaurantName>Schlotzky's</restaurantName>


<description>Hmmm...Delicious original


sandwiches.</description>


<restaurantAddress>Akmerkez,

6

Floor:2</
restaurantAddress>


<region>Levent</region>


<postalCode>35600</postalCode>


<restaurantType>Quick and dirty</restaurantType>


<lowerPrice>3</lowerPrice>


<upperPrice>10</upper
Price>


</FranchiseRestaurants>


</city>




</tourGuide>


the Stylesheet

3.

<!
--


Document : FranchiseRestaurant.xsl


Created on :


Author :

--
>

<?xml version="1.0" encoding="UTF
-
8" ?>

<xsl:st
ylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<xsl:output method="html"/>


<xsl:template match="/">


<HTML>


<HEAD>


<TITLE>Franchise Restaurants</TITLE>


<STYLE TYPE="text/c
ss">


H2 {TEXT
-
ALIGN:CENTER;}


.blueBackground {BACKGROUND
-
COLOR:LIGHTBLUE; TEXT
-
ALIGN:LEFT;


BORDER
-
WIDTH:0px; WIDTH:90%;}


.pinkBackground {BACKGROUND
-
CO
LOR:PINK; TEXT
-
ALIGN:LEFT;


COLOR:BLUE; FONT
-
SIZE:12pt;
BORDER
-


WIDTH:2px;}


</STYLE>


</HEAD>


<BODY>


<H2>* * * Franchise Resta
urant Listings by City * *
*</H2>


<xsl:apply
-
templates select="tourGuide"/>


</BODY>


</HTML>


</xsl:template>


<xsl:template match="tourGuide">


<xsl:for
-
each select="city">


<TABLE CLASS="pinkBackground">


<TR><TD>


<BR/>


<TABLE style="width:100%; color:black;"


align="center"><TR><TD>


<BR/><b><xsl:text>City: </xsl:text></b>



</TD><TD>


<xsl:value
-
of select="cityName"/>


7


</TD></TR>


<TR><TD><b><xsl:text>Description:
</xsl:text></b>


</TD><TD>



<xsl:value
-
of select="cityDescription"/>


</TD></TR>




</TABLE></TD></TR>




<TR><TD colspan="2"><center>



<font style="font
-
size:medium">Franchise
Restaurants:


</font><br/>


<xsl:for
-
each select="FranchiseRestaurants">


<TABLE CLASS="blueBackground">


<TR>





<TD align="left" style="FONT
-
SIZE:10pt;">


<HR width="90%"/>


<b>


<xsl:text>Restaurant Name:
</xsl:text>


</b>



<xsl:value
-
of select="restaurantName"/>


<BR/>


<b>


<xsl:text>Region: </xsl:text>


</b>


<xsl:valu
e
-
of select="region"/>


<BR/>


<b>


<xsl:text>Description: </xsl:text>


</b>


<xsl:value
-
of select="description"/>



<BR/>


<b>


<xsl:text>Type: </xsl:text>


</b>


<xsl:value
-
of select="restaurantType"/>


<BR
/>


<b>


<xsl:text>Price Range: $</xsl:text>


</b>


<xsl:value
-
of select="lowerPrice"/>
-

<xsl:value
-
of


select="up
perPrice"/>


<BR/>




<HR width="90%"/>


</TD>


</TR>


</TABLE>


<BR/>


</x
sl:for
-
each>


</center>


</TD></TR>


</TABLE>


</xsl:for
-
each>


</xsl:template>

</xsl:stylesheet>


8

alternate Stylesheet

<?xml version="1.0" encoding="UTF
-
8"?>

<!
--
Document :
restaurant.xsl


Author :


Description: XML Schema document describing franchise restaurants
and the cities they're located.

--
>


<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<xsl:output method="html"/>


<xsl:template match="/">


<HTML>


<HEAD>


<TITLE>World Reknowned Restaurants</TITLE>


<STYLE TYPE="text/css">


H2 {TEXT
-
ALIGN:CENTER;}


.greenBack
ground {BACKGROUND
-
COLOR:LIGHTGREEN;


TEXT
-
ALIGN:LEFT;}


.yellowBackground {BACKGROUND
-
COLOR:YELLOW;


TEXT
-
ALIGN:CENTER;



FONT
-
WEIGHT:BOLD;


FONT
-
SIZE:14pt;}


.salmonBackground {BACKGROUND
-
COLOR:LIGHTSALMON;


TEXT
-
ALIGN:CENTER;



FONT
-
SIZE:12pt;}


</STYLE>


</HEAD>


<BODY>


<H2>Restaurant Listings by City</H2>


<xsl:apply
-
templates select="tourGuide"/>


</BODY>


</HTML>


</xsl:
template>


<xsl:template match="tourGuide">


<TABLE BORDER="1" style="padding: 10px; width:100%">


<xsl:for
-
each select="city">


<TR><TD COLSPAN="2" CLASS="greenBackground"><BR/>


<h3><
xsl:text>City: </xsl:text>


<xsl:value
-
of select="cityName"/></h3>


</TD></TR><BR/><BR/>


<xsl:for
-
each select="restaurant">


<TR><TD>


<b><xsl:text>Restaura
nt: </xsl:text></b>


<xsl:value
-
of select="restaurantName"/>


</TD><TD><BR/><b><xsl:text>Price Range:
$</xsl:text></b>


<xsl:value
-
of select="format
-
number
(lowerPrice, '#0.00')"/>



<xsl:text>
-

$</xsl:text>


<xsl:value
-
of select="format
-
number
(upperPrice, '#0.00')"/>


</TD></TR>


</xsl:for
-
each><BR/><BR/>


</xsl:f
or
-
each>


</TABLE>


</xsl:template>


9

</xsl:stylesheet>


Training Schedule
-

Exercise 4

4
)

Use the following m:m relationship:

A training schedule may contain many workshops. A workshop can be taught by
many instructors. An instructor may teach mo
re than one workshop.

Workshop Data Model for a M:M Relationship



the Schema

4
.a. Create an XML schema to describe the illustrated data model. Include at least
all of the attributes listed in the data model.

Two Schemas:


workshop.xsd
-

main schema


<xml version="1.0" encoding="UTF
-
8"?>

<!
--


Document : wo
rkshop.xsd


Created on :



Author :


Description: XML Schema document describing workshops

--
>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified">

<!
--

comment: links to instructor.xsd, another schema fi
le
--
>


10

<xsd:include schemaLocation="instructor.xsd"/>

<xsd:element name="trainingSchedule">


<xsd:complexType>


<xsd:sequence>


<xsd:element name="workshop" type="workshopDetails"
minOccurs="1" maxOccurs="unbounded"/>


</xsd:seque
nce>


</xsd:complexType>

</xsd:element>


<xsd:complexType name="workshopDetails">


<xsd:sequence>


<xsd:element name="workshopName" type="xsd:string"/>


<xsd:element name="description" type="xsd:string"/>


<xs
d:element name="date" type="xsd:date"/>


<xsd:element name="startTime" type="xsd:time"/>


<xsd:element name="endTime" type="xsd:time"/>


<xsd:element name="cost" type="xsd:decimal"/>


<xsd:element name="instructo
rs" type="instructorDetails"
minOccurs="0"


maxOccurs="unbounded"/>


</xsd:sequence>


</xsd:complexType>


<xsd:complexType name="instructorDetails">


<xsd:sequence>


<xsd:element name="instructor" type="instr
uctorInfo"/>


</xsd:sequence>


</xsd:complexType>

</xsd:schema>

instructor.xsd
-

second schema


<?xml version="1.0" encoding="UTF
-
8"?>

<!
--


Document : instructor.xsd


Created on : April 24, 2005


Author : Christina Serran
o


Description: XML Schema document describing instructors

--
>


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified">


<!
--

Instructor
--
>


<xsd:simpleType name="emailAddressType">


<xsd:restriction base
="xsd:string">


<xsd:pattern value="
\
w+
\
W*
\
w*@{1}
\
w+
\
W*
\
w+.
\
w+.*
\
w*"/>


</xsd:restriction>


</xsd:simpleType>


<xsd:complexType name="instructorInfo">


<xsd:sequence>


<xsd:element name="firstName" type="xsd:string
"
minOccurs="0"/>


<xsd:element name="lastName" type="xsd:string"
minOccurs="0"/>


<xsd:element name="emailAddress" type="emailAddressType"
minOccurs="0"/>


<xsd:element name="instructorPic" minOccurs="0"/>


</xsd:
sequence>


</xsd:complexType>

</xsd:schema>



11

the Document

4
.b. Create an XML document for a few workshops and instructors. Make sure your
document is well formed and valid.

XML Document

workshop.xml


<?xml version="1.0" encoding="UTF
-
8"?>

<!
--

comment:

links to workshop.xsl, the stylesheet
--
>

<?xml
-
stylesheet href="workshop.xsl" type="text/xsl" media="screen"?>

<!
--


Document : workshop.xml


Created on :



Author :


Description:

--
>

<trainingSchedule xmlns:xsi="http://www.w3.org/2001/
XMLSchema
-
instance"


xsi:noNamespaceSchemaLocation="workshop.xsd">


<workshop>


<workshopName>Intro to Microsoft Word</workshopName>


<description>Learn the basics of how to create, edit, and
format a professional



looking document. Topics include setting
margins; cutting, copying,


and pasting; using the spell
-
check, thesaurus,
and word count;


inserting headers and footers; inserting page
numbers, date and time,



and footnotes; formatting text and paragraphs;
and adding bulleted or


numbered lists.


</description>


<date>2005
-
01
-
14</date>


<startTime>09:00:00</startTime>


<endTime>11:00:00</endTime
>


<cost>25.00</cost>


<instructors>


<instructor>


<firstName>Stewie</firstName>


<lastName>Kidd</lastName>


<emailAddress>stewie@techworld.com</emailAddress>


<instructorPic file
name="stewie.jpg" size="150"
value="Picture of Stewie"/>


</instructor>


</instructors>


</workshop>


<workshop>


<workshopName>Graphics Editing Using Adobe
Photoshop</workshopName>


<description>Learn how to create im
ages and modify photos.
Topics include learning


about graphics file formats, using drawing
tools, resizing and cropping


images, creating transparent backgrounds, adding
text to pictures,


app
lying effects and styles, touching up

12

pictures, working with layers,


and optimizing images.


</description>


<date>2005
-
02
-
05</date>


<startTime>08:30:00</startTime>


<endTime>11:30:00</endTime>


<co
st>40.00</cost>


<instructors>


<instructor>


<firstName>Marge</firstName>


<lastName>Simpson</lastName>


<emailAddress>marge@techworld.com</emailAddress>


<instructorPic filename="marge.jpg"
size="150"
value="Picture of Marge Simspon"/>


</instructor>


</instructors>


</workshop>


<workshop>


<workshopName>Intro to Macromedia Flash</workshopName>


<description>Learn how to create vector
-
based graphics and
animation for the web.


Topics include using the drawing tools, working
with layers,


working with the timeline, and creating basic
animations. Explore


options for publishing Flash movie files
on the
web.


</description>


<date>2005
-
03
-
17</date>


<startTime>09:30:00</startTime>


<endTime>12:30:00</endTime>


<cost>50.00</cost>


<instructors>


<instructor>



<firstName>Calvin</firstName>


<lastName>Misfit</lastName>


<emailAddress>calvin@techworld.com</emailAddress>


<instructorPic filename="calvin.jpg" size="150"
value="Picture of Calvin"/>


</instructor>


<
/instructors>


</workshop>

</trainingSchedule>


the Stylesheet

4
.c. Create an XML stylesheet to present the information in HTML format.

XML Stylesheet

workshop.xsl


<?xml version="1.0" encoding="UTF
-
8"?>

<!
--


Document : workshop.xsl


Create
d on : April 24, 2005


13



Author :


Description: XML Stylesheet for m:m workshop data model

--
>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">


<xsl:output method="html"/>


<xsl:template match="/">


<H
TML>


<HEAD>


<TITLE>Tech World Workshop Schedule</TITLE>


<STYLE TYPE="text/css">


BODY {FONT
-
FAMILY: ARIAL, SANS
-
SERIF; COLOR: BLACK;
BACKGROUND: WHITE;}


H1 {TEXT
-
ALIGN: CENTER;}


H2 {FONT
-
WEIGHT: BOLD; FONT
-
SIZE: 12PT; }


.largehd {FONT
-
WEIGHT: BOLD; FONT
-
SIZE: 14PT; }


.smallhd {FONT
-
WEIGHT: BOLD; FONT
-
SIZE: 12PT; }


.lightBackground {BACKGROUND
-
COLOR: BURLYWOOD; TE
XT
-
ALIGN: LEFT;}


</STYLE>


</HEAD>

<BODY>

<H1>Spring Workshop Schedule</H1>

<P ALIGN="CENTER">To register online, go to: www.techworld.com.</P>

<xsl:apply
-
templates select="trainingSchedule"/>

</BODY>

</HTML>

</xsl:templ
ate>

<xsl:template match="trainingSchedule">

<TABLE WIDTH="750" BORDER="0" ALIGN="CENTER">

<xsl:for
-
each select="workshop">


<TR>


<TD COLSPAN="3" CLASS="lightBackground">


<span class="largehd"><xsl:text>Workshop Title: </xsl:text>


<xsl:v
alue
-
of select="workshopName"/></span>


</TD>


</TR>


<TR>


<TD COLSPAN="2">


<H2><xsl:text>Description:</xsl:text></H2> <xsl:value
-
of
select="description"/>


</TD>


<TD WIDTH="275" ROWSPAN="3">


<TABLE WIDTH="275" BORDER="0">


<xsl:
for
-
each select="instructors">


<TR>


<TD>


<IMG>


<xsl:attribute name="SRC">


<xsl:value
-
of
select="instructor/instructorPic/@filename"/>


</xsl:attribute>


<xsl
:attribute name="ALT">


<xsl:value
-
of
select="instructor/instructorPic/@value"/>


</xsl:attribute>


</IMG>


</TD>


</TR>


<TR>


14


<TD>


<span class="smallhd"><xsl:text>Instru
ctor:
</xsl:text></span>


<xsl:value
-
of select="instructor/firstName"/><xsl:text>
</xsl:text>


<xsl:value
-
of select="instructor/lastName"/>


</TD>


</TR>


<TR>


<TD>


<span class="smallhd"><
xsl:text>Email: </xsl:text></span>


<xsl:value
-
of select="instructor/emailAddress"/>


</TD>


</TR>


</xsl:for
-
each>


</TABLE>


</TD>


</TR>


<TR>


<TD WIDTH="235">


<span class="smallhd"><xsl:text>Date: </xsl:te
xt></span>


<xsl:value
-
of select="date"/>


</TD>


<TD WIDTH="265">


<span class="smallhd"><xsl:text>Time: </xsl:text></span>


<xsl:value
-
of select="startTime"/>
-

<xsl:value
-
of
select="endTime"/>


</TD>


</TR>


<TR>


<TD COLS
PAN="2">


<span class="smallhd"><xsl:text>Cost: </xsl:text></span>


$<xsl:value
-
of select="cost"/></TD>


</TR>

</xsl:for
-
each>

</TABLE>

</xsl:template>

</xsl:stylesheet>


Sample HTML Output


15

4
.(cont.) One Example of HTML Page Output: