Overview: 4 files

Four files will be created to accomplish today's assignment

XSLT definition

animals.xsl
Validated against W3Schools XML validater

<?xml version="1.0" encoding="UTF-8"?>
 
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link rel="stylesheet" type="text/css" href="animals.css" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
</head>
<body>
  <h2>Lots of animals</h2>
 
  <table>
 
    <tr>
      <th rowspan="2">ID</th>
      <th rowspan="2">Name</th>
      <th rowspan="2">Weight</th>
      <th colspan="4">Head info</th>
      <th>Body info</th>
      <th rowspan="2">Leg</th>
    </tr>
    <tr>
      <th>Eye</th>
      <th>Mouth</th>
      <th>Nose</th>
      <th>Ear</th>
      <th>Fur</th>
    </tr>
 
    <xsl:for-each select="animals/animal">
    <xsl:sort select="@id"/>
    <tr>
      <td><xsl:value-of select="@id"/></td>
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="weight"/></td>
      <td><xsl:value-of select="head/eye"/></td>
      <td><xsl:value-of select="head/mouth"/></td>
      <td><xsl:value-of select="head/nose"/></td>
      <td><xsl:value-of select="head/ear"/></td>
      <td><xsl:value-of select="body/fur"/></td>
      <td><xsl:value-of select="leg"/></td>
    </tr>
    </xsl:for-each>
 
  </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

CSS: to make the page look better

animals.css
Validated against W3.org CSS validater

body {
  font-family:"sans serif";
}
 
h2 {
  font-size:140%;
  color:green;
}
 
table {
  border-width:3px;
  border-style:solid;
  border-color:blue;
}
 
th {
  text-align:center;
  font-size:120%;
  font-family:"Arial";
  color:yellow;
  background-color:#010101;
}
 
tr {
 
}
 
tr:hover {
  background-color:#999999;
}
 
td {
  text-align:left;
  color:green;
  font-size:100%;
  font-family:"Arial";
  border-width:1px;
  border-style:solid;
  border-color:blue;  
}
 
td:hover {
  background-color:#ee22ff;
  color:white;
}

HTM

animals.htm
validated against W3.org htm strict validater

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Animals</title>
<script type="text/javascript" src="animals.js">
</script>
</head>
<body id="example" onload="displayResult()">
<p></p>
</body>
</html>

JS: javascript file

animals.js

function loadXMLDoc(fname)
{
  var xmlDoc;
  // code for IE
  if (window.ActiveXObject)
  {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
  // code for Mozilla, Firefox, Opera, etc.
  else if (document.implementation && document.implementation.createDocument)
  {
    xmlDoc=document.implementation.createDocument("","",null);
   }
  else
  {
    alert('Your browser cannot handle this script');
  }
xmlDoc.async=false;
xmlDoc.load(fname);
return(xmlDoc);
}
 
function displayResult()
{
xml=loadXMLDoc("animals.xml");
xsl=loadXMLDoc("animals.xsl");
// code for IE
if (window.ActiveXObject)
  {
    ex=xml.transformNode(xsl);
    document.getElementById("example").innerHTML=ex;
  }
  // code for Mozilla, Firefox, Opera, etc.
  else if (document.implementation
  && document.implementation.createDocument)
  {
    xsltProcessor=new XSLTProcessor();
    xsltProcessor.importStylesheet(xsl);
    resultDocument = xsltProcessor.transformToFragment(xml,document);
    document.getElementById("example").appendChild(resultDocument);
  }
}

revised animals.xml

Revised a bit the XML file to include the XSL file we created today

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="animals.xsl"?>
<animals
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="animals.xsd">
.
.
.

Result


As show in the screen shot above. When the htm file is opened in the browser the header will be displayed in black background and yellow text. When the mouse hover over the text of the contents the background of the row will change to grey and the cell background will turn pink.