to the main page... about these slides...

A tiny example

Recall the business card example from the DSD section:
 <card type="simple">
   <name>John Doe</name>
   <title>CEO, Widget Inc.</title>
   <email>john.doe@widget.com</email>
   <phone>(202) 456-1414</phone>
 </card>

We define an XHTML rendering semantics for our business-card markup language using an XSLT stylesheet:
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
                 xmlns="http://www.w3.org/1999/xhtml">
 
   <xsl:template match="card[@type='simple']">
     <html xmlns="http://www.w3.org/1999/xhtml">
       <title>business card</title><body>
         <xsl:apply-templates select="name"/>
         <xsl:apply-templates select="title"/>
         <xsl:apply-templates select="email"/>
         <xsl:apply-templates select="phone"/>
     </body></html>
   </xsl:template>
 
   <xsl:template match="card/name">
     <h1><xsl:value-of select="text()"/></h1>
   </xsl:template>
 
   <xsl:template match="email">
     <p>email: <a href="mailto:{text()}"><tt>
       <xsl:value-of select="text()"/>
     </tt></a></p>
   </xsl:template> 

   ...
 </xsl:stylesheet>

Resulting document:
 <html xmlns="http://www.w3.org/1999/xhtml"><title>business card</title>
 <body><h1>John Doe</h1><h3><i>CEO, Widget Inc.</i></h3>
 <p>email: <a href="mailto:john.doe@widget.com"><tt>john.doe@widget.com</tt></a></p>
 <p>phone: (202) 456-1414</p>
 </body></html>

A browser might show this as:

John Doe

CEO, Widget Inc.

email: john.doe@widget.com

phone: (202) 456-1414