[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

XSLT review request

Subject: XSLT review request
From: Nathan Shaw <n8_shaw@xxxxxxxxx>
Date: Mon, 20 Aug 2001 06:51:17 -0700 (PDT)
xslt review
Hi all..

I am wrapping up my first real XML/XSLT project. I
have everything working pretty well and thought that
it would be a good idea to post the XSLT here for
review.

I am definitely a newbie (although this list has
helped bring me up to working speed somewhat quickly),
so I am basically looking for any suggestions on
pitfalls I may have fallen into or optimization
techniques I could apply to increase the effeciency of
the transformations.

Thanks all! Direct replies appreciated
(n8_shaw@xxxxxxxxx).

XSLT:

<?xml version="1.0" ?>
<!--
XSLT Stylesheet for OBPR General Information web site
Version 1.0
08/13/2001
Nathan Shaw (nshaw@xxxxxxxxxxx)
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0">
<xsl:output method="html" doctype-public="-//W3C//DTD
HTML 4.0 Transitional//EN"
doctype-system="DTD/html4-transitional.dtd"
omit-xml-declaration="yes" indent="no" />
<xsl:strip-space elements="*" />
<!--<xsl:preserve-space elements="..." />-->

<xsl:template match="/">
<html xmlns:="http://www.w3.org/1999/xhtml"
xml:lang="en-US" lang="en-US">
<head>
<title>NASA - SpaceResearch:OBPR - <xsl:value-of
select="WebContent/Content/Header/@Title" /></title>
<link rel="stylesheet" href="styles_general_info.css"
type="text/css" />
<script language="javascript" type="text/javascript"
src="../common/swap_image.js"></script>
</head>
<body bgcolor="#ffffff" marginheight="0"
marginwidth="0" topmargin="0" leftmargin="0"
onload="preLoad();">
<table border="0" cellpadding="0" cellspacing="0"
width="760">
<tr><td bgcolor="#000000">
<table cellspacing="1" cellpadding="0" border="0"
width="760">
<!--nasa logo and header graphic-->
  <tr valign="top">
   <td colspan="3"><a href="http://www.nasa.gov/"><img
src="../common/sub_nasa_logo.gif" width="54"
height="50" border="0" alt="NASA Logo" /></a><a
href="/"><img src="../common/sub_header2.gif"
width="704" height="50" border="0" alt="NASA Space
Research graphic" /></a></td>
  </tr>
	<!--top navigation-->
  <tr valign="top">
   <td><a href="#"><img name="sub_general_info"
src="../common/sub_general_info_on.gif" width="252"
height="19" border="0" alt="General Information"
/></a></td>
   <td><a href="#"
onMouseOut="swap_image('../common/sub_research_projects.gif','sub_research_projects');"

onMouseOver="swap_image('../common/sub_research_projects_on.gif','sub_research_projects');"><img
name="sub_research_projects"
src="../common/sub_research_projects.gif" width="252"
height="19" border="0" alt="Research and Projects"
/></a></td>
   <td><a href="#"
onMouseOut="swap_image('../common/sub_fun_learning.gif','sub_fun_learning');"

onMouseOver="swap_image('../common/sub_fun_learning_on.gif','sub_fun_learning');"><img
name="sub_fun_learning"
src="../common/sub_fun_learning.gif" width="252"
height="19" border="0" alt="Fun and Learning"
/></a></td>
  </tr>
</table>
<table cellspacing="1" cellpadding="8" border="0"
width="760">
	<!--left-hand navigation-->
  <tr valign="top">
   <td bgcolor="#99cc99" width="160" rowspan="2"><a
href="/general_info/what.html" class="mainnav">What is
the OBPR?</a><br />
   <a href="/general_info/news/news.html"
class="mainnav">News</a><br />
   <a href="/general_info/presentations/pres.html"
class="mainnav">Presentations</a><br />
   <a href="/general_info/articles/art.html"
class="mainnav">Articles</a><br />
   <a href="/general_info/contact.html"
class="mainnav">Contact Information</a><br />
   <a href="/general_info/faq.html"
class="mainnav">FAQ's</a>
   </td>
	 <!--header-->
	 <td width="600" bgcolor="#99cc99"><span
class="pageheader"><xsl:value-of
select="/WebContent/Content/Header/@Title"
/></span><br />
	 	<xsl:for-each
select="/WebContent/Navigation/SubMenu/SubMenuItem">
			<!--subnavigation--> 
			<a href="{@URL}" class="subnav"><xsl:value-of
select="text()" /></a><xsl:if 
test="position()!=last()"> | </xsl:if>
		</xsl:for-each>
		<xsl:for-each
select="/WebContent/Navigation/SubMenu/Image"><br />
			<xsl:choose><xsl:when test="@LinkURL"><a
href="{@LinkURL}"><img 
src="{@SourceURL}" width="{@Width}" height="{@Height}"
align="{@Align}" name="{@Name}" 
border="{@Border}" alt="{@AltText}"
/></a></xsl:when><xsl:otherwise><img 
src="{@SourceURL}" width="{@Width}" height="{@Height}"

align="{@Align}" name="{@Name}" border="{@Border}"
alt="{@AltText}" /></xsl:otherwise>
			</xsl:choose>
		</xsl:for-each>
	 </td>
	</tr>
	<xsl:apply-templates select="/WebContent/Content" />
</table>
<!-- footer -->
<table cellspacing="0" cellpadding="5" border="0"
width="760">
  <tr>
   <td valign="top" bgcolor="#000000" width="600"
class="footer"><a href="/contact.htm">NASA
Headquarters Responsible Official: Code U</a><br /><a
href="contact.htm">Curator: Office of Biological and
Physical Research</a><br /><a
href="http://www.nasa.gov/hqpao/privacy.html">NASA
Privacy Statement</a></td>
	 <td bgcolor="#000000" width="160" align="right"><a
href="http://spaceresearch.nasa.gov/iso9k/iso9k.html"><img
src="../common/iso9001_logo.gif" width="51"
height="42" alt="ISO9001 Logo" border="0" /></a><a
href="https://neptune.hq.nasa.gov/codeu_kic/"><img
src="../common/kic_logo.gif" width="51" height="42"
alt="KIC Logo" border="0" /></a></td>
  </tr>
</table>
</td></tr>
</table>
</body>
</html>		
</xsl:template>

<!-- content -->
<xsl:template match="Content">
	<tr>
		<td width="600"
bgcolor="#ffffff"><xsl:apply-templates /></td>
  </tr>
</xsl:template>

<!--page header-->
<xsl:template match="Header">
	<xsl:apply-templates />
</xsl:template>

<xsl:template match="HeaderText">
<xsl:if test="string()"><xsl:copy-of select="node()"
/></xsl:if>
</xsl:template>

<!-- section -->
<xsl:template match="Section">
<div id="{@Title}"><span class="sectionheader">
	<xsl:choose>
		<xsl:when test="@URL">
			<xsl:choose>
				<xsl:when test="@Anchor"><a href="{@URL}"
name="{@Anchor}" class="anchor"><xsl:value-of
select="@Title" /></a></xsl:when>
				<xsl:otherwise><a href="{@URL}"
class="anchor"><xsl:value-of select="@Title"
/></a></xsl:otherwise>
			</xsl:choose>
		</xsl:when>
		<xsl:otherwise>
			<xsl:choose>
				<xsl:when test="@Anchor"><a name="{@Anchor}"
class="anchor"><xsl:value-of select="@Title"
/></a></xsl:when>
				<xsl:otherwise><xsl:value-of select="@Title"
/></xsl:otherwise>
			</xsl:choose>
		</xsl:otherwise>
	</xsl:choose>
</span><br /><br />
<xsl:apply-templates />
<xsl:if test="not(position()=last())">
	<hr size="1" noshade="noshade" width="520"
align="center" />
</xsl:if></div>
</xsl:template>

<xsl:template match="SectionText">
  <xsl:copy-of select="node()" />
</xsl:template>

<!-- subsection -->
<xsl:template match="SubSection">
<div id="{@Title}"><b>
	<xsl:choose>
		<xsl:when test="@URL">
			<xsl:choose>
				<xsl:when test="@Anchor"><a href="{@URL}"
name="{@Anchor}"><xsl:value-of select="@Title"
/></a></xsl:when>
				<xsl:otherwise><a href="{@URL}"><xsl:value-of
select="@Title" /></a></xsl:otherwise>
			</xsl:choose>
		</xsl:when>
		<xsl:otherwise>
			<xsl:choose>
				<xsl:when test="@Anchor"><a
name="{@Anchor}"><xsl:value-of select="@Title"
/></a></xsl:when>
				<xsl:otherwise><xsl:value-of select="@Title"
/></xsl:otherwise>
			</xsl:choose>
		</xsl:otherwise>
	</xsl:choose>
</b><br />
<xsl:apply-templates />
</div>
</xsl:template>

<xsl:template match="SubSectionText">
  <xsl:copy-of select="node()" />
</xsl:template>

<!-- list -->
<xsl:template match="List">
<xsl:choose><xsl:when test="@URL"><b><a
href="{@URL}"><xsl:value-of 
select="@Title"
/></a></b></xsl:when><xsl:otherwise><xsl:if
test="@Title"><b>
<xsl:value-of 
select="@Title"
/></b></xsl:if></xsl:otherwise></xsl:choose>
<xsl:choose>
	<xsl:when test="@Type='Unordered'">
	<ul><xsl:apply-templates /></ul>
	</xsl:when>
	<xsl:when test="@Type='Ordered'">
	<ol><xsl:apply-templates /></ol>
	</xsl:when>
	<xsl:otherwise>
	<ul><xsl:apply-templates /></ul>
	</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template match="ListItem">
<li>
<xsl:choose>
	<xsl:when test="@URL"><a href="{@URL}"><xsl:value-of 
select="node()" /></a></xsl:when>
	<xsl:otherwise><xsl:value-of 
select="node()" /></xsl:otherwise>
</xsl:choose>
<xsl:if test="@Caption"> [<xsl:value-of
select="@Caption" />]</xsl:if>
</li>
</xsl:template>

<!-- image -->
<xsl:template match="Image">
<xsl:choose>
	<xsl:when test="@LinkURL"><a href="{@LinkURL}"><img
src="{@SourceURL}" 
width="{@Width}" height="{@Height}" align="{@Align}"
name="{@Name}" 
border="{@Border}" alt="{@AltText}" /></a></xsl:when>
	<xsl:otherwise><img 
src="{@SourceURL}" width="{@Width}" height="{@Height}"

align="{@Align}" name="{@Name}" border="{@Border}"
alt="{@AltText}" />
	</xsl:otherwise>
</xsl:choose>
</xsl:template>

<!-- table -->
<xsl:template match="DataTable">
<table cellspacing="{@CellSpacing}"
cellpadding="{@CellPadding}" 
border="{@Border}" width="{@Width}" height="{@Height}"
summary="{@Summary}" 
align="{@Align}" bgcolor="{@BGColor}">
	<xsl:if test="@Title"><caption><xsl:value-of
select="@Title" /></caption></xsl:if>
<xsl:apply-templates />
</table>
</xsl:template>

<xsl:template match="DataTableHeader">
<tr><xsl:apply-templates /></tr>
</xsl:template>

<xsl:template match="DataTableColumnHeader">
<th bgcolor="{@BGColor}" width="{@Width}"
height="{@Height}" align="{@Align}" valign="{@VAlign}"
rowspan="{@RowSpan}" colspan="{@ColSpan}">
	<xsl:choose>
		<xsl:when test="@URL"><a href="{@URL}"
class="anchor"><xsl:copy-of 
select="text()" /></a></xsl:when>
		<xsl:otherwise><xsl:copy-of select="node()" 
/></xsl:otherwise>
	</xsl:choose>
</th>
</xsl:template>

<xsl:template match="DataTableRow">
<tr><xsl:apply-templates /></tr>
</xsl:template>

<xsl:template match="DataTableRowHeader">
<th bgcolor="{@BGColor}" width="{@Width}"
height="{@Height}" align="{@Align}" valign="{@VAlign}"
rowspan="{@RowSpan}" colspan="{@ColSpan}">
	<xsl:choose>
		<xsl:when test="@URL"><a href="{@URL}"
class="anchor"><xsl:copy-of 
select="text()" /></a></xsl:when>
		<xsl:otherwise><xsl:copy-of select="node()" 
/></xsl:otherwise>
	</xsl:choose>
</th>
</xsl:template>

<xsl:template match="DataTableRowCell">
<td bgcolor="{@BGColor}" width="{@Width}"
height="{@Height}" align="{@Align}" valign="{@VAlign}"
rowspan="{@RowSpan}" colspan="{@ColSpan}">
	<xsl:choose>
		<xsl:when test="@URL"><a href="{@URL}"><xsl:copy-of 
select="text()" /></a></xsl:when>
		<xsl:otherwise><xsl:copy-of select="node()" 
/></xsl:otherwise>
	</xsl:choose>
</td>
</xsl:template>

</xsl:stylesheet>

SAMPLE XML:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE WebContent PUBLIC "-//Alex Pline/DTD
OBPRWebContent//EN//" 
"../OBPRWebContent.dtd">
<?xml-stylesheet type="text/xsl"
href="OBPRGeneralInfoWebContent.xsl"?>
<WebContent>
<Navigation>
	<MainMenu></MainMenu>
  <SubMenu>
    <SubMenuItem
URL="strat.html#v">Mission</SubMenuItem>
    <SubMenuItem
URL="strat.html#g">Goals</SubMenuItem>
    <SubMenuItem
URL="strat.html#p">Philosophy</SubMenuItem>
  </SubMenu>
</Navigation>
<Content>
  <Header Title="OBPR Strategic Vision">
    <HeaderText />
  </Header>
  <Section Title="Mission" Anchor="v">
    <SectionText>Conduct basic and applied research to
support human 
exploration of space and to take advantage of the
space environment as a 
laboratory for scientific, technological, and
commercial 
research.</SectionText>
    <List>
	  <ListItem
URL="http://www.hq.nasa.gov/office/codez/plans/pl2000.pdf"

Caption="3.18 MB pdf">NASA Strategic Plan</ListItem>
	  <ListItem
URL="http://www.hq.nasa.gov/office/codez/plans.html">NASA

Planning Documents</ListItem>
    </List>
  </Section>
  <Section Title="Goals" Anchor="g">
    <SectionText />
    <List Type="Bulleted">
	  <ListItem>Enable Exploration: Conduct research to
enable safe and 
productive human habitation of space</ListItem>
	  <ListItem>Science: Use the space environment as a
laboratory to test the 
fundamental principles of physics, chemistry, and
biology</ListItem>
	  <ListItem>Commerce: Enable and promote commercial
research in 
space</ListItem>
	  <ListItem>Outreach: Use space research
opportunities to improve academic 
achievement and the quality of life</ListItem>
    </List>
  </Section>
  <Section Title="Philosophy" Anchor="p">
    <SectionText />
    <List Type="Bulleted">
	  <ListItem>To make use of the full spectrum of
biological, physical, 
chemical and biomedical research, from basic research
to applied 
research</ListItem>
	  <ListItem>To build and strengthen strong
involvement of the academic 
community in NASA's science and technology
mission</ListItem>
	  <ListItem>To provide the organization for
facilitating the effective use 
of ISS facilities for targeted scientific and
technology questions</ListItem>
	  <ListItem>To provide the organization for
transferring scientific and 
technology results for the benefit of Earth</ListItem>
    </List> 
  </Section>
</Content>
</WebContent>

=====
----------------------------
Nathan Shaw
Web Applications Developer
iaffect
http://www.iaffectonline.com
http://www.iaffectTV.com
----------------------------

__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.