<?xml version="1.0" encoding="UTF-8"?>
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" 
	    xmlns:xforms="http://www.w3.org/2002/xforms"
	    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	    xmlns:ev="http://www.w3.org/2001/xml-events">
  <xhtml:head>
    <xhtml:title>5.2.1.c built-in data types which allow empty content for basic processors</xhtml:title>
    <xforms:model id="emptyData_model">
      <xforms:instance>
		  <types>
				  <my_dateTime>non-empty-content</my_dateTime>
	              <my_date>non-empty-content</my_date>
	              <my_time>non-empty-content</my_time>
	              <my_gYearMonth>non-empty-content</my_gYearMonth>
	              <my_gYear>non-empty-content</my_gYear>
	              <my_gMonthDay>non-empty-content</my_gMonthDay>
	              <my_gDay>non-empty-content</my_gDay>
	              <my_gMonth>non-empty-content</my_gMonth>
	              <my_string>non-empty-content</my_string>
	              <my_boolean>non-empty-content</my_boolean>
	              <my_base64Binary>non-empty-content</my_base64Binary>
	              <my_decimal>non-empty-content</my_decimal>
	              <my_anyURI>non empty content</my_anyURI>
	              <my_integer>non empty content</my_integer>
	              <my_nonPositiveInteger>non empty content</my_nonPositiveInteger>
	              <my_negativeInteger>non empty content</my_negativeInteger>
	              <my_long>non empty content</my_long>
	              <my_int>non empty content</my_int>
	              <my_short>non empty content</my_short>
	              <my_byte>non empty content</my_byte>
	              <my_nonNegativeInteger>non empty content</my_nonNegativeInteger>
	              <my_unsignedLong>non empty content</my_unsignedLong>
	              <my_unsignedInt>non empty content</my_unsignedInt>
	              <my_unsignedShort>non empty content</my_unsignedShort>
	              <my_unsignedByte>non empty content</my_unsignedByte>
	              <my_positiveInteger>non empty content</my_positiveInteger>
		  </types>
      </xforms:instance>

	  <xforms:bind nodeset="my_dateTime" type="xforms:dateTime" />
	  <xforms:bind nodeset="my_date" type="xforms:date" />
	  <xforms:bind nodeset="my_time" type="xforms:time" />
	  <xforms:bind nodeset="my_gYearMonth" type="xforms:gYearMonth" />
	  <xforms:bind nodeset="my_gYear" type="xforms:gYear" />
	  <xforms:bind nodeset="my_gMonthDay" type="xforms:gMonthDay" />
	  <xforms:bind nodeset="my_gDay" type="xforms:gDay" />
	  <xforms:bind nodeset="my_gMonth" type="xforms:gMonth" />
	  <xforms:bind nodeset="my_string" type="xforms:string" />
	  <xforms:bind nodeset="my_boolean" type="xforms:boolean" />
	  <xforms:bind nodeset="my_base64Binary" type="xforms:base64Binary" />
	  <xforms:bind nodeset="my_decimal" type="xforms:decimal" />
	  <xforms:bind nodeset="my_anyURI" type="xforms:anyURI" />
	  <xforms:bind nodeset="my_integer" type="xforms:integer" />
	  <xforms:bind nodeset="my_nonPositiveInteger" type="xforms:nonPositiveInteger" />
	  <xforms:bind nodeset="my_negativeInteger" type="xforms:negativeInteger" />
	  <xforms:bind nodeset="my_long" type="xforms:long" />
	  <xforms:bind nodeset="my_int" type="xforms:int" />
	  <xforms:bind nodeset="my_short" type="xforms:short" />
	  <xforms:bind nodeset="my_byte" type="xforms::byte" />
	  <xforms:bind nodeset="my_nonNegativeInteger" type="xforms:nonNegativeInteger" />
	  <xforms:bind nodeset="my_unsignedLong" type="xforms:unsignedLong" />
	  <xforms:bind nodeset="my_unsignedInt" type="xforms:unsignedInt" />
	  <xforms:bind nodeset="my_unsignedShort" type="xforms:unsignedShort" />
	  <xforms:bind nodeset="my_unsignedByte" type="xforms:unsignedByte" />
	  <xforms:bind nodeset="my_positiveInteger" type="xforms:positiveInteger" />

      <xforms:bind nodeset="/types" relevant="false()"/>
    </xforms:model>
    <xforms:model id="event_model">
      <xforms:instance>
	<events xmlns="">
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	  <event />
	</events>
      </xforms:instance>
    </xforms:model>
    <xhtml:link rel="stylesheet" href="../../../driverPages/forms/TestSuite11.css" type="text/css" />
  </xhtml:head>
  <xhtml:body>
    <xforms:group>
      <xforms:label class="title">5.2.1.c built-in data types which allow empty content for basic processors</xforms:label>
    </xforms:group>
    <xforms:group>
      <xforms:label>
    When the form first displays you should not see any valid or invalid messages.  If an implementation fires validity events on 
    form initialization (incorrectly) then you may see XFORMS-INVALID output for all types (except string) below.  This is not
    being tested but is an error.

	When you activate the Run Test trigger below you must see an 'xforms-valid' output for all the 
	data types. If the data type does not accept empty content you will see an 'XFORMS-INVALID' output. 
	An 'XFORMS-INVALID' output is a failure for this test case. 
      </xforms:label>
    </xforms:group>
    <xforms:trigger>
      <xforms:label>Run Test</xforms:label>
      <xforms:action ev:event="DOMActivate">
			 <xforms:setvalue model="emptyData_model" ref="my_dateTime"/>
			 <xforms:setvalue model="emptyData_model" ref="my_date"/>
			 <xforms:setvalue model="emptyData_model" ref="my_time"/>
			 <xforms:setvalue model="emptyData_model" ref="my_gYearMonth"/>
			 <xforms:setvalue model="emptyData_model" ref="my_gYear"/>
			 <xforms:setvalue model="emptyData_model" ref="my_gMonthDay"/>
			 <xforms:setvalue model="emptyData_model" ref="my_gDay"/>
			 <xforms:setvalue model="emptyData_model" ref="my_gMonth"/>
			 <xforms:setvalue model="emptyData_model" ref="my_string"/>
			 <xforms:setvalue model="emptyData_model" ref="my_boolean"/>
			 <xforms:setvalue model="emptyData_model" ref="my_base64Binary"/>		
			 <xforms:setvalue model="emptyData_model" ref="my_decimal"/>
			 <xforms:setvalue model="emptyData_model" ref="my_anyURI"/>
			 <xforms:setvalue model="emptyData_model" ref="my_integer"/>
			 <xforms:setvalue model="emptyData_model" ref="my_nonPositiveInteger"/>
			 <xforms:setvalue model="emptyData_model" ref="my_negativeInteger"/>
			 <xforms:setvalue model="emptyData_model" ref="my_long"/>
			 <xforms:setvalue model="emptyData_model" ref="my_int"/>
			 <xforms:setvalue model="emptyData_model" ref="my_short"/>
			 <xforms:setvalue model="emptyData_model" ref="my_byte"/>
			 <xforms:setvalue model="emptyData_model" ref="my_nonNegativeInteger"/>
			 <xforms:setvalue model="emptyData_model" ref="my_unsignedLong"/>
			 <xforms:setvalue model="emptyData_model" ref="my_unsignedInt"/>
			 <xforms:setvalue model="emptyData_model" ref="my_unsignedShort"/>
			 <xforms:setvalue model="emptyData_model" ref="my_unsignedByte"/>
			 <xforms:setvalue model="emptyData_model" ref="my_positiveInteger"/>
	  </xforms:action>
    </xforms:trigger>
    <xforms:repeat model="event_model" nodeset="/events/event" >
      <xforms:output ref=".">
	<xforms:label>Result: </xforms:label>
      </xforms:output>
    </xforms:repeat>
    <xforms:group>
      <xforms:input ref="my_dateTime">
	<xforms:label>dateTime</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[1]">
	  XFORMS-INVALID (dateTime)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[1]">
	  xforms-valid (dateTime)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_time">
	<xforms:label>time</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[2]">
	  XFORMS-INVALID (time)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[2]">
	  xforms-valid (time)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_date">
	<xforms:label>date</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[3]">
	  XFORMS-INVALID (date)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[3]">
	  xforms-valid (date)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_gYearMonth">
	<xforms:label>gYearMonth</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[4]">
	  XFORMS-INVALID (gYearMonth)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[4]">
	  xforms-valid (gYearMonth)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_gYear">
	<xforms:label>gYear</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[5]">
	  XFORMS-INVALID (gYear)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[5]">
	  xforms-valid (gYear)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_gMonthDay">
	<xforms:label>gMonthDay</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[6]">
	  XFORMS-INVALID (gMonthDay)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[6]">
	  xforms-valid (gMonthDay)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_gDay">
	<xforms:label>gDay</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[7]">
	  XFORMS-INVALID (gDay)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[7]">
	  xforms-valid (gDay)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_gMonth">
	<xforms:label>gMonth</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[8]">
	  XFORMS-INVALID (gMonth)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[8]">
	  xforms-valid (gMonth)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_string">
	<xforms:label>string</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[9]">
	  XFORMS-INVALID (string)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[9]">
	  xforms-valid (string)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_boolean">
	<xforms:label>boolean</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[10]">
	  XFORMS-INVALID (boolean)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[10]">
	  xforms-valid (boolean)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
            <xforms:output ref="my_base64Binary">
                <xforms:label>base64Binary</xforms:label>
                <xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[11]">
                    XFORMS-INVALID (base64Binary)
                </xforms:setvalue>
                <xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[11]">
                    xforms-valid (base64Binary)
                </xforms:setvalue>
            </xforms:output>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_decimal">
	<xforms:label>decimal</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[12]">
	  XFORMS-INVALID (decimal)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[12]">
	  xforms-valid (decimal)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_anyURI">
	<xforms:label>anyURI</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[13]">
	  XFORMS-INVALID (anyURI)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[13]">
	  xforms-valid (anyURI)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_integer">
	<xforms:label>integer</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[14]">
	  XFORMS-INVALID (integer)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[14]">
	  xforms-valid (integer)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_nonPositiveInteger">
	<xforms:label>nonPositiveInteger</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[15]">
	  XFORMS-INVALID (nonPositiveInteger)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[15]">
	  xforms-valid (nonPositiveInteger)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_negativeInteger">
	<xforms:label>negativeInteger</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[16]">
	  XFORMS-INVALID (negativeInteger)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[16]">
	  xforms-valid(negativeInteger)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_long">
	<xforms:label>long</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[17]">
	  XFORMS-INVALID (long)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[17]">
	  xforms-valid (long)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_int">
	<xforms:label>int</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[18]">
	  XFORMS-INVALID (int)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[18]">
	  xforms-valid (int)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_short">
	<xforms:label>short</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[19]">
	  XFORMS-INVALID (short)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[19]">
	  xforms-valid (short)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_byte">
	<xforms:label>byte</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[20]">
	  XFORMS-INVALID (byte)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[20]">
	  xforms-valid (byte)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_nonNegativeInteger">
	<xforms:label>nonNegativeInteger</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[21]">
	  XFORMS-INVALID (nonNegativeInteger)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[21]">
	  xforms-valid (nonNegativeInteger)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_unsignedLong">
	<xforms:label>unsignedLong</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[22]">
	  XFORMS-INVALID (unsignedLong)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[22]">
	  xforms-valid (unsignedLong)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_unsignedInt">
	<xforms:label>unsignedInt</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[23]">
	  XFORMS-INVALID (unsignedInt)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[23]">
	  xforms-valid (unsignedInt)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_unsignedShort">
	<xforms:label>unsignedShort</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[24]">
	  XFORMS-INVALID (unsignedShort)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[24]">
	  xforms-valid (unsignedShort)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_unsignedByte">
	<xforms:label>unsignedByte</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[25]">
	  XFORMS-INVALID (unsignedByte)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[25]">
	  xforms-valid (unsignedByte)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_positiveInteger">
	<xforms:label>positiveInteger</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model"
			 ref="/events/event[26]">
	  XFORMS-INVALID (positiveInteger)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model"
			 ref="/events/event[26]">
	  xforms-valid event (positiveInteger)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    
  </xhtml:body>
</xhtml:html>
