<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:lxslt="http://xml.apache.org/xslt"
xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
extension-element-prefixes="redirect">
  <xsl:output method="html"
  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
  indent="yes" />

  <xsl:key name="checkpoint" match="checkpoint" use="id" />

  <xsl:key name="provision" match="provision" use="id" />

  <xsl:template match="/">
    <xsl:element name="html">
      <xsl:attribute name="lang">en</xsl:attribute>

      <xsl:element name="head">
        <xsl:element name="title">HTML Test Suite for UAAG 1.0
        (Draft)</xsl:element>

        <xsl:if test="/testsuite/content/test/testHead">
          <xsl:apply-templates
          select="/testsuite/content/test/testHead/*" />
        </xsl:if>

        <xsl:element name="link">
          <xsl:attribute name="rel">stylesheet</xsl:attribute>

          <xsl:attribute name="type">text/css</xsl:attribute>

          <xsl:attribute name="href">http://www.w3.org/WAI/UA/TS/style/test-suite.css</xsl:attribute>
        </xsl:element>

        <xsl:if test="metaInfo/testStyle">
          <xsl:element name="link">
            <xsl:attribute name="rel">stylesheet</xsl:attribute>

            <xsl:attribute name="type">text/css</xsl:attribute>

            <xsl:attribute name="href"><xsl:value-of select="metaInfo/testStyle" /></xsl:attribute>
          </xsl:element>
        </xsl:if>

        <xsl:for-each
        select="/testsuite/content/test/sourcescript">
          <xsl:element name="script">
            <xsl:attribute name="language">javascript</xsl:attribute>
            <xsl:attribute name="type">text/javascript</xsl:attribute><xsl:value-of select="." />
          </xsl:element>
        </xsl:for-each>
      </xsl:element>

      <xsl:element name="body">
        <xsl:if test="/testsuite/content/test/testBodyAttributes">
          <xsl:for-each
          select="/testsuite/content/test/testBodyAttributes/testBodyAttribute">

            <xsl:choose>
              <xsl:when test="@attributeName='background'">
                <xsl:attribute name="background">
                  <xsl:value-of select="@attributeValue" />
                </xsl:attribute>
              </xsl:when>

              <xsl:when test="@attributeName='title'">
                <xsl:attribute name="title">
                  <xsl:value-of select="@attributeValue" />
                </xsl:attribute>
              </xsl:when>

              <xsl:when test="@attributeName='onload'">
                <xsl:attribute name="onload">
                  <xsl:value-of select="@attributeValue" />
                </xsl:attribute>
              </xsl:when>
            </xsl:choose>
          </xsl:for-each>
        </xsl:if>

        <xsl:element name="p">
          <xsl:element name="a">
            <xsl:attribute name="href">http://www.w3.org/</xsl:attribute>

            <xsl:attribute name="title">W3C Home</xsl:attribute>

            <xsl:element name="img">
              <xsl:attribute name="alt">W3C</xsl:attribute>

              <xsl:attribute name="height">48</xsl:attribute>

              <xsl:attribute name="width">72</xsl:attribute>

              <xsl:attribute name="border">0</xsl:attribute>

              <xsl:attribute name="src">http://www.w3.org/Icons/w3c_home.gif</xsl:attribute>
            </xsl:element>
          </xsl:element>

          <xsl:element name="a">
            <xsl:attribute name="href">http://www.w3.org/WAI/</xsl:attribute>

            <xsl:attribute name="title">WAI Home</xsl:attribute>

            <xsl:attribute name="rel">in-area</xsl:attribute>

            <xsl:element name="img">
              <xsl:attribute name="alt">Web Accessibility Initiative Home</xsl:attribute>

              <xsl:attribute name="height">48</xsl:attribute>

              <xsl:attribute name="width">212</xsl:attribute>

              <xsl:attribute name="border">0</xsl:attribute>

              <xsl:attribute name="src">http://www.w3.org/Icons/wai.gif</xsl:attribute>
            </xsl:element>
          </xsl:element>
        </xsl:element>

        <xsl:element name="h1">
          <xsl:value-of select="/testsuite/metaInfo/testTitle/." />
        </xsl:element>

        <xsl:element name="p">On this page: 

	<xsl:for-each select="/testsuite/content/test">
         <xsl:element name="a">
             <xsl:attribute name="href">#test<xsl:value-of select="position()"/></xsl:attribute>Test 
         <xsl:value-of select="position()"/></xsl:element> |
	</xsl:for-each>
        
	<xsl:element name="a">
        	<xsl:attribute name="href">#refs</xsl:attribute>
        	References</xsl:element>

<xsl:text>
 | 
