<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;">
]> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#"
	exclude-result-prefixes="rdf vCard"
>

  <xsl:template match="rdf:RDF"> 
    <xsl:apply-templates select="rdf:description"/>
  </xsl:template> 

  <xsl:template match="rdf:description">
    <html> 
      <head>
        <title><xsl:value-of select="vCard:FN"/></title>
    	</head>
	   <body>

		<table><tr>
			<td valign="top">    
				<table>
  		        <xsl:apply-templates select="vCard:N"/>
  		        <xsl:apply-templates select="vCard:TITLE"/>
  		        <xsl:apply-templates select="vCard:ORG"/>
  		        <xsl:apply-templates select="vCard:ADR"/>
  		        <xsl:apply-templates select="vCard:TEL"/>
				  <xsl:apply-templates select="vCard:EMAIL"/>
  		        <xsl:apply-templates select="vCard:UID"/>
				</table>
			</td>
   	   <td valign="top">
   	     <xsl:apply-templates select="vCard:PHOTO"/>
   	   </td>
		</tr></table>
	   </body>
    </html>
  </xsl:template>

  <xsl:template match="vCard:PHOTO">
    <image><xsl:attribute name="src"><xsl:value-of select="@rdf:resource"/></xsl:attribute></image>
  </xsl:template>
  
  <xsl:template match="vCard:N">
  	<tr><td colspan="2"><h3>
  		<xsl:if test="vCard:Prefix">
	  		<xsl:value-of select="vCard:Prefix"/>&nbsp;
  		</xsl:if>
  		<xsl:if test="vCard:Given">
	  		<xsl:value-of select="vCard:Given"/>&nbsp;
  		</xsl:if>
  		<xsl:if test="vCard:Other">
	  		<xsl:value-of select="vCard:Other"/>&nbsp;
  		</xsl:if>
  		<xsl:if test="vCard:Family">
	  		<xsl:value-of select="vCard:Family"/>&nbsp;
  		</xsl:if>
  		<xsl:if test="vCard:Suffix">
	  		<xsl:value-of select="vCard:Suffix"/>&nbsp;
  		</xsl:if>
  	</h3></td></tr>
  </xsl:template>
  
  <xsl:template match="vCard:ORG">
  	<tr><td colspan="2">
  		<xsl:if test="vCard:Orgname">
	  		<b><xsl:value-of select="vCard:Orgname"/></b><br/>
  		</xsl:if>
  		<xsl:if test="vCard:Orgunit">
	  		<xsl:value-of select="vCard:Orgunit"/><br/>
  		</xsl:if>
  	<br/></td></tr>
  </xsl:template>

  <xsl:template match="vCard:ADR">
  	<tr><td colspan="2">
  		<xsl:if test="vCard:Extadd">
	  		<xsl:value-of select="vCard:Extadd"/><br/>
  		</xsl:if>
  		<xsl:if test="vCard:Street">
	  		<xsl:value-of select="vCard:Street"/><br/>
  		</xsl:if>
  		<xsl:if test="vCard:Pcode">
	  		<xsl:value-of select="vCard:Pcode"/>&nbsp;
  		</xsl:if>
  		<xsl:if test="vCard:Locality">
	  		<xsl:value-of select="vCard:Locality"/><br/>
  		</xsl:if>
  		<xsl:if test="vCard:Region">
	  		<xsl:value-of select="vCard:Region"/><br/>
  		</xsl:if>
  		<xsl:if test="vCard:Pobox">
	  		<xsl:text>POB: </xsl:text><xsl:value-of select="vCard:Pobox"/><br/>
  		</xsl:if>
  		<xsl:if test="vCard:Country">
	  		<xsl:value-of select="vCard:Country"/><br/>
  		</xsl:if>
  	<br/></td></tr>
  </xsl:template>
  
  <xsl:template match="vCard:TEL">
    <tr>
      <td>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#voice'">Phone</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#cell'">Mobile</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#msg'">Msg</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#fax'">FAX</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#video'">Video</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#Pager'">Pager</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#bbs'">BBS</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#modem'">Modem</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#home'"> Home</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vCard-rdf/3.0#work'"> Work</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#car'"> Car</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#pref'"> Pref</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#isdn'"> ISDN</xsl:if>
   		<xsl:if test="rdf:type/@rdf:resource='http://www.w3.org/2001/vcard-rdf/3.0#pcs'"> PCS</xsl:if>
      </td>
      <td><a href="tel:{rdf:value}"><xsl:value-of select="rdf:value"/></a></td>
    </tr>
  </xsl:template>

  <xsl:template match="vCard:UID">
    <tr>
      <td>ID:&nbsp;&nbsp;</td>
      <td><xsl:value-of select="."/></td>
    </tr>
  </xsl:template>
  
  <xsl:template match="vCard:EMAIL">
    <tr>
      <td valign="top">EMail:&nbsp;&nbsp;</td>
      <td>
      	<xsl:choose>
		   	<xsl:when test="rdf:bag">
			      <xsl:apply-templates select="rdf:bag"/>
			   </xsl:when>
		   	<xsl:when test="rdf:alt">
		   	   <xsl:apply-templates select="rdf:alt"/>
			   </xsl:when>
		   	<xsl:when test="rdf:seq">
	   	   	<xsl:apply-templates select="rdf:seq"/>
			   </xsl:when>
	      	<xsl:otherwise>
	      		<xsl:call-template name="email"/>
	      	</xsl:otherwise>
	      </xsl:choose>
      </td>
    </tr>
  	 <xsl:variable name="li_prefix" select="''"/>
  	 <xsl:variable name="li_suffix" select="''"/>
  </xsl:template>

  <xsl:template match="rdf:bag">
  		<xsl:call-template name="list"/>
  </xsl:template>

  <xsl:template match="rdf:seq">
  		<xsl:call-template name="list"/>
  </xsl:template>

  <xsl:template match="rdf:alt">
  		<xsl:call-template name="list"/>
  </xsl:template>

  <xsl:template name="list">
  		<xsl:variable name="nl" select="'f'"/>
  		<xsl:for-each select="rdf:li">
		 	<xsl:if test="$nl='t'"><br/></xsl:if>
     		<xsl:call-template name="email"/>
	  		<xsl:variable name="nl" select="'t'"/>
  		</xsl:for-each>
  </xsl:template>

  <xsl:template name="email">
	 <a href="mailto:{.}"><xsl:value-of select="."/></a>
  </xsl:template>
  
</xsl:stylesheet> 