<?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.a built-in primitive types which allow empty content</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_hexBinary>non-empty-content</my_hexBinary>
	          <my_float>non-empty-content</my_float>
	          <my_decimal>non-empty-content</my_decimal>
	          <my_double>non-empty-content</my_double>
	          <my_anyURI>non empty content</my_anyURI>
	          <my_QName>non empty content</my_QName>
	      </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_hexBinary" type="xforms:hexBinary" />
      <xforms:bind nodeset="my_float" type="xforms:float" />
      <xforms:bind nodeset="my_decimal" type="xforms:decimal" />
      <xforms:bind nodeset="my_double" type="xforms:double" />
      <xforms:bind nodeset="my_anyURI" type="xforms:anyURI" />
      <xforms:bind nodeset="my_QName" type="xforms:QName" />
      <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 />
	</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.a built-in primitive types which allow empty content</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_hexBinary"/>
			 <xforms:setvalue model="emptyData_model" ref="my_float"/>
			 <xforms:setvalue model="emptyData_model" ref="my_decimal"/>
			 <xforms:setvalue model="emptyData_model" ref="my_double"/>
			 <xforms:setvalue model="emptyData_model" ref="my_anyURI"/>
			 <xforms:setvalue model="emptyData_model" ref="my_QName"/>
	  </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:output ref="my_hexBinary">
                <xforms:label>hexBinary</xforms:label>
                <xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[12]">
                    XFORMS-INVALID (hexBinary)
                </xforms:setvalue>
                <xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[12]">
                    xforms-valid (hexBinary)
                </xforms:setvalue>
            </xforms:output>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_float">
	<xforms:label>float</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[13]">
	  XFORMS-INVALID (float)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[13]">
	  xforms-valid (float)
	</xforms:setvalue>
      </xforms:input>
    </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[14]">
	  XFORMS-INVALID (decimal)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[14]">
	  xforms-valid (decimal)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_double">
	<xforms:label>double</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[15]">
	  XFORMS-INVALID (double)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[15]">
	  xforms-valid (double)
	</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[16]">
	  XFORMS-INVALID (anyURI)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[16]">
	  xforms-valid (anyURI)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
    <xforms:group>
      <xforms:input ref="my_QName">
	<xforms:label>QName</xforms:label>
	<xforms:setvalue ev:event="xforms-invalid" model="event_model" ref="/events/event[17]">
	  XFORMS-INVALID (QName)
	</xforms:setvalue>
	<xforms:setvalue ev:event="xforms-valid" model="event_model" ref="/events/event[17]">
	  xforms-valid (QName)
	</xforms:setvalue>
      </xforms:input>
    </xforms:group>
  </xhtml:body>
</xhtml:html>