</xsl:text>

        <xsl:element name="a">
        <xsl:attribute name="href">#about</xsl:attribute>

        About these tests</xsl:element>
        </xsl:element>

        <xsl:element name="p">Nearby: 
        <xsl:element name="a">
        <xsl:attribute name="href">../</xsl:attribute>

        More HTML 4.01 Tests</xsl:element>

<xsl:text>
 | 
</xsl:text>

        <xsl:element name="a"><xsl:attribute name="href">http://www.w3.org/WAI/UA/TS/</xsl:attribute>

        UAAG 1.0 Test Suite</xsl:element>
        </xsl:element>

        <xsl:element name="h2">UAAG 1.0 Requirement</xsl:element>

        <xsl:element name="dl">
          <xsl:for-each
          select="/testsuite/requirementInfo/checkpoints/checkpoint">

            <xsl:variable name="xref_test1">
              <xsl:value-of select="@xref" />
            </xsl:variable>

            <xsl:for-each
            select="document('../checkpoints-20021217.xml')/checkpoints/checkpoint">

              <xsl:if test="@id=$xref_test1">
                <xsl:element name="dt">
                  <xsl:attribute name="class">
                  checkpoint</xsl:attribute>

                  <xsl:element name="a">
                    <xsl:attribute name="href"><xsl:value-of select="@cite" /></xsl:attribute>

<xsl:text>
Checkpoint 
</xsl:text>

                    <xsl:value-of select="@number" />

<xsl:text>
 
</xsl:text>

                    <xsl:value-of select="title" />
                  </xsl:element>

<xsl:text>
 (Priority 
</xsl:text>

                  <xsl:value-of select="@priority" />

<xsl:text>
)
</xsl:text>
                </xsl:element>
              </xsl:if>
            </xsl:for-each>

            <xsl:for-each select="provisions/provision">
              <xsl:variable name="xref_test2">
                <xsl:value-of select="@xref" />
              </xsl:variable>

              <xsl:for-each
              select="document('../checkpoints-20021217.xml')/checkpoints/checkpoint/provisions/provision">

                <xsl:if test="@id=$xref_test2">
                  <xsl:element name="dd">
                    <xsl:attribute name="class">
                    checkpoint</xsl:attribute>

                    <xsl:element name="span">
                      <xsl:attribute name="class">
                      provision</xsl:attribute>

                      <xsl:element name="a">
                        <xsl:attribute name="href"><xsl:value-of select="@cite" /></xsl:attribute>

<xsl:text>
Provision 
</xsl:text>

                        <xsl:variable name="provPos">
                          <xsl:value-of
                          select="string-length(@id)" />
                        </xsl:variable>

                        <xsl:value-of
                        select="substring(@id, $provPos, 1)" />
                      </xsl:element>

<xsl:text>
: 
</xsl:text>
                    </xsl:element>

                    <xsl:value-of select="." />
                  </xsl:element>
                </xsl:if>
              </xsl:for-each>
            </xsl:for-each>
          </xsl:for-each>
        </xsl:element>

        <xsl:for-each select="/testsuite/content/test">
            <xsl:element name="h2"><xsl:element name="a"><xsl:attribute name="name">test<xsl:value-of select="position()" /></xsl:attribute>Test 
            <xsl:value-of select="position()" />
		: 
		<xsl:value-of select="testDesc"/>	
            </xsl:element>
           </xsl:element>

          <xsl:element name="h3">Procedure</xsl:element>

          <xsl:element name="ol">
            <xsl:for-each select="procedure/list/item">
              <xsl:element name="li">
                <xsl:value-of select="." />
              </xsl:element>
            </xsl:for-each>
          </xsl:element>

          <xsl:element name="h3">Run test</xsl:element>

          <xsl:element name="div">
            <xsl:attribute name="class">test</xsl:attribute>

            <xsl:apply-templates select="testCode/*" />
          </xsl:element>

          <xsl:element name="h3">Expected results</xsl:element>

          <xsl:element name="ol">
            <xsl:for-each select="exResults/list/item">
              <xsl:element name="li">
                <xsl:value-of select="." />
              </xsl:element>
            </xsl:for-each>
          </xsl:element>

          <xsl:element name="h3">Source code</xsl:element>

          <xsl:variable name="source-test" select="./source" />

          <xsl:choose>
            <xsl:when test="$source-test">
              <xsl:element name="div">
                <xsl:attribute name="class">
                source-code</xsl:attribute>

                <xsl:apply-templates select="source/*" />
              </xsl:element>
            </xsl:when>

            <xsl:otherwise>
              <xsl:element name="div">
                <xsl:attribute name="class">
                source-code</xsl:attribute>

                <xsl:call-template name="generate-source-code">
                  <xsl:with-param name="code"
                  select="testCode/*" />

                  <xsl:with-param name="leading-spaces"
                  select="0" />
                </xsl:call-template>
              </xsl:element>
            </xsl:otherwise>
          </xsl:choose>

          <xsl:if test="sourcescript">
            <xsl:element name="h3">
            <xsl:attribute name="class">test</xsl:attribute>

            Test Script Code</xsl:element>

            <xsl:element name="div">
              <xsl:attribute name="class">
              source-code</xsl:attribute>

              <xsl:value-of select="sourcescript" />
            </xsl:element>
          </xsl:if>
        </xsl:for-each>

        <xsl:element name="h2"><xsl:element name="a"><xsl:attribute name="name">refs</xsl:attribute>References</xsl:element></xsl:element>

        <xsl:choose>
          <xsl:when test="/testsuite/metaInfo/testElement">
            <xsl:element name="ol">
              <xsl:for-each
              select="/testsuite/metaInfo/testElement/hlink">
                <xsl:element name="li">
                  <xsl:element name="a">
                    <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>

                    <xsl:value-of select="." />
                  </xsl:element>
                </xsl:element>
              </xsl:for-each>
            </xsl:element>
          </xsl:when>

          <xsl:otherwise>
            <xsl:element name="ol">
              <xsl:for-each
              select="/testsuite/metaInfo/testElementList/testElementItem">

                <xsl:element name="li">
                  <xsl:element name="a">
                    <xsl:attribute name="href"><xsl:value-of select="@cite" /> </xsl:attribute><xsl:value-of select="@specName" />

