<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
    <xsl:template match="/"><!-- apply at top level of xml doc -->
        <html>
            <head>
                <link rel="stylesheet" href="photos.css" type="text/css"/>
                <title>Photo</title>
            </head>
            <body>
                <xsl:apply-templates/>
            </body>
        </html>
    </xsl:template><!-- =================  Document Root  ================= -->
    <xsl:template match="photo">
        <div>
            <h1>
                <xsl:value-of select="description"/>
                <xsl:text>&#160;</xsl:text>
                <xsl:value-of select="date"/>
                <xsl:if test="not(date) and string(dateInferred)">
                    <xsl:text>&#160;(</xsl:text>
                    <xsl:value-of select="dateInferred"/>
                    <xsl:text>)&#160;</xsl:text>
                </xsl:if>
            </h1>
            <ul>
                <xsl:apply-templates select="subject"/>
            </ul>
            <xsl:element name="img">
                <xsl:attribute name="src">
                    <xsl:text>../images/p</xsl:text>
                    <xsl:value-of select="id"/>
                    <xsl:text>.jpg</xsl:text>
                </xsl:attribute>
                <xsl:attribute name="height">
                    <xsl:value-of select="500"/>
                </xsl:attribute>
            </xsl:element>
            <div>
                <xsl:apply-templates select="place"/>
            </div>
        </div>
    </xsl:template>
    <xsl:template match="subject">
        <li>
            <xsl:apply-templates/>
        </li>
    </xsl:template>
    <xsl:template match="person">
        <xsl:element name="a">
            <xsl:attribute name="href">
                <xsl:text>personEvents.xql?person=</xsl:text>
                <xsl:value-of select="."/>
            </xsl:attribute>
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="age">
        <xsl:text>&#160;</xsl:text>
        <xsl:value-of select="."/>
        <xsl:text>&#160;</xsl:text>
    </xsl:template>
    <xsl:template match="ageInferred[not(../age) and string(.)]">
        <xsl:text>&#160;(</xsl:text>
        <xsl:value-of select="."/>
        <xsl:text>)&#160;</xsl:text>
    </xsl:template>
    <xsl:template match="ageInferred[../age]"/>
    <xsl:template match="place[lat]">
        <xsl:value-of select="address"/>
        <xsl:element name="a">
            <xsl:attribute name="href">
                <xsl:text>ge.xql?longitude=</xsl:text>
                <xsl:value-of select="long"/>
                <xsl:text>&amp;latitude=</xsl:text>
                <xsl:value-of select="lat"/>
                <xsl:text>&amp;name=</xsl:text>
                <xsl:value-of select="address"/>
            </xsl:attribute>
           GoogleEarth
        </xsl:element>
    </xsl:template>
    <xsl:template match="place">
        <xsl:value-of select="address"/>
    </xsl:template>
</xsl:stylesheet>
