<?xml version="1.0" standalone="yes"?> 
<wodefinitions>

  <wo class="WOGenericElement">
    <binding name="formValue" passthrough="NO"/>
    <binding name="formValues" passthrough="NO"/>
    <binding name="invokeAction" passthrough="NO" defaults="Actions"/>
    <binding name="elementName" passthrough="NO" required="YES"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="omitTags" passthrough="NO" defaults="YES/NO"/>
    <binding name="elementID" passthrough="NO"/>
    
    <binding name="id" />
    <binding name="class" />
    <binding name="style" />

    <validation message="'name' must be bound when either 'formValue' or 'formValues' is bound">
      <and>
        <or>
          <bound name="formValue"/>
          <bound name="formValues"/>
        </or>
        <unbound name="name"/>
      </and>
    </validation>

    <validation message="'formValue' and 'formValues' cannot both be bound">
      <and>
        <bound name="formValue"/>
        <bound name="formValues"/>
      </and>
    </validation>
  </wo>

  <wo class="WORadioButton">
    <binding name="checked" passthrough="NO" settable="YES"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="selection" passthrough="NO" settable="YES"/>
    <binding name="value"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="exactly one of 'checked' or 'value' must be bound">
      <count test="!=1">
        <bound name="checked"/>
        <bound name="value"/>
      </count>
    </validation>

    <validation message="if either 'selection' or 'value' is bound, then both must be bound">
      <and>
        <or>
          <bound name="selection"/>
          <bound name="value"/>
        </or>
        <count test="&lt;2">
          <bound name="selection"/>
          <bound name="value"/>
        </count>
      </and>
    </validation>
  </wo>

  <wo class="WOBody" wocomponentcontent = "true">
    <binding name="filename" passthrough="NO" defaults="Resources"/>
    <binding name="framework" passthrough="NO" defaults="Frameworks"/>
    <binding name="src" passthrough="NO"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="key" passthrough="NO"/>
    <binding name="mimeType" passthrough="NO" defaults="MIME Types"/>
    <binding name="data" passthrough="NO"/>

    <binding name="class" />
    <binding name="style" />
    
    <validation message="'filename' must be bound when 'framework' is bound">
      <and>
        <bound name="framework"/>
        <unbound name="filename"/>
      </and>
    </validation>

    <validation message="'mimeType' must be bound when 'data' is bound">
      <and>
        <bound name="data"/>
        <unbound name="mimeType"/>
      </and>
    </validation>
  </wo>

  <wo class="WOForm" wocomponentcontent = "true">
    <binding name="actionClass" passthrough="NO" defaults="Direct Action Classes"/>
    <binding name="enctype"/>
    <binding name="queryDictionary" passthrough="NO"/>
    <binding name="directActionName" passthrough="NO" defaults="Direct Actions"/>
    <binding name="href" passthrough="NO"/>
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="target" passthrough="NO"/>
    <binding name="multipleSubmit" passthrough="NO" defaults="YES/NO"/>
    
    <binding name="id" />
    <binding name="method" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="either one of 'action' or 'href' may be bound, or one or both of 'actionClass' or 'directActionName' may be bound">
      <count test="&gt;1">
        <bound name="action"/>
        <bound name="href"/>
        <or>
          <bound name="actionClass"/>
          <bound name="directActionName"/>
        </or>
      </count>
    </validation>
  </wo>

  <wo class="WOCheckBox">
    <binding name="value"/>
    <binding name="checked" passthrough="NO" settable="YES"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="selection" passthrough="NO" settable="YES"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="exactly one of 'checked' or 'value' must be bound">
      <count test="!=1">
        <bound name="checked"/>
        <bound name="value"/>
      </count>
    </validation>

    <validation message="if either 'selection' or 'value' is bound, then both must be bound">
      <and>
        <or>
          <bound name="selection"/>
          <bound name="value"/>
        </or>
        <count test="&lt;2">
          <bound name="selection"/>
          <bound name="value"/>
        </count>
      </and>
    </validation>
  </wo>

  <wo class="WORedirect">
    <binding name="url" required="YES"/>

    <!-- no validation rules -->
  </wo>

  <wo class="WOPopUpButton">
    <binding name="selection" passthrough="NO" settable="YES"/>
    <binding name="list" passthrough="NO" required="YES"/>
    <binding name="displayString" passthrough="NO"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="value" passthrough="NO"/>
    <binding name="item" passthrough="NO"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="selectedValue" passthrough="NO"/>
    <binding name="noSelectionString" passthrough="NO"/>
    <binding name="escapeHTML" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />
    
    <validation message="'list' must not be a constant">
      <and>
        <bound name="list"/>
        <ungettable name="list"/>
      </and>
    </validation>

    <validation message="'item' may not be a constant when 'displayString' or 'value' is bound">
      <and>
        <or>
          <bound name="displayString"/>
          <bound name="value"/>
        </or>
        <unsettable name="item"/>
      </and>
    </validation>

    <validation message="'item' must be bound when 'displayString' or 'value' is bound">
      <and>
        <or>
          <bound name="displayString"/>
          <bound name="value"/>
        </or>
        <unbound name="item"/>
      </and>
    </validation>

    <validation message="'selectedValue' and 'selection' cannot both be bound">
      <and>
        <bound name="selection"/>
        <bound name="selectedValue"/>
      </and>
    </validation>
  </wo>

  <wo class="WOBrowser">
    <binding name="list" passthrough="NO" required="YES"/>
    <binding name="displayString" passthrough="NO"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="selectedValues" passthrough="NO"/>
    <binding name="item" passthrough="NO"/>
    <binding name="name"/>
    <binding name="multiple"/>
    <binding name="selections" passthrough="NO" settable="YES"/>
    <binding name="value" passthrough="NO"/>
    <binding name="escapeHTML" passthrough="NO" defaults="YES/NO"/>

    <validation message="'list' must not be a constant">
      <and>
        <bound name="list"/>
        <ungettable name="list"/>
      </and>
    </validation>

    <validation message="'item' may not be a constant when 'displayString' or 'value' is bound">
      <and>
        <or>
          <bound name="displayString"/>
          <bound name="value"/>
        </or>
        <unsettable name="item"/>
      </and>
    </validation>

    <validation message="'item' must be bound when 'displayString' or 'value' is bound">
      <and>
        <unbound name="item"/>
        <or>
          <bound name="value"/>
          <bound name="displayString"/>
        </or>
      </and>
    </validation>
 
    <validation message="'selectedValues' and 'selections' cannot both be bound">
      <and>
        <bound name="selections"/>
        <bound name="selectedValues"/>
      </and>
    </validation>
 </wo>

  <wo class="WOComponentContent"> 
    <!-- no validation rules or bindings -->
  </wo>

  <wo class="WOActiveImage">
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="actionClass" passthrough="NO" defaults="Direct Action Classes"/>
    <binding name="data" passthrough="NO"/>
    <binding name="directActionName" passthrough="NO" defaults="Direct Actions"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="filename" passthrough="NO" defaults="Resources"/>
    <binding name="framework" passthrough="NO" defaults="Frameworks"/>
    <binding name="href" passthrough="NO"/>
    <binding name="imageMapFile" passthrough="NO"/>
    <binding name="key" passthrough="NO"/>
    <binding name="mimeType" passthrough="NO" defaults="MIME Types"/>
    <binding name="name" passthrough="NO"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="secure" passthrough="NO" defaults="YES/NO"/>
    <binding name="src"/>
    <binding name="target" passthrough="NO"/>
    <binding name="value" passthrough="NO" settable="YES"/>
    <binding name="x" passthrough="NO" settable="YES"/>
    <binding name="y" passthrough="NO" settable="YES"/>

    <binding name="id" />
    <binding name="class" />
    <binding name="style" />

    <validation message="the 'secure' attribute has no effect on the 'href' attribute">
      <and>
        <bound name="href"/>
        <bound name="secure"/>
      </and>
    </validation>

    <validation message="the 'secure' attribute has no effect on image map actions, only actions resulting from the 'actionClass', 'directActionName' or 'action' attributes">
      <and>
        <bound name="imageMapFile"/>
        <bound name="secure"/>
      </and>
    </validation>

    <validation message="exactly one of 'data', 'filename', 'src', or 'value' must be bound">
      <count test="!=1">
        <bound name="data"/>
        <bound name="filename"/>
        <bound name="src"/>
        <bound name="value"/>
      </count>
    </validation>

    <validation message="'filename' must be bound when 'framework' is bound">
      <and>
        <bound name="framework"/>
        <unbound name="filename"/>
      </and>
    </validation>

    <validation message="'mimeType' must be bound when 'data' is bound">
      <and>
        <bound name="data"/>
        <unbound name="mimeType"/>
      </and>
    </validation>

    <validation message="either one of 'action' or 'href' may be bound, or either or both of 'actionClass' and 'directActionName' may be bound">
      <count test="!=1">
        <bound name="action"/>
        <bound name="href"/>
        <or>
          <bound name="actionClass"/>
          <bound name="directActionName"/>
        </or>
      </count>
    </validation>

    <validation message="if either 'x' or 'y' is bound, then both must be bound">
      <and>
        <or>
          <bound name="x"/>
          <bound name="y"/>
        </or>
        <count test="&lt;2">
          <bound name="x"/>
          <bound name="y"/>
        </count>
      </and>
    </validation>
  </wo>

  <wo class="WONestedList">
    <binding name="level" passthrough="NO"/>
    <binding name="suffix" passthrough="NO"/>
    <binding name="displayString" passthrough="NO"/>
    <binding name="index" passthrough="NO"/>
    <binding name="prefix" passthrough="NO"/>
    <binding name="escapeHTML" passthrough="NO" defaults="YES/NO"/>
    <binding name="selection" passthrough="NO" settable="YES"/>
    <binding name="sublist" passthrough="NO"/>
    <binding name="isOrdered" passthrough="NO" defaults="YES/NO"/>
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="value" passthrough="NO"/>
    <binding name="item" passthrough="NO"/>
    <binding name="list" passthrough="NO" required="YES"/>

    <validation message="'list' must not be a constant">
      <and>
        <bound name="list"/>
        <ungettable name="list"/>
      </and>
    </validation>

    <validation message="'item' must not be a constant if 'displayString' or 'value' is present">
      <and>
        <or>
          <bound name="displayString"/>
          <bound name="value"/>
        </or>
        <or>
          <unbound name="item"/>
          <unsettable name="item"/>
        </or>
      </and>
    </validation>
  </wo>

  <wo class="WOResourceURL">
    <binding name="framework" passthrough="NO" defaults="Frameworks"/>
    <binding name="mimeType" passthrough="NO" defaults="MIME Types"/>
    <binding name="key" passthrough="NO"/>
    <binding name="data" passthrough="NO"/>
    <binding name="pageName" passthrough="NO" defaults="Page Names"/>
    <binding name="filename" passthrough="NO" defaults="Resources"/>
    <binding name="otherTagString" passthrough="NO"/>

    <validation message="exactly one of 'data', 'filename', or 'pageName' must be bound">
      <count test="!=1">
        <bound name="filename"/>
        <bound name="pageName"/>
        <bound name="data"/>
      </count>
    </validation>

    <validation message="'filename' must be bound when 'framework' is bound">
      <and>
        <bound name="framework"/>
        <unbound name="filename"/>
      </and>
    </validation>

    <validation message="'mimeType' must be bound when 'data' is bound">
      <and>
        <bound name="data"/>
        <unbound name="mimeType"/>
      </and>
    </validation>
  </wo>

  <wo class="WOFileUpload">
    <binding name="data" settable="YES"/>
    <binding name="filePath" settable="YES"/>
    <binding name="mimeType" settable="YES"/>
    <binding name="copyData" defaults="Boolean"/>
    <binding name="inputStream" settable="YES"/>
    <binding name="outputStream" settable="YES"/>
    <binding name="bufferSize"/>
    <binding name="streamToFilePath"/>
    <binding name="overwrite" defaults="Boolean"/>
    <binding name="finalFilePath" settable="YES"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="exactly one of 'data', 'inputStream', 'outputStream', or 'streamToFilePath' must be bound">
      <count test="!=1">
        <bound name="data"/>
        <bound name="inputStream"/>
        <bound name="outputStream"/>
        <bound name="streamToFilePath"/>
      </count>
    </validation>

    <validation message="either of 'outputStream' or 'streamToFilePath' must be bound when 'bufferSize' is bound">
      <and>
        <bound name="bufferSize"/>
        <count test="!=1">
          <bound name="outputStream"/>
          <bound name="streamToFilePath"/>
        </count>
      </and>
    </validation>

    <validation message="'streamToFilePath' must be bound when either 'overwrite' or 'finalFilePath' is bound">
      <and>
        <unbound name="streamToFilePath"/>
        <or>
          <bound name="overwrite"/>
          <bound name="finalFilePath"/>
        </or>
      </and>
    </validation>

    <validation message="'data' must be bound when 'copyData' is bound">
      <and>
        <unbound name="data"/>
        <bound name="copyData"/>
      </and>
    </validation>

    <validation message="'filePath' must be bound when 'data' is bound">
      <and>
        <unbound name="filePath"/>
        <bound name="data"/>
      </and>
    </validation>
  </wo>

  <wo class="WOGenericContainer" wocomponentcontent = "true">
    <binding name="formValue" passthrough="NO"/>
    <binding name="formValues" passthrough="NO"/>
    <binding name="invokeAction" passthrough="NO" defaults="Actions"/>
    <binding name="elementName" passthrough="NO" required="YES"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="omitTags" passthrough="NO" defaults="YES/NO"/>
    <binding name="elementID" passthrough="NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="'name' must be bound when either 'formValue' or 'formValues' is bound">
      <and>
        <or>
          <bound name="formValue"/>
          <bound name="formValues"/>
        </or>
        <unbound name="name"/>
      </and>
    </validation>

    <validation message="'formValue' and 'formValues' cannot both be bound">
      <and>
        <bound name="formValue"/>
        <bound name="formValues"/>
      </and>
    </validation>
  </wo>

  <wo class="WOJavaScript" wocomponentcontent = "true">
    <binding name="hideInComment" passthrough="NO" defaults="YES/NO"/>
    <binding name="scriptSource" passthrough="NO"/>
    <binding name="scriptString" passthrough="NO"/>
    <binding name="scriptFile" passthrough="NO"/>
    <binding name="otherTagString" passthrough="NO"/>

    <validation message="one of 'scriptFile', 'scriptSource', or 'scriptString' must be bound">
      <count test="!=1">
        <bound name="scriptFile"/>
        <bound name="scriptSource"/>
        <bound name="scriptString"/>
      </count>
    </validation>
  </wo>

  <wo class="WOTextField">
    <binding name="formatter" passthrough="NO"/>
    <binding name="value" settable="YES" required="YES"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="numberformat" passthrough="NO" defaults="Number Format Strings"/>
    <binding name="dateformat" passthrough="NO" defaults="Date Format Strings"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="no more than one of 'dateFormat', 'numberFormat', or 'formatter' may be bound">
      <count test="&gt;1">
        <bound name="numberformat"/>
        <bound name="dateformat"/>
        <bound name="formatter"/>
      </count>
    </validation>
  </wo>

  <wo class="WOPasswordField">
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="value" settable="YES" required="YES"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <!-- no validation rules -->
  </wo>

  <wo class="WOHiddenField">
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="value" settable="YES" required="YES"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <!-- no validation rules -->
  </wo>

  <wo class="WOConditional" wocomponentcontent = "true">
    <binding name="negate" passthrough="NO" defaults="YES/NO"/>
    <binding name="condition" passthrough="NO" required="YES"/>

    <!-- no validation rules -->
  </wo>

  <wo class="WOString">
    <documentation directory="NSDocumentationDirectory" domain="NSAllDomainsMask"
      path="Developer/WebObjects/Reference/DynamicElements/WOString.html"/>
    <binding name="escapeHTML" passthrough="NO" defaults="YES/NO"/>
    <binding name="value" passthrough="NO" required="YES"/>
    <binding name="numberformat" passthrough="NO" defaults="Number Format Strings"/>
    <binding name="dateformat" passthrough="NO" defaults="Date Format Strings"/>
    <binding name="formatter" passthrough="NO"/>
    <binding name="valueWhenEmpty" passthrough="NO"/>

    <validation message="no more than one of 'dateFormat', 'numberFormat', or 'formatter' may be bound">
      <count test="&gt;1">
        <bound name="numberformat"/>
        <bound name="dateformat"/>
        <bound name="formatter"/>
      </count>
    </validation>
  </wo>

  <wo class="WOSubmitButton">
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="value"/>
    <binding name="actionClass" passthrough="NO" defaults="Direct Action Classes"/>
    <binding name="directActionName" passthrough="NO" defaults="Direct Actions"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="either 'action', or one or both of 'actionClass' or 'directActionName' may be bound">
      <count test="!=1">
        <bound name="action"/>
        <or>
          <bound name="actionClass"/>
          <bound name="directActionName"/>
        </or>
      </count>
    </validation>
  </wo>

  <wo class="WOEmbeddedObject">
    <binding name="data" passthrough="NO"/>
    <binding name="key" passthrough="NO"/>
    <binding name="mimeType" passthrough="NO" defaults="MIME Types"/>
    <binding name="filename" passthrough="NO" defaults="Resources"/>
    <binding name="framework" passthrough="NO" defaults="Frameworks"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="src"/>
    <binding name="value" passthrough="NO"/>

    <binding name="id" />
    <binding name="class" />
    <binding name="style" />

    <validation message="exactly one of 'data', 'filename', 'src', or 'value' must be bound">
      <count test="!=1">
        <bound name="filename"/>
        <bound name="src"/>
        <bound name="data"/>
        <bound name="value"/>
      </count>
    </validation>

    <validation message="'filename' must be bound when 'framework' is bound">
      <and>
        <bound name="framework"/>
        <unbound name="filename"/>
      </and>
    </validation>

    <validation message="'mimeType' must be bound when 'data' is bound">
      <and>
        <bound name="data"/>
        <unbound name="mimeType"/>
      </and>
    </validation>
  </wo>

  <wo class="WOParam">
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="value"/>
    <binding name="name"/>
    <binding name="otherTagString" passthrough="NO"/>

    <validation message="exactly one of 'action' or 'value' must be bound">
      <count test="!=1">
        <bound name="value"/>
        <bound name="action"/>
      </count>
    </validation>
  </wo>

  <wo class="WOHyperlink" wocomponentcontent = "true">
    <binding name="actionClass" passthrough="NO" defaults="Direct Action Classes"/>
    <binding name="target" passthrough="NO"/>
    <binding name="fragmentIdentifier"/>
    <binding name="queryDictionary" passthrough="NO"/>
    <binding name="directActionName" passthrough="NO" defaults="Direct Actions"/>
    <binding name="href"/>
    <binding name="string" passthrough="NO"/>
    <binding name="pageName" passthrough="NO" defaults="Page Names"/>
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="secure" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="the 'secure' attribute has no effect on the 'href' attribute">
      <and>
        <bound name="href"/>
        <bound name="secure"/>
      </and>
    </validation>

    <validation message="either one of 'action', 'href', or 'pageName' may be bound, or either or both of 'actionClass' and 'directActionName' may be bound">
      <count test="!=1">
        <bound name="action"/>
        <bound name="href"/>
        <bound name="pageName"/>
        <or>
          <bound name="actionClass"/>
          <bound name="directActionName"/>
        </or>
      </count>
    </validation>
  </wo>

  <wo class="WOSwitchComponent">
    <binding name="WOComponentName" passthrough="NO" required="YES"/>

    <!-- no validation rules -->
  </wo>

  <wo class="WOFrame">
    <binding name="actionClass" passthrough="NO" defaults="Direct Action Classes"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="directActionName" passthrough="NO" defaults="Direct Actions"/>
    <binding name="src"/>
    <binding name="value" passthrough="NO"/>
    <binding name="pageName" passthrough="NO" defaults="Page Names"/>

    <validation message="exactly one of 'pageName', 'src', or 'value' must be bound">
      <count test="!=1">
        <bound name="src"/>
        <bound name="pageName"/>
        <bound name="value"/>
      </count>
    </validation>
  </wo>

  <wo class="WOCheckBoxList">
    <binding name="selections" passthrough="NO" settable="YES"/>
    <binding name="index" passthrough="NO"/>
    <binding name="suffix" passthrough="NO"/>
    <binding name="displayString" passthrough="NO"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="name" passthrough="NO"/>
    <binding name="prefix" passthrough="NO"/>
    <binding name="item" passthrough="NO"/>
    <binding name="value" passthrough="NO"/>
    <binding name="list" passthrough="NO" required="YES"/>

    <validation message="'list' must not be a constant">
      <and>
        <bound name="list"/>
        <ungettable name="list"/>
      </and>
    </validation>

    <validation message="'item' must not be a constant if 'displayString' is present">
      <and>
        <bound name="displayString"/>
        <or>
          <unbound name="item"/>
          <unsettable name="item"/>
        </or>
      </and>
    </validation>
  </wo>

  <wo class="WORepetition" wocomponentcontent = "true">
    <binding name="item" passthrough="NO" settable="YES"/>
    <binding name="list" passthrough="NO"/>
    <binding name="count" passthrough="NO"/>
    <binding name="index" passthrough="NO"/>
    <binding name="identifier" passthrough="NO"/>

    <validation message="'list' must not be a constant">
      <and>
        <bound name="list"/>
        <ungettable name="list"/>
      </and>
    </validation>

    <validation message="exactly one of 'count' or 'list' must be bound">
      <count test="!=1">
        <bound name="list"/>
        <bound name="count"/>
      </count>
    </validation>

    <validation message="'item' must be bound when 'list' is bound">
      <and>
        <bound name="list"/>
        <unbound name="item"/>
      </and>
    </validation>
  </wo>

  <wo class="WOApplet">
    <binding name="height"/>
    <binding name="codebase"/>
    <binding name="object" passthrough="NO"/>
    <binding name="archive"/>
    <binding name="code" required="YES"/>
    <binding name="width"/>
    <binding name="associationClass" passthrough="NO"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="archiveNames" passthrough="NO"/>

    <!-- no validation rules -->
  </wo>

  <wo class="WOImageButton">
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="data" passthrough="NO"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="filename" passthrough="NO" defaults="Resources"/>
    <binding name="framework" passthrough="NO" defaults="Frameworks"/>
    <binding name="imageMapFile" passthrough="NO"/>
    <binding name="key" passthrough="NO"/>
    <binding name="mimeType" passthrough="NO" defaults="MIME Types"/>
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="src"/>
    <binding name="value" passthrough="NO" settable="YES"/>
    <binding name="x" passthrough="NO" settable="YES" />
    <binding name="y" passthrough="NO" settable="YES"/>
    <binding name="actionClass" passthrough="NO" defaults="Direct Action Classes"/>
    <binding name="directActionName" passthrough="NO" defaults="Direct Actions"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="either 'action', or one or both of 'actionClass' or 'directActionName' may be bound">
      <and>
        <bound name="action"/>
        <or>
          <bound name="actionClass"/>
          <bound name="directActionName"/>
        </or>
      </and>
    </validation>

    <validation message="exactly one of 'data', 'filename', 'src', or 'value' must be bound">
      <count test="!=1">
        <bound name="data"/>
        <bound name="filename"/>
        <bound name="src"/>
        <bound name="value"/>
      </count>
    </validation>

    <validation message="'filename' must be bound when 'framework' is bound">
      <and>
        <bound name="framework"/>
        <unbound name="filename"/>
      </and>
    </validation>

    <validation message="'mimeType' must be bound when 'data' is bound">
      <and>
        <bound name="data"/>
        <unbound name="mimeType"/>
      </and>
    </validation>
  </wo>

  <wo class="WOText">
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="value" passthrough="NO" settable="YES" required="YES"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <!-- no validation rules -->
  </wo>

  <wo class="WOImage">
    <binding name="framework" passthrough="NO" defaults="Frameworks"/>
    <binding name="mimeType" passthrough="NO" defaults="MIME Types"/>
    <binding name="key" passthrough="NO"/>
    <binding name="data" passthrough="NO"/>
    <binding name="src"/>
    <binding name="alt"/>
    <binding name="border"/>
    <binding name="filename" passthrough="NO" defaults="Resources"/>
    <binding name="otherTagString" passthrough="NO"/>

    <binding name="id" />
    <binding name="class" />
    <binding name="style" />

    <validation message="exactly one of 'data', 'filename', or 'src' must be bound">
      <count test="!=1">
        <bound name="filename"/>
        <bound name="src"/>
        <bound name="data"/>
      </count>
    </validation>

    <validation message="'filename' must be bound when 'framework' is bound">
      <and>
        <bound name="framework"/>
        <unbound name="filename"/>
      </and>
    </validation>

    <validation message="'mimeType' must be bound when 'data' is bound">
      <and>
        <bound name="data"/>
        <unbound name="mimeType"/>
      </and>
    </validation>
  </wo>

  <wo class="WOQuickTime">
    <binding name="height" passthrough="NO" required="YES"/>
    <binding name="fov" passthrough="NO"/>
    <binding name="playEveryFrame" passthrough="NO" defaults="YES/NO"/>
    <binding name="href" passthrough="NO"/>
    <binding name="hotspotList" passthrough="NO"/>
    <binding name="autoplay" passthrough="NO" defaults="YES/NO"/>
    <binding name="prefixHost" passthrough="NO"/>
    <binding name="hidden" passthrough="NO"/>
    <binding name="bgcolor" passthrough="NO"/>
    <binding name="pageName" passthrough="NO" defaults="Page Names"/>
    <binding name="src" passthrough="NO"/>
    <binding name="volume" passthrough="NO"/>
    <binding name="cache" passthrough="NO" defaults="YES/NO"/>
    <binding name="framework" passthrough="NO" defaults="Frameworks"/>
    <binding name="pluginsPage" passthrough="NO"/>
    <binding name="pan" passthrough="NO"/>
    <binding name="tilt" passthrough="NO"/>
    <binding name="selection" passthrough="NO"/>
    <binding name="controller" passthrough="NO" defaults="YES/NO"/>
    <binding name="target" passthrough="NO"/>
    <binding name="node" passthrough="NO"/>
    <binding name="filename" passthrough="NO" defaults="Resources"/>
    <binding name="width" passthrough="NO" required="YES"/>
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="correction" passthrough="NO"/>
    <binding name="qtnextList" passthrough="NO"/>
    <binding name="qtnextAction" passthrough="NO"/>

    <!-- no validation rules -->
  </wo>

  <wo class="WOResetButton">
    <binding name="otherTagString" passthrough="NO"/>
    <binding name="value"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <!-- no validation rules -->
  </wo>

  <wo class="WORadioButtonList">
    <binding name="selection" passthrough="NO" settable="YES"/>
    <binding name="index" passthrough="NO"/>
    <binding name="suffix" passthrough="NO"/>
    <binding name="displayString" passthrough="NO"/>
    <binding name="disabled" passthrough="NO" defaults="YES/NO"/>
    <binding name="escapeHTML" passthrough="NO" defaults="YES/NO"/>
    <binding name="name" passthrough="NO"/>
    <binding name="prefix" passthrough="NO"/>
    <binding name="item" passthrough="NO"/>
    <binding name="value" passthrough="NO"/>
    <binding name="list" passthrough="NO" required="YES"/>

    <validation message="'list' must not be a constant">
      <and>
        <bound name="list"/>
        <ungettable name="list"/>
      </and>
    </validation>

    <validation message="'item' must not be a constant if 'displayString' is present">
      <and>
        <bound name="value"/>
        <or>
          <unbound name="item"/>
          <unsettable name="item"/>
        </or>
      </and>
    </validation>
  </wo>


  <wo class="WOVBScript">
    <binding name="hideInComment" passthrough="NO" defaults="YES/NO"/>
    <binding name="scriptSource" passthrough="NO"/>
    <binding name="scriptString" passthrough="NO"/>
    <binding name="scriptFile" passthrough="NO"/>
    <binding name="otherTagString" passthrough="NO"/>

    <validation message="one of 'scriptFile', 'scriptSource', or 'scriptString' must be bound">
      <count test="!=1">
        <bound name="scriptFile"/>
        <bound name="scriptSource"/>
        <bound name="scriptString"/>
      </count>
    </validation>
  </wo>

  <wo class="WOIFrame">
    <binding name="align"/>
    <binding name="frameborder" defaults="Boolean"/>
    <binding name="height"/>
    <binding name="longdesc"/>
    <binding name="marginheight"/>
    <binding name="marginwidth"/>
    <binding name="pageName" passthrough="NO" defaults="Page Names"/>
    <binding name="scrolling" defaults="Boolean"/>
    <binding name="src"/>
    <binding name="value" passthrough="NO"/>
    <binding name="width"/>

    <binding name="id" />
    <binding name="name" />
    <binding name="class" />
    <binding name="style" />

    <validation message="either 'pageName', or one or both of 'src' or 'value' may be bound">
      <count test="!=1">
        <bound name="pageName"/>
        <or>
          <bound name="src"/>
          <bound name="value"/>
        </or>
      </count>
    </validation>
  </wo>

  <wo class="WOActionURL">
    <binding name="queryDictionary" passthrough="NO"/>
    <binding name="actionClass" passthrough="NO" defaults="Direct Action Classes"/>
    <binding name="directActionName" passthrough="NO" defaults="Direct Actions"/>
    <binding name="pageName" passthrough="NO" defaults="Page Names"/>
    <binding name="action" passthrough="NO" defaults="Actions"/>
    <binding name="fragmentIdentifier" passthrough="NO"/>
    <binding name="secure" passthrough="NO" defaults="YES/NO"/>

    <validation message="either one of 'action', or 'pageName' may be bound, or either or both of 'actionClass' and 'directActionName' may be bound">
      <count test="!=1">
        <bound name="action"/>
        <bound name="pageName"/>
        <or>
          <bound name="actionClass"/>
          <bound name="directActionName"/>
        </or>
      </count>
    </validation>
  </wo>

  <wo class="WOXMLNode" wocomponentcontent = "true">
    <binding name="elementName" passthrough="NO" required="YES"/>

    <!-- no validation rules -->
  </wo>

</wodefinitions>