<xsl:text>
 specification for 
</xsl:text>

                    <xsl:value-of select="." />
                  </xsl:element>
                </xsl:element>
              </xsl:for-each>
            </xsl:element>
          </xsl:otherwise>
        </xsl:choose>

        <xsl:element name="h2"><xsl:element name="a"><xsl:attribute name="name">about</xsl:attribute>About this test suite</xsl:element></xsl:element>

        <xsl:element name="p">This test is part of a 
        <xsl:element name="a">
        <xsl:attribute name="href">/WAI/UA/TS/</xsl:attribute>

        test suite</xsl:element>

        for the 
        <xsl:element name="a">
        <xsl:attribute name="href">/TR/UAAG10/</xsl:attribute>

        User Agent Accessibility Guidelines (UAAG)
        1.0</xsl:element>

        . This work is conducted by the 
        <xsl:element name="a">
        <xsl:attribute name="href">/WAI/UA/</xsl:attribute>

        User Agent Accessibility Guidelines Working
        Group</xsl:element>

        , which is part of W3C's 
        <xsl:element name="a">
        <xsl:attribute name="href">/WAI/</xsl:attribute>

        Web Accessibility Initiative (WAI)</xsl:element>

        . Please send comments on this test to w3c-wai-ua@w3.org (
        <xsl:element name="a">
        <xsl:attribute name="href">/WAI/UA/TS/</xsl:attribute>

        public archive</xsl:element>

        ).</xsl:element>

        <xsl:element name="hr" />

        <xsl:element name="p">Test created by:</xsl:element>
        <xsl:element name="ul">
          <xsl:for-each select="/testsuite/metaInfo/creator">
            <xsl:element name="li">
              <xsl:value-of select="." />
            </xsl:element>
          </xsl:for-each>
        </xsl:element>

        <xsl:element name="p">Last modified: <xsl:text>$</xsl:text>Date<xsl:text>$</xsl:text> by <xsl:text>$</xsl:text>Author<xsl:text>$</xsl:text></xsl:element>

        <xsl:element name="p">
        <xsl:attribute name="class">copyright</xsl:attribute>

        <xsl:element name="a">
        <xsl:attribute name="rel">copyright</xsl:attribute>

        <xsl:attribute name="href">http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Copyright</xsl:attribute>

        Copyright</xsl:element>

        &#169; 1999 - 2003 
        <xsl:element name="a">
          <xsl:attribute name="href">http://www.w3.org/</xsl:attribute>

          <xsl:element name="abbr">
          <xsl:attribute name="title">World Wide Web
          Consortium</xsl:attribute>

          W3C</xsl:element>
        </xsl:element>

        <xsl:element name="sup">&#174;</xsl:element>

        (
        <xsl:element name="a">
          <xsl:attribute name="href">http://www.lcs.mit.edu/</xsl:attribute>

          <xsl:element name="abbr">
          <xsl:attribute name="title">Massachusetts Institute of
          Technology</xsl:attribute>

          MIT</xsl:element>
        </xsl:element>

        , 
        <xsl:element name="a">
          <xsl:attribute name="href">http://www.inria.fr/</xsl:attribute>

          <xsl:element name="abbr">

          <xsl:attribute name="lang">fr</xsl:attribute>

          <xsl:attribute name="title">Institut National de
          Recherche en Informatique et Automatique</xsl:attribute>

          INRIA</xsl:element>
        </xsl:element>

        , 
        <xsl:element name="a">
        <xsl:attribute name="href">http://www.keio.ac.jp/</xsl:attribute>

        Keio</xsl:element>

        ), All Rights Reserved. W3C 
        <xsl:element name="a">
        <xsl:attribute name="href">http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Legal_Disclaimer</xsl:attribute>

        liability</xsl:element>

        , 
        <xsl:element name="a">
        <xsl:attribute name="href">http://www.w3.org/Consortium/Legal/ipr-notice-20000612#W3C_Trademarks</xsl:attribute>

        trademark</xsl:element>

        , 
        <xsl:element name="a">
        <xsl:attribute name="href">http://www.w3.org/Consortium/Legal/copyright-documents-19990405</xsl:attribute>

        document use</xsl:element>

        and 
        <xsl:element name="a">
        <xsl:attribute name="href">http://www.w3.org/Consortium/Legal/copyright-software-19980720</xsl:attribute>

        software licensing</xsl:element>

        rules apply.</xsl:element>
      </xsl:element>
    </xsl:element>
  </xsl:template>

  <xsl:template
  match="/testsuite/requirementInfo/UAAGcheckpoint/requirements">
    <xsl:for-each
    select="/testsuite/requirementInfo/UAAGcheckpoint/requirements/requirement">

      <xsl:element name="p">
