<?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>Testing Property <code>required</code></title>
    <xforms:model id="model-001">
      <xforms:instance xmlns="">
        <person xsi:schemaLocation="my_schma.xsd">
          <test-relevant xsi:type="xsd:boolean"/>
          <test-required xsi:type="xsd:boolean"/>
          <name>
            <first/>
            <middle/>
            <last/>
          </name>
          <age xsi:nil="false"/>
          <is-senior xsi:type="xsd:boolean"/>
          <is-minor xsi:type="xsd:boolean"/>
        </person>
      </xforms:instance>
      
      <!--this one causes an error, because it doesn't evaluate to a boolean-->
      <xforms:bind nodeset="name/middle" required="count(.)"/>
      
      <!--this pair should demonstrate that even if a parent node is not required, a child can be required-->
      <xforms:bind nodeset="name/last" required="/person/test-required = 'true'"
      relevant="../../test-relevant = 'true'"/>
      <xforms:bind nodeset="name" required="/person/test-required = 'false'"
      relevant="../test-relevant = 'true'"/>
      
      <xforms:bind nodeset="age/@xsi:nil"
      type="xsd:boolean"/>
      <xforms:bind nodeset="age"
      required="true()"/>
      <xforms:bind nodeset="is-minor"
      calculate="../age &lt; 18"/>
      <xforms:bind nodeset="is-senior"
      calculate="../age &gt; 65"/>
      <!--<xforms:bind nodeset="name"
      required="../is-senior"/>-->
      <xforms:submission id="doit"
        action="http://localhost"
      ref="/person"/>

    </xforms:model>
    <xforms:model id="model-002">
      <xforms:instance xmlns="">
        <person>
          <name>
            <first/>
            <middle/>
            <last/>
          </name>
        </person>
      </xforms:instance>
    </xforms:model>
  </head>
  <body>
    <h1>Required</h1>
    <xforms:group model="model-001">
      <p>Styling will indicate required and relevant status..</p>
      <xforms:input ref="/person/test-relevant">
        <xforms:label>Master Control For relevant</xforms:label>
      </xforms:input>
      <xforms:input ref="/person/test-required">
        <xforms:label>Master Control For required</xforms:label>
      </xforms:input>
      <xforms:input ref="age/@xsi:nil">
        <xforms:label>Toggle null status for age</xforms:label>
      </xforms:input>
      <xforms:input ref="name/first">
        <xforms:label>First name</xforms:label>
      </xforms:input>
      <xforms:input ref="name/middle">
        <xforms:label>Middle name</xforms:label>
      </xforms:input>
      <xforms:input ref="name/last">
        <xforms:label>Last name</xforms:label>
      </xforms:input>
      
      <xforms:input ref="age">
        <xforms:label>Age</xforms:label>
      </xforms:input>
      <xforms:input ref="is-senior">
        <xforms:label>Senior Citizen</xforms:label>
      </xforms:input>
      <xforms:input ref="is-minor">
        <xforms:label>Minor</xforms:label>
      </xforms:input>
      <xforms:submit submission="doit">
        <xforms:label>Submit</xforms:label>
      </xforms:submit>
    </xforms:group>
  </body>
</html>
