| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- define nbsp char entity for output --> |
| <!DOCTYPE menu [ |
| <!ENTITY nbsp " "> |
| ]> |
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> |
| <xsl:output media-type="text/html" encoding="UTF-8"/> |
| <xsl:template match="/"> |
| <html> |
| <head> |
| <title>Proposed Xerces2 Requirements - <xsl:value-of select="/requirementCatalog/@date"/> |
| </title> |
| </head> |
| <body bgcolor="#FFFFFF"> |
| <h1>Proposed Xerces2 Requirements</h1> |
| <h4>Date: <xsl:value-of select="/requirementCatalog/@date"/> |
| <br/> |
| Editors: <a href="mailto:estaub@mediaone.net">Ed Staub</a> <a href="mailto:twleung@sauria.com">Ted Leung</a> |
| </h4> |
| <hr/> |
| <h2>Schema</h2> |
| <p>Proposed requirements are organized into categories. Some requirements |
| occur in more than one category in the future.</p> |
| <p>Each requirement has a number. Underneath the number is a "hardness" |
| and "status".</p> |
| <dl> |
| <dt>Possible "hardness" values are:</dt> |
| <dd> |
| <b>hard</b> - Xerces2 must and shall meet this requirement<br/> |
| <b>soft</b> - Xerces2 should meet this requirement, but it may be dropped |
| because of conflicting requirements or time pressures</dd> |
| <dt> |
| <br/> |
| Possible "status" values are:</dt> |
| <dd> |
| <span style="background-color:aquamarine"><b>approved</b> - there appears to be a clear consensus</span><br/> |
| <b>tooQuiet</b> - there may be a consensus, but there hasn't been enough |
| input to be sure <br/> |
| <b>hardnessConflict</b> - there is conflict over whether this is a hard or |
| soft requirement<b> |
| <br/> |
| vetoConflict</b> - there is a conflict over whether this proposed requirement |
| is a requirement at all<br/> |
| <span style="background-color:silver"><b>rejected</b> - the proposed requirement appears to be dead</span><br/> |
| <b>unevaluated</b> - editor hasn't finished reviewing input |
| </dd> |
| </dl> |
| <hr/> |
| <xsl:apply-templates/> |
| </body> |
| </html> |
| </xsl:template> |
| <xsl:template match="requirementCatalog"> |
| <xsl:call-template name="indexByNumber"/> |
| <xsl:apply-templates select="categories" mode="toc"/> |
| <xsl:apply-templates select="categories"/> |
| </xsl:template> |
| <!-- Table of contents --> |
| <xsl:template match="categories" mode="toc"> |
| <h2>Requirement Categories</h2> |
| <xsl:for-each select="cat"> |
| <a> |
| <xsl:attribute name="href">#cat.{.}</xsl:attribute> |
| <xsl:value-of select="."/> |
| </a> |
| <br/> |
| </xsl:for-each> |
| <hr/> |
| </xsl:template> |
| <xsl:template name="indexByNumber"> |
| <h2>Requirements by Number</h2> |
| <xsl:for-each select="/requirementCatalog/requirements/req"> |
| <a href="#req.{@id}"> |
| <xsl:attribute name="style"> |
| <xsl:choose> |
| <xsl:when test="@status='rejected'">background-color:silver</xsl:when> |
| <xsl:when test="@status='approved'">background-color:aquamarine</xsl:when> |
| <xsl:otherwise>background-color:snow</xsl:otherwise> |
| </xsl:choose> |
| </xsl:attribute> |
| <xsl:value-of select="@id"/> |
| </a> |
| <xsl:value-of select="substring(def,1,120)"/> |
| <xsl:if test="string-length(def)>120">...</xsl:if> |
| <br/> |
| <xsl:if test="@id mod 5 = 0"> |
| <br/> |
| </xsl:if> |
| </xsl:for-each> |
| <hr/> |
| </xsl:template> |
| <xsl:template match="categories"> |
| <h2>Requirements by Category</h2> |
| <xsl:for-each select="cat"> |
| <h3> |
| <a> |
| <xsl:attribute name="name">#cat.{.}</xsl:attribute> |
| </a> |
| <xsl:value-of select="."/> |
| </h3> |
| <table width="95%" border="1"> |
| <xsl:for-each select="/requirementCatalog/requirements/req[@cat=current()]"> |
| <xsl:apply-templates select="."/> |
| </xsl:for-each> |
| </table> |
| </xsl:for-each> |
| </xsl:template> |
| <xsl:template match="req"> |
| <xsl:variable name="reqId" select="@id"/> |
| <tr> |
| <xsl:attribute name="bgcolor"> |
| <xsl:choose> |
| <xsl:when test="@status='rejected'">silver</xsl:when> |
| <xsl:when test="@status='approved'">aquamarine</xsl:when> |
| <xsl:otherwise>snow</xsl:otherwise> |
| </xsl:choose> |
| </xsl:attribute> |
| <td valign="top"> |
| <p> |
| <a> |
| <xsl:attribute name="name">req.<xsl:value-of select="$reqId"/></xsl:attribute> |
| </a> |
| <b> |
| <!-- <xsl:value-of select="@id"/>.</b> --> |
| <xsl:value-of select="$reqId"/>.</b> |
| <br/> |
| <xsl:value-of select="@strength"/> |
| <br/> |
| <xsl:value-of select="@status"/> |
| </p> |
| </td> |
| <td valign="top"> |
| <p> |
| <b> |
| <xsl:copy-of select="def"/> |
| </b> |
| </p> |
| <blockquote> |
| <xsl:if test="seeAlso"> |
| <p><xsl:apply-templates select="seeAlso"/></p> |
| </xsl:if> |
| <xsl:apply-templates select="voteSet"/> |
| <xsl:apply-templates select="edReqNote"/> |
| <xsl:if test="refs/ref"> |
| <b><i>References</i></b> |
| <br/> |
| </xsl:if> |
| <xsl:apply-templates select="refs/ref"/> |
| </blockquote> |
| </td> |
| </tr> |
| </xsl:template> |
| <xsl:template match="voteSet"> |
| <b> |
| <i>Voted</i> |
| </b> on from <xsl:value-of select="@opened"/> to <xsl:value-of select="@closed"/>. Votes: |
| <ul> |
| <xsl:apply-templates select="vote"/> |
| </ul> |
| </xsl:template> |
| <xsl:template match="vote"> |
| <li> |
| <a href="mailto:{@email}"> |
| <xsl:value-of select="@voter"/> |
| </a>: <xsl:value-of select="@vote"/> |
| <xsl:apply-templates select="voteComment"/> |
| </li> |
| </xsl:template> |
| <xsl:template match="voteComment"> |
| <blockquote> |
| <xsl:copy-of select="."/> |
| </blockquote> |
| </xsl:template> |
| <xsl:template match="seeAlso"> |
| <xsl:if test="@type"> |
| <xsl:value-of select="concat(@type,':')"/> |
| </xsl:if> |
| <xsl:if test="not(@type)"> |
| See also: |
| </xsl:if> |
| <a href="#req.{@id}"> |
| <xsl:value-of select="@id"/> |
| </a> |
| </xsl:template> |
| <xsl:template match="edReqNote"> |
| <blockquote> |
| <i>Ed:</i> |
| <xsl:value-of select="."/> |
| </blockquote> |
| </xsl:template> |
| <xsl:template match="ref"> |
| <p> |
| <xsl:if test="string(.)">"<xsl:copy-of select="."/>"<br/> |
| </xsl:if> |
| <xsl:apply-templates select="/requirementCatalog/mailHeaderSets/mailHeaderSet[@id=current()/@set]/li[a/@name=current()/@id]"/> |
| </p> |
| </xsl:template> |
| <xsl:template match="li"> |
| <xsl:copy-of select="."/> |
| </xsl:template> |
| <xsl:template match="br"> |
| <br/> |
| </xsl:template> |
| <xsl:template match="mailHeaderSets"/> |
| </xsl:stylesheet> |