<xsl:text>
Requirement 
</xsl:text>

        <xsl:value-of select="." />
      </xsl:element>
    </xsl:for-each>
  </xsl:template>

  <xsl:template match="*">
    <xsl:copy>
      <xsl:for-each select="@*">
        <xsl:copy />
      </xsl:for-each>
      <xsl:apply-templates />
    </xsl:copy>
  </xsl:template>

  <xsl:template name="generate-source-code">
    <xsl:param name="code" />
    <xsl:param name="leading-spaces" select="1"/>

    <xsl:call-template name="add-spaces">
       <xsl:with-param name="count" select="$leading-spaces"/>    
    </xsl:call-template>    

    <xsl:text>&lt;</xsl:text><xsl:value-of select="name($code)"/>

    <xsl:for-each select="$code/@*">

            <xsl:text> </xsl:text>
            <xsl:value-of select="name()"/>
            <xsl:text>="</xsl:text>
            <xsl:value-of select="."/>
            <xsl:text>"</xsl:text>

    </xsl:for-each>

    <xsl:text>&gt;</xsl:text>

    <xsl:choose>

      <xsl:when test="$code/descendant::*[1]">

        <xsl:element name="br"/>

        <xsl:call-template name="generate-source-code">
          <xsl:with-param name="code" select="$code/descendant::*[1]"/>
          <xsl:with-param name="leading-spaces" select="$leading-spaces + 1"/>
        </xsl:call-template>                       

        <xsl:call-template name="add-spaces">
          <xsl:with-param name="count" select="$leading-spaces"/>    
        </xsl:call-template>    

         <xsl:text>&lt;/</xsl:text><xsl:value-of select="name($code)"/><xsl:text>&gt;</xsl:text>
         <xsl:element name="br"/>

      </xsl:when>

      <xsl:otherwise>
         <xsl:value-of select="$code"/>

         <xsl:text>&lt;/</xsl:text><xsl:value-of select="name($code)"/><xsl:text>&gt;</xsl:text>
         <xsl:element name="br"/>

      </xsl:otherwise>

    </xsl:choose>


    <xsl:if test="$code/following-sibling::*[1]">

       <xsl:call-template name="generate-source-code">
          <xsl:with-param name="code" select="$code/following-sibling::*[1]"/>
          <xsl:with-param name="leading-spaces" select="$leading-spaces"/>
       </xsl:call-template>                       

    </xsl:if>


  </xsl:template>

  <xsl:template name="add-spaces">
       <xsl:param name="count" select="'0'"/>


    <xsl:choose>
       <xsl:when test="$count='0'">
       </xsl:when>

       <xsl:otherwise>
          <xsl:text>&#160;&#160;</xsl:text>

	  <xsl:variable name="new-count"><xsl:value-of select="$count - 1"/></xsl:variable>

          <xsl:call-template name="add-spaces">
             <xsl:with-param name="count" select="$new-count"/>    
          </xsl:call-template>    
       </xsl:otherwise>

    </xsl:choose>
   
  </xsl:template> 	


</xsl:stylesheet>

