Incorporar XSL em XML para exibição no navegador da Web: o que estou fazendo de errado?

Então eu tentei pesquisar isso e estou quase no meu juízo. Encontrei uma maneira de incorporar XSL em XML em dpawson.co.uk, mas não consigo descobrir o que estou fazendo de errado. Vasculhei a Internet tentando encontrar soluções e explicações, mas ninguém parece ter uma respost

Estou tentando criar um arquivo que seja independente do servidor, para que eu possa enviar um arquivo aos meus colegas na esperança de que eles possam visualizá-lo abrindo-o no navegador da Web.

Aqui está o meu código até agora:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!--Start XSL-->

<?xml-stylesheet type="text/xml" href="#stylesheet"?>

<!DOCTYPE doc [
<!ATTLIST xsl:stylesheet
id ID #REQUIRED>
]>
<doc>

<xsl:stylesheet id="stylesheet"
                version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="xsl:stylesheet" />
    <!--Variables-->
    <xsl:variable name="a" select="list/movie/seen[@value ='Yes']" />
    <xsl:variable name="b" select="list/movie/seen" />
    <xsl:variable name="c" select="sum(list/movie/rating/@value)" />
    <xsl:variable name="d" select="$c div count($a)" />
    <xsl:variable name="e" select="count($a) div count($b)" />
    <xsl:variable name="f" select="list/movie/seen[@value ='No']" />
    <xsl:variable name="g" select="list/movie/seen[@value ='Prior']" />
    <xsl:variable name="h" select="count($f) div count($b)" />
    <xsl:variable name="j" select="count($g) div count($b)" />
    <xsl:variable name="minutes_total" select="sum(list/movie/length[@value ='y'])" />
    <xsl:variable name="minutes" select="$minutes_total mod 60" />
    <xsl:variable name="hours" select="floor($minutes_total div 60) mod 24" />
    <xsl:variable name="hours2" select="floor($minutes_total div 60)" />
    <xsl:variable name="days" select="floor($hours2 div 24)" />
    <xsl:decimal-format name="percent" />
    <xsl:decimal-format name="average" decimal-separator="." />
    <!--End Variables-->
    <xsl:template match="/doc">
        <html>
            <head>
                <style>
                    h2{
                    font-family: Courier, Courier New, monospace;
                    font-size: 32px;
                    text-decoration: underline;
                    }
                    body{
                    font-family: Courier New, monospace;
                    }
                    p{
                    font-size: 16px;
                    }
                    table{
                    font-size: 14px;
                    }
                    .title{
                    text-align:left;
                    }
                    .release{
                    text-align:center;
                    }
                    .seen{
                    text-align:center;
                    }
                    .rating{
                    text-align:right;
                    }
                    .length{
                    text-align:center;
                    }
                </style>
            </head>
            <body>
                <h2>My Movie List</h2>
                <p>Movies seen so far: <xsl:value-of select="count($a)" />/<xsl:value-of select="count($b)" /> = <xsl:value-of select="format-number($e, '#%', 'percent')" /><br />
                Movies yet to see: <xsl:value-of select="count($f)" />/<xsl:value-of select="count($b)" /> = <xsl:value-of select="format-number($h, '#%', 'percent')" /><br />
                Movies seen prior to making list: <xsl:value-of select="count($g)" />/<xsl:value-of select="count($b)" /> = <xsl:value-of select="format-number($j, '#%', 'percent')" /><br />
                Total time watched: <xsl:value-of select="format-number($days, '#0')" /> days, <xsl:value-of select="format-number($hours, '#0')" /> hours, <xsl:value-of select="format-number($minutes, '#0')" /> minutes<br />
                Average rating:  <xsl:value-of select="format-number($d, '#.000', 'average')" /> stars out of 5</p>
                <br />
                <table border="1">
                    <tr>
                        <th>#</th>
                        <th>Title</th>
                        <th>Release Date</th>
                        <th>Length</th>
                        <th>Seen</th>
                        <th>Rating</th>
                    </tr>
                    <xsl:for-each select="list/movie">
                        <xsl:choose>
                            <xsl:when test='seen = "Yes"'>
                                <tr style="background-color:#666; color:#fff">
                                    <td> <xsl:number /></td>
                                    <td class="title"><xsl:value-of select="title"/></td>
                                    <td class="release"><xsl:value-of select="release"/></td>
                                    <td class="length"><xsl:value-of select="length" /> minutes</td>
                                    <td class="seen"><xsl:value-of select="seen"/></td>
                                    <td class="rating"><xsl:value-of select="rating"/></td>
                                </tr>
                            </xsl:when>
                            <xsl:when test='seen = "Seen prior to making list"'>
                                <tr style="background-color:#999; color:#000">
                                    <td> <xsl:number /></td>
                                    <td class="title"><xsl:value-of select="title"/></td>
                                    <td class="release"><xsl:value-of select="release"/></td>
                                    <td class="length"><xsl:value-of select="length"/> minutes</td>
                                    <td class="seen"><xsl:value-of select="seen"/></td>
                                    <td class="rating"><xsl:value-of select="rating"/></td>
                                </tr>
                            </xsl:when>
                            <xsl:otherwise>
                                <tr style="background-color:#fff;">
                                    <td> <xsl:number /></td>
                                    <td class="title"><xsl:value-of select="title"/></td>
                                    <td class="release"><xsl:value-of select="release"/></td>
                                    <td class="length"><xsl:value-of select="length" /> minutes</td>
                                    <td class="seen"><xsl:value-of select="seen"/></td>
                                    <td class="rating"><xsl:value-of select="rating"/></td>
                                </tr>
                            </xsl:otherwise>
                        </xsl:choose>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
<!--Start XML-->
 <list>
    <movie>
        <title>2001: A Space Odyssey</title>
        <release>1968</release>
        <seen value="No">No</seen>
        <rating>N/A</rating>
        <length value="n">141</length>
    </movie>
    <movie>
        <title>28 Days Later</title>
        <release>2002</release>
        <seen value="No">No</seen>
        <rating>N/A</rating>
        <length value="n">113</length>
    </movie>
    <movie>
        <title>28 Weeks Later</title>
        <release>2007</release>
        <seen value="No">No</seen>
        <rating>N/A</rating>
        <length value="n">100</length>
    </movie>
    <movie>
        <title>A Clockwork Orange</title>
        <release>1971</release>
        <seen value="Yes">Yes</seen>
        <rating value="2">&#9734;&#9734;&#9734;&#9733;&#9733;</rating>
        <length value="y">136</length>
    </movie>
<!--Rest of XML-->
</list>
</doc>

É uma lista de filmes que contém quantos já vi até agora, quantos ainda não vi, quantos já vi antes de fazer a lista, o tempo total que dediquei a assistir filmes , e a classificação média por filme visto.

O problema é que todas as variáveis estão aparecendo com valor zero, o que causa divisão por zeros, que também fornecem valor de NaN em parte da saíd

Qualquer coisa que alguém possa oferecer seria muito apreciad

questionAnswers(2)

yourAnswerToTheQuestion