<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="../test.css" ?>
<!DOCTYPE html [
	<!ATTLIST section id ID #IMPLIED>
	<!ATTLIST h       id ID #IMPLIED>
	<!ATTLIST div     id ID #IMPLIED>
	<!ATTLIST nl      id ID #IMPLIED>

  <!-- for the model attribute to work -->
  <!ATTLIST xforms:model id ID #IMPLIED>

  <!-- for the bind attribute to work -->

  <!ATTLIST xforms:bind id ID #IMPLIED>

  <!-- for the instance() function to work -->
  <!ATTLIST xforms:instance id ID #IMPLIED>

  <!-- for submit to work -->
  <!ATTLIST xforms:submission id ID #IMPLIED>

  <!-- for setfocus and other events to work -->
  <!ATTLIST xforms:input id ID #IMPLIED>

  <!ATTLIST xforms:secret id ID #IMPLIED>
  <!ATTLIST xforms:textarea id ID #IMPLIED>
  <!ATTLIST xforms:output id ID #IMPLIED>
  <!ATTLIST xforms:upload id ID #IMPLIED>
  <!ATTLIST xforms:range id ID #IMPLIED>
  <!ATTLIST xforms:trigger id ID #IMPLIED>
  <!ATTLIST xforms:submit id ID #IMPLIED>
  <!ATTLIST xforms:select id ID #IMPLIED>
  <!ATTLIST xforms:select1 id ID #IMPLIED>

  <!-- for toggle to work -->
  <!ATTLIST xforms:case id ID #IMPLIED>

  <!-- for repeat stuff to work -->
  <!ATTLIST xforms:repeat id ID #IMPLIED>

  <!-- (also any element with xforms:repeat-* attributes -->
 	<!ATTLIST table      id ID #IMPLIED>
  <!ATTLIST td         id ID #IMPLIED>

]>
<html xmlns="http://www.w3.org/2002/06/xhtml2"
  xmlns:xforms="http://www.w3.org/2002/xforms"
  xmlns:ev="http://www.w3.org/2001/xml-events"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:my="urn:my"
  xml:lang="en">
  <head>
    <title>MUST support placing types on attributes</title>
    <link rel="stylesheet" type="text/css" href="../test.css" />
    <xforms:model id="model-002">
      <xforms:instance xmlns="urn:my">
        <data>
          <valid>
	    <data dateTime="1999-05-31T13:20:00-05:00"/>
	    <data time="13:20:00-05:00"/>
	    <data date="1999-05-31"/>
	    <data gYearMonth="1999-05"/>
	    <data gYear="1999"/>
	    <data gMonthDay="--09-14"/>
	    <data gDay="---15"/>
	    <data gMonth="--11--"/>
	    <data string="Strings, strings, everywhere."/>
	    <data boolean="true"/>
	    <data base64Binary="WEZvcm1zIFJ1bGVz"/>
	    <data hexBinary="DEADBEEF"/>
	    <data float="1267.43233E12"/>
	    <data decimal="12678967.543233"/>
	    <data double="INF"/>
	    <data anyURI="http://example.com/data/potato"/>
	    <data QName="ev:event"/>
	    <!-- <NOTATION/> -->
          </valid>
          <invalid>
	    <data dateTime="This is not a valid date"/>
	    <data time="Now is not the time."/>
	    <data date="Juvember 14"/>
	    <data gYearMonth="I am late for an important date."/>
	    <data gYear="MCMLXII"/>
	    <data gMonthDay="OO-II"/>
	    <data gDay="32"/>
	    <data gMonth="14"/>
	    <!-- <string/> -->
	    <data boolean="This statement is false."/>
	    <data base64Binary="#1D]/"/>
	    <data hexBinary="octal"/>
	    <data float="3+3j"/>
	    <data decimal="-1^-1/2"/>
	    <data double="OOF!"/>
	    <!-- <anyURI/> -->
	    <data QName=":::::"/>
	    <!-- <NOTATION/> -->
          </invalid>
        </data>
      </xforms:instance>
      
      <xforms:bind nodeset="//my:data/@dateTime" type="xsd:dateTime"/>
      <xforms:bind nodeset="//my:data/@time" type="xsd:time"/>
      <xforms:bind nodeset="//my:data/@date" type="xsd:date"/>
      <xforms:bind nodeset="//my:data/@gYearMonth" type="xsd:gYearMonth"/>
      <xforms:bind nodeset="//my:data/@gYear" type="xsd:gYear"/>
      <xforms:bind nodeset="//my:data/@gMonthDay" type="xsd:gMonthDay"/>
      <xforms:bind nodeset="//my:data/@gDay" type="xsd:gDay"/>
      <xforms:bind nodeset="//my:data/@gMonth" type="xsd:gMonth"/>
      <xforms:bind nodeset="//my:data/@string" type="xsd:string"/>
      <xforms:bind nodeset="//my:data/@boolean" type="xsd:boolean"/>
      <xforms:bind nodeset="//my:data/@base64Binary" type="xsd:base64Binary"/>
      <xforms:bind nodeset="//my:data/@hexBinary" type="xsd:hexBinary"/>
      <xforms:bind nodeset="//my:data/@float" type="xsd:float"/>
      <xforms:bind nodeset="//my:data/@decimal" type="xsd:decimal"/>
      <xforms:bind nodeset="//my:data/@double" type="xsd:doubl"/>
      <xforms:bind nodeset="//my:data/@anyURI" type="xsd:anyURI"/>
      <xforms:bind nodeset="//my:data/@QName" type="xsd:QName"/>
      
    </xforms:model>
  </head>
  <body>
    <h1>MUST support placing types on attributes</h1>
    <xforms:group model="model-002" ref="my:valid">
      <xforms:label>Valid data according to type</xforms:label>
      <h2>All data under this group must display as valid</h2>
      
      <xforms:group>
	<xforms:label>dateTime</xforms:label>
	<xforms:output ref="my:data/@dateTime">
	  <xforms:label>output of dateTime</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@dateTime">
	  <xforms:label>input for dateTime</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>time</xforms:label>
	<xforms:output ref="my:data/@time">
	  <xforms:label>output of time</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@time">
	  <xforms:label>input for time</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>date</xforms:label>
	<xforms:output ref="my:data/@date">
	  <xforms:label>output of date</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@date">
	  <xforms:label>input for date</xforms:label>
	</xforms:input>
      </xforms:group>
      
      
      <xforms:group>
	<xforms:label>gYearMonth</xforms:label>
	<xforms:output ref="my:data/@gYearMonth">
	  <xforms:label>output of gYearMonth</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gYearMonth">
	  <xforms:label>input for gYearMonth</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>gYear</xforms:label>
	<xforms:output ref="my:data/@gYear">
	  <xforms:label>output of gYear</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gYear">
	  <xforms:label>input for gYear</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>gMonthDay</xforms:label>
	<xforms:output ref="my:data/@gMonthDay">
	  <xforms:label>output of gMonthDay</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gMonthDay">
	  <xforms:label>input for gMonthDay</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>gDay</xforms:label>
	<xforms:output ref="my:data/@gDay">
	  <xforms:label>output of gDay</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gDay">
	  <xforms:label>input for gDay</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>gMonth</xforms:label>
	<xforms:output ref="my:data/@gMonth">
	  <xforms:label>output of gMonth</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gMonth">
	  <xforms:label>input for gMonth</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>string</xforms:label>
	<xforms:output ref="my:data/@string">
	  <xforms:label>output of string</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@string">
	  <xforms:label>input for string</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>boolean</xforms:label>
	<xforms:output ref="my:data/@boolean">
	  <xforms:label>output of boolean</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@boolean">
	  <xforms:label>input for boolean</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>base64Binary</xforms:label>
	<xforms:upload ref="my:data/@base64Binary">
	  <xforms:label>Upload Value of base64Binary</xforms:label>
	</xforms:upload>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>hexBinary</xforms:label>
	<xforms:upload ref="my:data/@hexBinary">
	  <xforms:label>Upload Value of hexBinary</xforms:label>
	</xforms:upload>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>float</xforms:label>
	<xforms:output ref="my:data/@float">
	  <xforms:label>output of float</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@float">
	  <xforms:label>input for float</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>decimal</xforms:label>
	<xforms:output ref="my:data/@decimal">
	  <xforms:label>output of decimal</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@decimal">
	  <xforms:label>input for decimal</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>double</xforms:label>
	<xforms:output ref="my:data/@double">
	  <xforms:label>output of double</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@double">
	  <xforms:label>input for double</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>anyURI</xforms:label>
	<xforms:output ref="my:data/@anyURI">
	  <xforms:label>output of anyURI</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@anyURI">
	  <xforms:label>input for anyURI</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>QName</xforms:label>
	<xforms:output ref="my:data/@QName">
	  <xforms:label>output of QName</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@QName">
	  <xforms:label>input for QName</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <!-- NOTATION -->

    </xforms:group>
    
    <xforms:group model="model-002" ref="my:invalid">
      <h2>All data under this group must display as invalid</h2>
      <xforms:label>Invalid data according to type</xforms:label>

      <xforms:group model="model-002">
	<xforms:label>dateTime</xforms:label>
	<xforms:output ref="my:data/@dateTime">
	  <xforms:label>output of invalid dateTime</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@dateTime">
	  <xforms:label>input for invalid dateTime</xforms:label>
	</xforms:input>
      </xforms:group>

      
      <xforms:group>
	<xforms:label>time</xforms:label>
	<xforms:output ref="my:data/@time">
	  <xforms:label>output of invalid time</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@time">
	  <xforms:label>input for invalid time</xforms:label>
	</xforms:input>
      </xforms:group>

      
      <xforms:group>
	<xforms:label>date</xforms:label>
	<xforms:output ref="my:data/@date">
	  <xforms:label>output of invalid date</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@date">
	  <xforms:label>input for invalid date</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>gYearMonth</xforms:label>
	<xforms:output ref="my:data/@gYearMonth">
	  <xforms:label>output of invalid gYearMonth</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gYearMonth">
	  <xforms:label>input for invalid gYearMonth</xforms:label>
	</xforms:input>
      </xforms:group>

      
      <xforms:group>
	<xforms:label>gYear</xforms:label>
	<xforms:output ref="my:data/@gYear">
	  <xforms:label>output of invalid gYear</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gYear">
	  <xforms:label>input for invalid gYear</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>gMonthDay</xforms:label>
	<xforms:output ref="my:data/@gMonthDay">
	  <xforms:label>output of invalid gMonthDay</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gMonthDay">
	  <xforms:label>input for invalid gMonthDay</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>gDay</xforms:label>
	<xforms:output ref="my:data/@gDay">
	  <xforms:label>output of invalid gDay</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gDay">
	  <xforms:label>input for invalid gDay</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>gMonth</xforms:label>
	<xforms:output ref="my:data/@gMonth">
	  <xforms:label>output of invalid gMonth</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@gMonth">
	  <xforms:label>input for invalid gMonth</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>boolean</xforms:label>
	<xforms:output ref="my:data/@boolean">
	  <xforms:label>output of invalid boolean</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@boolean">
	  <xforms:label>input for invalid boolean</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>base64Binary</xforms:label>
	<xforms:upload ref="my:data/@base64Binary">
	  <xforms:label>Upload Value of invalid base64Binary</xforms:label>
	</xforms:upload>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>hexBinary</xforms:label>
	<xforms:upload ref="my:data/@hexBinary">
	  <xforms:label>Upload Value of invalid hexBinary</xforms:label>
	</xforms:upload>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>float</xforms:label>
	<xforms:output ref="my:data/@float">
	  <xforms:label>output of invalid float</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@float">
	  <xforms:label>input for invalid float</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>decimal</xforms:label>
	<xforms:output ref="my:data/@decimal">
	  <xforms:label>output of invalid decimal</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@decimal">
	  <xforms:label>input for invalid decimal</xforms:label>
	</xforms:input>
      </xforms:group>
      
      <xforms:group>
	<xforms:label>double</xforms:label>
	<xforms:output ref="my:data/@double">
	  <xforms:label>output of invalid double</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@double">
	  <xforms:label>input for invalid double</xforms:label>
	</xforms:input>
      </xforms:group>

      <xforms:group>
	<xforms:label>QName</xforms:label>
	<xforms:output ref="my:data/@QName">
	  <xforms:label>output of invalid QName</xforms:label>
	</xforms:output>
	<xforms:input ref="my:data/@QName">
	  <xforms:label>input for invalid QName</xforms:label>
	</xforms:input>
      </xforms:group>

      <!-- anyURI -->      <!-- NOTATION -->      <!--  STRING -->

    </xforms:group>

  </body>
</html>
