<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers">
  <xsd:element name="content.get">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Gets all child content of a record based on area.

The elements are already rendered, they just need to be output.

### Example: Render all child elements with a border

`fluidcontent` element with one column of child elements.
Each element gets a red border:

    <f:section name="Configuration">
     <flux:grid>
      <flux:grid.row>
       <flux:grid.column name="teaser" colPos="0"/>
      </flux:grid.row>
     </flux:grid>
    </f:section>

    <f:section name="Main">
     <f:for each="{flux:content.get(area:'teaser')}" as="element">
      <div style="border: 1px solid red">
       <f:format.raw>{element}</f:format.raw>
      </div>
     </f:for>
    </f:section>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="area" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name or "colPos" value of the content area to render]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="limit" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional limit to the number of content elements to render]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="offset" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional offset to the limit]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="order" default="'sorting'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional sort order of content elements - RAND() supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="sortDirection" default="'ASC'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional sort direction of content elements]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="as" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Variable name to register, then render child content and insert all results as an array of records]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="loadRegister" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[List of LOAD_REGISTER variable]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="render" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional returning variable as original table rows]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="hideUntranslated" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Exclude untranslated records]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="content.render">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Renders all child content of a record based on the area name.

The `area` is the `name` attribute of the `<grid.column>` that shall
be rendered.

### Example: Render all child elements of one grid column

`fluidcontent` element with one column of child elements:

    <f:section name="Configuration">
     <flux:grid>
      <flux:grid.row>
       <flux:grid.column name="teaser" colPos="0"/>
      </flux:grid.row>
     </flux:grid>
    </f:section>

    <f:section name="Main">
     <div style="border: 1px solid red">
      <flux:content.render area="teaser"/>
     </div>
    </f:section>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="area" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name or "colPos" value of the content area to render]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="limit" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional limit to the number of content elements to render]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="offset" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional offset to the limit]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="order" default="'sorting'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional sort order of content elements - RAND() supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="sortDirection" default="'ASC'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional sort direction of content elements]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="as" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Variable name to register, then render child content and insert all results as an array of records]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="loadRegister" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[List of LOAD_REGISTER variable]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="render" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional returning variable as original table rows]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="hideUntranslated" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Exclude untranslated records]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field">
    <xsd:annotation>
      <xsd:documentation><![CDATA[FlexForm field ViewHelper

Defines a single field data structure.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="type" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[TCA field type]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="description" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field description]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set to FALSE if field is not an "exclude" field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[TCA "config" array]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="onChange" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[TCA onChange instruction]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.checkbox">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Checkbox FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.controllerActions">
    <xsd:annotation>
      <xsd:documentation><![CDATA[ControllerActions ViewHelper

Renders a FlexForm select field with options fetched from
requested extensionName/pluginName and other settings.

There are three basic ways of adding selection options:

- You can use the "extensionName" and "pluginName" to render all
  possible actions from an Extbase plugin that you've defined. It
  doesn't have to be your own plugin - if for example you are
  rendering actions from EXT:news or another through your own plugin.
- Or you can use the "actions" argument which is an array:
  {ControllerName: 'action1,action2,action3', OtherControllerName: 'action1'}
- And you can extend any of the two methods above with the "subActions"
  parameter, which allows you to extend the allowed actions whenever
  the specified combination of ControllerName + actionName is encountered.
  Example:       actions="{ControllerName: 'action1,action2'}"
                 subActions="{ControllerName: {action1: 'action3,action4'}}"
  Gives options: ControllerName->action1,action3,action4 with LLL values based on "action1"
                 ControllerName->action2 with LLL values based on "action2"
  By default Flux will create one option per action when reading
  Controller actions - using "subActions" it becomes possible to add
  additional actions to the list of allowed actions that the option
  will contain, as opposed to having only one action per option.

And there are a few ways to limit the options that are displayed:

- You can use "excludeActions" to specify an array in the same
  syntax used by the "actions" argument, these are then excluded.
- You can specifiy the "controllerName" argument in which case
  only actions from that Controller are displayed.

And there are a couple of ways to define/resolve labels for actions:

- You can add an LLL label in your locallang_db file:
  lowercasepluginname.lowercasecontrollername.actionfunctionname
  example index: myext.articlecontroller.show
- You can do nothing, in which case the very first line of
  the PHP doc-comment of each action method is used. This value can
  even be an LLL:file reference (in case you don't want to use the
  pattern above - but beware this is somewhat expensive processing)
- Or you can do nothing at all, not even add a doc comment, in which
  case the Controller->action syntax is used instead.

Marking actions that have required arguments (which cause errors if
rendered on a page that is accessible through a traditional menu) is
possible but is deactivated for LLL labels; if you use LLL labels
and your action requires an argument, be user friendly and note so
in the LLL label or docs as applies.

Lastly, you can set a custom name for the field in which case the
value does not trigger the Extbase SwitchableControllerActions feature
but instead works as any other Flux FlexForm field would.

To use the field just place it in your Flux form (but in almost all
cases leave out the "name" argument which is required on all other
field types at the time of writing this). Where the field is placed
is not important; the order and the sheet location don't matter.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="'switchableControllerActions'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional, full list of items to display - note: if used, this overrides any automatic option filling!]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="renderType" default="'selectSingle'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Rendering type as applies in FormEngine/TCA]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showIconTable" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE shows the option icons as table beneath the select]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="controllerExtensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the Extbase extension that contains the Controller to parse, ex. MyExtension. In vendor based extensions use dot, ex. Vendor.MyExtension]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="pluginName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the Extbase plugin that contains Controller definitions to parse, ex. MyPluginName]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="controllerName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional extra limiting of actions displayed - if used, field only displays actions for this controller name - ex Article(Controller) or FrontendUser(Controller) - the Controller part is implied]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="actions" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Array of "ControllerName" => "csv,of,actions" which are allowed. If used, does not require the use of an ExtensionName and PluginName (will use the one specified in your current plugin automatically)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="excludeActions" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Array of "ControllerName" => "csv,of,actions" which must be excluded]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="prefixOnRequiredArguments" default="'*'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[A short string denoting that the method takes arguments, ex * (which should then be explained in the documentation for your extension about how to setup your plugins]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="disableLocalLanguageLabels" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, disables LLL label usage and just uses the class comment or Controller->action syntax]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localLanguageFileRelativePath" default="'/Resources/Private/Language/locallang_db.xml'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Relative (from extension $extensionName) path to locallang file containing the action method labels]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="subActions" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Array of sub actions {ControllerName: {list: 'update,delete'}, OtherController: {new: 'create'}} which ' .
           'are also allowed but not presented as options when the mapped action is selected (in example: if ' .
           'ControllerName->list is selected, ControllerName->update and ControllerName->delete are allowed - but ' .
           'cannot be selected).]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="separator" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Separator string (glue) for Controller->action values, defaults to "->". Empty values result in default being used.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.custom">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Custom FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="userFunc" default="'FluidTYPO3\\Flux\\UserFunction\\HtmlOutput-&gt;renderField'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[User function to render the Closure built by this ViewHelper]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="renderType" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Render type (TCA renderType) - required on TYPO3 9.5 and above. Render type must be registered as FormEngine node type. See https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/FormEngine/Rendering/Index.html]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="arguments" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional array of arguments to pass to the UserFunction building this field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.dateTime">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Input FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.file">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Group (select supertype) FlexForm field ViewHelper, subtype "file"

### Select and render an image

    <flux:field.file name="settings.image" allowed="jpg,png,svg" showThumbnails="1" />

Then use `<f:image>` to render the image in the frontend:

    <f:image src="{settings.image}"/>

`alt` and `title` tags are not loaded from the file's meta data record.
Use `<flux:field.inline.fal>` if you want this feature.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxSize" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maximum file size allowed in KB]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="allowed" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Defines a list of file types allowed in this field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="disallowed" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Defines a list of file types NOT allowed in this field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="uploadFolder" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Upload folder to use for copied/directly uploaded files]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showThumbnails" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, displays thumbnails for selected values]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="useFalRelation" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[use a fal relation instead of a simple file path]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="internalType" default="'file_reference'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Internal type (TCA internal_type) to use for the field. Defaults to `file_reference` but can be set to `file` to support file uploading]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.inline">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Inline-style FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="table" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Define foreign table name to turn selector into a record selector for that table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="condition" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Condition to use when selecting from "foreignTable", supports FlexForm `foreign_table_where` markers]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="mm" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of MM table to use for record selection]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The `foreign_field` is the field of the child record pointing to the parent record. This defines where to store the uid of the parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, it overrides the label set in `TCA[foreign_table]['ctrl']['label']` for the inline-view.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSelector" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[A selector is used to show all possible child records that could be used to create a relation with the parent record. It will be rendered as a multi-select-box. On clicking on an item inside the selector a new relation is created. The `foreign_selector` points to a field of the `foreign_table` that is responsible for providing a selector-box - this field on the `foreign_table` usually has the type "select" and also has a `foreign_table` defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field on the child record (or on the intermediate table) that stores the manual sorting information.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignDefaultSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If a fieldname for `foreign_sortby` is defined, then this is ignored. Otherwise this is used as the "ORDER BY" statement to sort the records in the table when listed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignTableField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The field of the child record pointing to the parent record. This defines where to store the table name of the parent record. On setting this configuration key together with `foreign_field`, the child record knows what its parent record is - so the child record could also be used on other parent tables.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignUnique" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field which must be uniue for all children of a parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[In case of bidirectional symmetric relations, this defines in which field on the foreign table the uid of the "other" parent is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, this overrides the default label of the selected `symmetric_field`.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Works like `foreign_sortby`, but defines the field on `foreign_table` where the "other" sort order is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localizationMode" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set whether children can be localizable ('select') or just inherit from default language ('keep').]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="disableMovingChildrenWithParent" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Disables that child records get moved along with their parent records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showThumbs" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, adds thumbnail display when editing in BE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="matchFields" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[When using manyToMany you can provide an additional array of field=>value pairs that must match in the relation table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="oppositeField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the opposite field related to a proper mm relation]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="collapseAll" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If true, all child records are shown as collapsed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="expandSingle" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show only one expanded record at any time. If a new record is expanded, all others are collapsed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="newRecordLinkAddTitle" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Add the foreign table's title to the 'Add new' link (ie. 'Add new (sometable)')]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="newRecordLinkPosition" default="'top'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Where to show 'Add new' link. Can be 'top', 'bottom', 'both' or 'none'.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="useCombination" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[For use on bidirectional relations using an intermediary table. In combinations, it's possible to edit '
           . 'attributes and the related child record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="useSortable" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Allow manual sorting of records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showPossibleLocalizationRecords" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show unlocalized records which are in the original language, but not yet localized.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showRemovedLocalizationRecords" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show records which were once localized but do not exist in the original language anymore.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showAllLocalizationLink" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show the 'localize all records' link to fetch untranslated records from the original language.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showSynchronizationLink" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Defines whether to show a 'synchronize' link to update to a 1:1 translation with the original language.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="enabledControls" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Associative array with the keys 'info', 'new', 'dragdrop', 'sort', 'hide', delete' and 'localize'. '
           . 'Set either one to TRUE or FALSE to show or hide it.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="headerThumbnail" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Associative array with header thumbnail.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="foreignMatchFields" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The fields and values of the child record which have to match. For FAL the field/key is "fieldname" and the value has to be defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="foreignTypes" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the "types" TCA array of the target table with this array (beware! must be specified fully in order to work!). Expects an array of arrays; indexed by type number - each array containing for example a "showitem" CSV list value of field names to be shown when inline-editing the related record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="levelLinksPosition" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Level links position.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.inline.fal">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Creates a FAL IRRE field

To get the file references, assigned with that field in a flux form, you will have to use EXT:vhs but there are
two different ViewHelpers for fluidpages templates and fluidcontent elements.

Example how to get the first file reference from a fluidcontent element, for the flux field named "settings.files":

    {v:content.resources.fal(field: 'settings.files')
        -> v:iterator.first()
        -> v:variable.set(name: 'settings.files')}

And now the example how to get the first file reference from a fluidpages template, for the flux field
named "settings.files":

    {v:page.resources.fal(field: 'settings.files')
        -> v:iterator.first()
        -> v:variable.set(name: 'settings.files')}

### Usage warning

Due to [TYPO3 core bug #71239](https://forge.typo3.org/issues/71239), using
FAL references within sections (`<flux:form.section>`) in content elements
or within the page configuration does not work.

When choosing a file in one section element, you will see it in all sections.
When choosing a file in a page configuration, it will be visible in the subpages
configuration, too.

This issue will most likely not be fixed before TYPO3 8, so do not use it.

Alternatively, you could use `<flux:field.file>`.

### Selecting and rendering an image

#### Selecting a single image

    <flux:field.inline.fal name="settings.image" required="1" maxItems="1" minItems="1"/>

#### Define crop variants

    <flux:field.inline.fal name="settings.slides" required="1" maxItems="10" minItems="1" cropVariants="{
      default: {
        title: 'Default',
        allowedAspectRatios: {
          default: {
            title: '1200:450',
            value: '2.6666666666'
          }
        }
      }
    }"/>

The crop configuration can now be passed to the image viewhelper:

    <f:section name="Main">
      <f:for each="{v:content.resources.fal(field: 'settings.slides')}" as="image" iteration="iterator">
        <f:image src="{image.uid}" height="300" class="leb-pic" crop="{image.crop}" cropVariant="default"/>
      </f:for>
    </f:section>

#### Rendering the image

    {v:content.resources.fal(field: 'settings.image') -> v:iterator.first() -> v:variable.set(name: 'image')}
    <f:image treatIdAsReference="1" src="{image.uid}" title="{image.title}" alt="{image.alternative}"/><br/>

#### Rendering multiple images

    <f:for each="{v:content.resources.fal(field: 'settings.image')}" as="image">
        <f:image treatIdAsReference="1" src="{image.uid}" title="{image.title}" alt="{image.alternative}"/><br/>
    </f:for>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="table" default="'sys_file_reference'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Define foreign table name to turn selector into a record selector for that table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="condition" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Condition to use when selecting from "foreignTable", supports FlexForm `foreign_table_where` markers]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="mm" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of MM table to use for record selection]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignField" default="'uid_foreign'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The foreign_field is the field of the child record pointing to the parent record. This defines where to store the uid of the parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignLabel" default="'uid_local'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, it overrides the label set in TCA[foreign_table]['ctrl']['label'] for the inline-view.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSelector" default="'uid_local'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[A selector is used to show all possible child records that could be used to create a relation with the parent record. It will be rendered as a multi-select-box. On clicking on an item inside the selector a new relation is created. The foreign_selector points to a field of the foreign_table that is responsible for providing a selector-box  this field on the foreign_table usually has the type "select" and also has a "foreign_table" defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSortby" default="'sorting_foreign'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field on the child record (or on the intermediate table) that stores the manual sorting information.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignDefaultSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If a fieldname for `foreign_sortby` is defined, then this is ignored. Otherwise this is used as the "ORDER BY" statement to sort the records in the table when listed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignTableField" default="'tablenames'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The field of the child record pointing to the parent record. This defines where to store the table name of the parent record. On setting this configuration key together with foreign_field, the child record knows what its parent record is - so the child record could also be used on other parent tables.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignUnique" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field which must be uniue for all children of a parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[In case of bidirectional symmetric relations, this defines in which field on the foreign table the uid of the "other" parent is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, this overrides the default label of the selected `symmetric_field`.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Works like `foreign_sortby`, but defines the field on `foreign_table` where the "other" sort order is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localizationMode" default="'select'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set whether children can be localizable ('select') or just inherit from default language ('keep').]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="disableMovingChildrenWithParent" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Disables that child records get moved along with their parent records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showThumbs" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, adds thumbnail display when editing in BE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="matchFields" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[When using manyToMany you can provide an additional array of field=>value pairs that must match in the relation table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="oppositeField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the opposite field related to a proper mm relation]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="collapseAll" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If true, all child records are shown as collapsed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="expandSingle" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show only one expanded record at any time. If a new record is expanded, all others are collapsed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="newRecordLinkAddTitle" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Add the foreign table's title to the 'Add new' link (ie. 'Add new (sometable)')]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="newRecordLinkPosition" default="'top'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Where to show 'Add new' link. Can be 'top', 'bottom', 'both' or 'none'.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="useCombination" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[For use on bidirectional relations using an intermediary table. In combinations, it's possible to edit '
           . 'attributes and the related child record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="useSortable" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Allow manual sorting of records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showPossibleLocalizationRecords" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show unlocalized records which are in the original language, but not yet localized.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showRemovedLocalizationRecords" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show records which were once localized but do not exist in the original language anymore.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showAllLocalizationLink" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Show the 'localize all records' link to fetch untranslated records from the original language.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showSynchronizationLink" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Defines whether to show a 'synchronize' link to update to a 1:1 translation with the original language.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="enabledControls" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Associative array with the keys 'info', 'new', 'dragdrop', 'sort', 'hide', delete' and 'localize'. '
           . 'Set either one to TRUE or FALSE to show or hide it.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="headerThumbnail" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Associative array with header thumbnail.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="foreignMatchFields" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The fields and values of the child record which have to match. For FAL the field/key is "fieldname" and the value has to be defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="foreignTypes" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the "types" TCA array of the target table with this array (beware! must be specified fully in order to work!). Expects an array of arrays; indexed by type number - each array containing for example a "showitem" CSV list value of field names to be shown when inline-editing the related record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="levelLinksPosition" default="'both'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Level links position.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="allowedExtensions" default="''">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Allowed File Extensions .]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="disallowedExtensions" default="''">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Disallowed File Extensions .]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="createNewRelationLinkTitle" default="'LLL:EXT:lang/locallang_core.xlf:cm.createNewRelation'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Override label of "Create new relation" button.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="cropVariants" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Add one or multiple crop variants for uploaded images]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.input">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Input FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="eval" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="32">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxCharacters" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maximum number of characters allowed]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minimum" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum value for integer type fields]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maximum" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maximum value for integer type fields]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="placeholder" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Placeholder text which vanishes if field is filled and/or field is focused]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.multiRelation">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Select one or more database records from several tables.

In comparison to ``RelationViewHelper``, only the list with selected
items is visible on the left.
The right side contains a "browse" button that opens a popup.

Related: ``RelationViewHelper``.

### Example: Select from multiple tables

Select pages and content elements:

    <flux:field.multiRelation name="settings.records"
                              table="pages,tt_content"
                              maxItems="5" />

### Example: Content element selector with autocomplete

Add a wizard to search for content elements, instead of opening a popup:

    <flux:field.multiRelation name="settings.elements"
                              table="tt_content"
                              maxItems="5">
        <flux:wizard.suggest />
    </flux:field.multiRelation>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="table" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Define foreign table name to turn selector into a record selector for that table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="condition" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Condition to use when selecting from "foreignTable", supports FlexForm `foreign_table_where` markers]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="mm" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of MM table to use for record selection]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The `foreign_field` is the field of the child record pointing to the parent record. This defines where to store the uid of the parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, it overrides the label set in `TCA[foreign_table]['ctrl']['label']` for the inline-view.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSelector" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[A selector is used to show all possible child records that could be used to create a relation with the parent record. It will be rendered as a multi-select-box. On clicking on an item inside the selector a new relation is created. The `foreign_selector` points to a field of the `foreign_table` that is responsible for providing a selector-box - this field on the `foreign_table` usually has the type "select" and also has a `foreign_table` defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field on the child record (or on the intermediate table) that stores the manual sorting information.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignDefaultSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If a fieldname for `foreign_sortby` is defined, then this is ignored. Otherwise this is used as the "ORDER BY" statement to sort the records in the table when listed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignTableField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The field of the child record pointing to the parent record. This defines where to store the table name of the parent record. On setting this configuration key together with `foreign_field`, the child record knows what its parent record is - so the child record could also be used on other parent tables.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignUnique" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field which must be uniue for all children of a parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[In case of bidirectional symmetric relations, this defines in which field on the foreign table the uid of the "other" parent is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, this overrides the default label of the selected `symmetric_field`.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Works like `foreign_sortby`, but defines the field on `foreign_table` where the "other" sort order is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localizationMode" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set whether children can be localizable ('select') or just inherit from default language ('keep').]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="disableMovingChildrenWithParent" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Disables that child records get moved along with their parent records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showThumbs" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, adds thumbnail display when editing in BE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="matchFields" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[When using manyToMany you can provide an additional array of field=>value pairs that must match in the relation table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="oppositeField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the opposite field related to a proper mm relation]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.none">
    <xsd:annotation>
      <xsd:documentation><![CDATA[None field ViewHelper

Makes a read-only component which supports a default value
but which cannot be edited.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.radio">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Radio FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="renderType" default="'selectSingle'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Rendering type as applies in FormEngine/TCA]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showIconTable" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE shows the option icons as table beneath the select]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.relation">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Select one or multiple database records from one table.

Features a two-list style that shows all selectable items
in a list on the right side,
and all selected items in a list on the left side.

Related: ``MultiRelationViewHelper``.

### Example: Select a content element

If put inside a fluidpages "Configuration" section, the following code
allows selecting a content element from the current page:

    <flux:field.relation name="settings.content"
                         table="tt_content"
                         condition="AND tt_content.pid = ###THIS_UID###" />

A list of allowed markers for the `condition` can be found in the documentation at:

https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Type/Select.html#foreign-table-where
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="table" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Define foreign table name to turn selector into a record selector for that table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="condition" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Condition to use when selecting from "foreignTable", supports FlexForm `foreign_table_where` markers]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="mm" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of MM table to use for record selection]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The `foreign_field` is the field of the child record pointing to the parent record. This defines where to store the uid of the parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, it overrides the label set in `TCA[foreign_table]['ctrl']['label']` for the inline-view.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSelector" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[A selector is used to show all possible child records that could be used to create a relation with the parent record. It will be rendered as a multi-select-box. On clicking on an item inside the selector a new relation is created. The `foreign_selector` points to a field of the `foreign_table` that is responsible for providing a selector-box - this field on the `foreign_table` usually has the type "select" and also has a `foreign_table` defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field on the child record (or on the intermediate table) that stores the manual sorting information.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignDefaultSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If a fieldname for `foreign_sortby` is defined, then this is ignored. Otherwise this is used as the "ORDER BY" statement to sort the records in the table when listed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignTableField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The field of the child record pointing to the parent record. This defines where to store the table name of the parent record. On setting this configuration key together with `foreign_field`, the child record knows what its parent record is - so the child record could also be used on other parent tables.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignUnique" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field which must be uniue for all children of a parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[In case of bidirectional symmetric relations, this defines in which field on the foreign table the uid of the "other" parent is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, this overrides the default label of the selected `symmetric_field`.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Works like `foreign_sortby`, but defines the field on `foreign_table` where the "other" sort order is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localizationMode" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set whether children can be localizable ('select') or just inherit from default language ('keep').]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="disableMovingChildrenWithParent" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Disables that child records get moved along with their parent records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showThumbs" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, adds thumbnail display when editing in BE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="matchFields" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[When using manyToMany you can provide an additional array of field=>value pairs that must match in the relation table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="oppositeField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the opposite field related to a proper mm relation]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.select">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Select-type FlexForm field ViewHelper

### Choosing one of two items

Items are given in CSV mode:

    <flux:field.select name="settings.position" items="left,right" default="left"/>

### Items with labels

If you want to display labels that are different than the values itself,
use an object in `items`:

     <flux:field.select name="settings.position"
                        items="{
                               0:{0:'On the left side',1:'left'},
                               1:{0:'On the right side',1:'right'}
                               }"
                       />

You can translate those labels by putting a LLL reference in the first property:

    LLL:EXT:extname/Resources/Private/Language/locallang.xlf:flux.example.fields.items.foo'

### Links

* [TCA Reference: type "select"](https://docs.typo3.org/typo3cms/TCAReference/stable/Reference/Columns/Select/)
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="renderType" default="'selectSingle'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Rendering type as applies in FormEngine/TCA]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showIconTable" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE shows the option icons as table beneath the select]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.text">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Textarea FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="cols" default="85">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Number of columns in editor]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="rows" default="10">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Number of rows in editor]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="defaultExtras" default="''">
        <xsd:annotation>
          <xsd:documentation><![CDATA[DEPRECATED, IGNORED - has no function on TYPO3 8.7+. FlexForm-syntax "defaultExtras" definition, example: "richtext[*]:rte_transform[mode=ts_css]"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enableRichText" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Enable the richtext editor (RTE)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="renderType" default="''">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Render type allows you to modify the behaviour of text field. At the moment only t3editor and none (works as disabled) are supported but you can create your own. More information: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Text/Index.html#rendertype]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="format" default="''">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Format is used with renderType and, at the moment, is just useful if renderType is equals to t3editor. At the moment possible values are:  html, typoscript, javascript, css, xml, html, php, sparql, mixed. More information: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Text/Index.html#format]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="richtextConfiguration" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Specifies which configuration to use in combination with EXT:rte_ckeditor.If none is given, PageTSconfig "RTE.tx_flux.preset" and "RTE.default.preset" are used.More information: https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Properties/TextRichtextConfiugration.html]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="placeholder" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Placeholder text which vanishes if field is filled and/or field is focused]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.tree">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Tree (select supertype) FlexForm field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="table" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Define foreign table name to turn selector into a record selector for that table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="condition" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Condition to use when selecting from "foreignTable", supports FlexForm `foreign_table_where` markers]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="mm" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of MM table to use for record selection]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The `foreign_field` is the field of the child record pointing to the parent record. This defines where to store the uid of the parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, it overrides the label set in `TCA[foreign_table]['ctrl']['label']` for the inline-view.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSelector" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[A selector is used to show all possible child records that could be used to create a relation with the parent record. It will be rendered as a multi-select-box. On clicking on an item inside the selector a new relation is created. The `foreign_selector` points to a field of the `foreign_table` that is responsible for providing a selector-box - this field on the `foreign_table` usually has the type "select" and also has a `foreign_table` defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field on the child record (or on the intermediate table) that stores the manual sorting information.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignDefaultSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If a fieldname for `foreign_sortby` is defined, then this is ignored. Otherwise this is used as the "ORDER BY" statement to sort the records in the table when listed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignTableField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The field of the child record pointing to the parent record. This defines where to store the table name of the parent record. On setting this configuration key together with `foreign_field`, the child record knows what its parent record is - so the child record could also be used on other parent tables.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignUnique" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field which must be uniue for all children of a parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[In case of bidirectional symmetric relations, this defines in which field on the foreign table the uid of the "other" parent is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, this overrides the default label of the selected `symmetric_field`.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Works like `foreign_sortby`, but defines the field on `foreign_table` where the "other" sort order is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localizationMode" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set whether children can be localizable ('select') or just inherit from default language ('keep').]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="disableMovingChildrenWithParent" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Disables that child records get moved along with their parent records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showThumbs" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, adds thumbnail display when editing in BE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="matchFields" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[When using manyToMany you can provide an additional array of field=>value pairs that must match in the relation table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="oppositeField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the opposite field related to a proper mm relation]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="parentField" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field containing UID of parent record]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="allowRecursiveMode" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the selection of a node will trigger the selection of all child nodes too (recursively)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="expandAll" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, expands all branches]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="nonSelectableLevels" default="'0'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Comma-separated list of levels that will not be selectable, by default the root node (which is "0") cannot be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxLevels" default="2">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The maximal amount of levels to be rendered (can be used to stop possible recursions)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showHeader" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, displays tree header]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="width" default="280">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Width of TreeView component]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.tree.category">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Tree preset for sys_category
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="validate" default="'trim'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[FlexForm-type validation configuration for this input]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="size" default="10">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Size of the selector box]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="multiple" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows selecting the same value multiple times]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="minItems" default="0">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Minimum required number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxItems" default="30">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Maxium allowed number of items to be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default list style when maxItems > 1]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="selectedListStyle" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Overrides the default selected list style when maxItems > 1 and renderType is SelectSingle]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="items" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Items for the selector; array / CSV / Traversable / Query supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="emptyOption" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If not-FALSE, adds one empty option/value pair to the generated selector box and tries to use this property's value (cast to string) as label.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="translateCsvItems" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, attempts to resolve a LLL label for each value provided as CSV in "items" attribute using convention for lookup "$field.option.123" if given "123" as CSV item value. Field name is determined by normal Flux field name conventions]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="itemsProcFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Function for serving items. See TCA "select" field "itemsProcFunc" attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="table" default="'sys_category'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Define foreign table name to turn selector into a record selector for that table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="condition" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Condition to use when selecting from "foreignTable", supports FlexForm `foreign_table_where` markers]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="mm" default="'sys_category_record_mm'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of MM table to use for record selection]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The `foreign_field` is the field of the child record pointing to the parent record. This defines where to store the uid of the parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, it overrides the label set in `TCA[foreign_table]['ctrl']['label']` for the inline-view.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSelector" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[A selector is used to show all possible child records that could be used to create a relation with the parent record. It will be rendered as a multi-select-box. On clicking on an item inside the selector a new relation is created. The `foreign_selector` points to a field of the `foreign_table` that is responsible for providing a selector-box - this field on the `foreign_table` usually has the type "select" and also has a `foreign_table` defined.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field on the child record (or on the intermediate table) that stores the manual sorting information.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignDefaultSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If a fieldname for `foreign_sortby` is defined, then this is ignored. Otherwise this is used as the "ORDER BY" statement to sort the records in the table when listed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignTableField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The field of the child record pointing to the parent record. This defines where to store the table name of the parent record. On setting this configuration key together with `foreign_field`, the child record knows what its parent record is - so the child record could also be used on other parent tables.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="foreignUnique" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field which must be uniue for all children of a parent record.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricField" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[In case of bidirectional symmetric relations, this defines in which field on the foreign table the uid of the "other" parent is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricLabel" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If set, this overrides the default label of the selected `symmetric_field`.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="symmetricSortby" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Works like `foreign_sortby`, but defines the field on `foreign_table` where the "other" sort order is stored.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localizationMode" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set whether children can be localizable ('select') or just inherit from default language ('keep').]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="disableMovingChildrenWithParent" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Disables that child records get moved along with their parent records.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showThumbs" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, adds thumbnail display when editing in BE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="matchFields" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[When using manyToMany you can provide an additional array of field=>value pairs that must match in the relation table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="oppositeField" default="'items'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the opposite field related to a proper mm relation]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="parentField" default="'parent'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Field containing UID of parent record]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="allowRecursiveMode" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the selection of a node will trigger the selection of all child nodes too (recursively)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="expandAll" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, expands all branches]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="nonSelectableLevels" default="'0'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Comma-separated list of levels that will not be selectable, by default the root node (which is "0") cannot be selected]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="maxLevels" default="2">
        <xsd:annotation>
          <xsd:documentation><![CDATA[The maximal amount of levels to be rendered (can be used to stop possible recursions)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="showHeader" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, displays tree header]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="width" default="280">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Width of TreeView component]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="field.userFunc">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Flexform Userfunc field ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="default" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Default value for this attribute]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="native" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field will treated as a native TCA field (requiring a matching SQL column). If the "name" of this field is an already existing field, that original field will be replaced by this field. If the field is a new field (which doesn't already exist in TCA). You can control where this field visually appears in the editing form by specifying the "position" argument, which supports the same syntax as \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Note that when declaring a field as "native" it will no longer be rendered as part of the FlexForm where Flux fields are normally rendered.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="position" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Only applies if native=1. Specify where in the editing form this field should be, using the syntax of \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes (after:X before:X and replace:X). Additionally, allows you to specify a TCA sheet if you want this field to be positioned in a dedicated sheet. Examples: position="after:header", position="replace:header", position="after:header My Sheet"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="required" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this attribute must be filled when editing the FCE]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="exclude" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, this field becomes an "exclude field" (see TYPO3 documentation about this)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, disables the field in the FlexForm]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="requestUpdate" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the form is force-saved and reloaded when field value changes]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="displayCond" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional "Display Condition" (TCA style) for this particular field. See: https://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Index.html#displaycond]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="clear" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "clear value" checkbox is displayed next to the field which when checked, completely destroys the current field value all the way down to the stored XML value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="protect" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, a "protect value" checkbox is displayed next to the field which when checked, protects the value from being changed if the (normally inherited) field value is changed in a parent record. Has no effect if "inherit" is disabled on the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="config" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Raw TCA options - passed directly to "config" section of created field and overrides anything generated by the component itself. Can be used to provide options that Flux itself does not support, and can be used to pass root-level arguments for a "userFunc"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="userFunc" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[UserFunc to be called, example "MyExt\MyVendor\MySpecialClass->renderField". Ignored on TYPO3 9.5 and above - use renderType instead.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="renderType" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Render type (TCA renderType) - required on TYPO3 9.5 and above. Render type must be registered as FormEngine node type. See https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/FormEngine/Rendering/Index.html]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="arguments" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional array of arguments to pass to the UserFunction building this field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form">
    <xsd:annotation>
      <xsd:documentation><![CDATA[FlexForm configuration container ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="id" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Identifier of this Flexible Content Element, `/[a-z0-9]/i` allowed.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the form, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId", in scope of extension rendering the Flux form.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="description" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Short description of the purpose/function of this form]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="enabled" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If FALSE, features which use this form can elect to skip it. Respect for this flag depends on the feature using the form.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="options" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Custom options to be assigned to Form object - valid values depends on the. See docs of extension in which you use this feature. Can also be set using `flux:form.option` as child of `flux:form`.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="localLanguageFileRelativePath" default="'/Resources/Private/Language/locallang.xlf'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Relative (from extension) path to locallang file containing labels for the LLL values used in this form.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.container">
    <xsd:annotation>
      <xsd:documentation><![CDATA[### FlexForm Field Container element

Use around other Flux fields to make these fields nested visually
and in variable scopes (i.e. a field called "name" inside a palette
called "person" would end up with "person" being an array containing
the "name" property, rendered as {person.name} in Fluid.

The field grouping can be hidden or completely removed. In this regard
this element is a simpler version of the Section and Object logic.

#### Grouping elements with a container

    <flux:form.container name="settings.name" label="Name">
        <flux:field.input name="firstname" label="First name"/>
        <flux:field.input name="lastname" label="Last name"/>
    </flux:form.container>

#### Accessing values of grouped elements

    Name: {settings.name.firstname} {settings.name.lastname}
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the attribute, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.fields.foobar" based on field name, in scope of extension rendering the Flux form. If field is in an object, use "flux.fluxFormId.objects.objectname.foobar" where "foobar" is the name of the field.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.content">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Adds a content area to a source using Flux FlexForms

Only works to insert a single content area into your element.
To insert multiple content areas, use instead a full `flux:grid`
with your desired row and column structure; each column then
becomes a content area.

Using `flux:grid` after this ViewHelper in the same `flux:form`
will overwrite this ViewHelper.

Using this ViewHelper after `flux:grid` will cause this ViewHelper
to be ignored.

### Example of difference

    <flux:form id="myform">
        <!-- Creates a basic Grid with one row and one column, names
             the column "mycontent" and makes Flux use this Grid -->
        <flux:content name="mycontent" />
        <!-- Additional flux:content tags are completely ignored -->
    </flux:form>

    <flux:form id="myform">
        <!-- Creates a full, multi-column/row Grid -->
        <flux:grid>
            <flux:grid.row>
                <flux:grid.column name="mycontentA" colPos="0" />
                <flux:grid.column name="mycontentB" colPos="1" />
            </flux:grid.row>
            <flux:grid.row>
                <flux:grid.column name="mycontentC" colPos="2" colspan="2" />
            </flux:grid.row>
        </flux:grid>
        <!-- No use of flux:content is possible after this point -->
    </flux:form>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the content area, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for content area, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.columns.foobar" based on column name, in scope of extension rendering the Flux form.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.data">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Converts raw flexform xml into an associative array, and applies any
transformation that may be configured for fields/objects.

### Example: Fetch page configuration inside content element

Since the `page` variable is available in fluidcontent elements, we
can use it to access page configuration data:

    <flux:form.data table="pages" field="tx_fed_page_flexform" record="{page}" />

### Example: Check if page is accessible before loading data

Data of disabled and deleted pages cannot be loaded with flux:form.data
and lead to an TYPO3FluidFluidCoreViewHelperException.
To prevent this exception, check if the page is accessible by generating
a link to it:

    <f:if condition="{f:uri.page(pageUid: myUid)}">
        <flux:form.data table="pages" field="tx_fed_page_flexform" uid="{myUid}" as="pageSettings">
            ...
        </flux:form.data>
    </f:if>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="table" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of table that contains record with Flux field]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="field" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of Flux field in table]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="uid" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[UID of record to load (used if "record" attribute not used)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="record" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Record containing Flux field (used if "uid" attribute not used)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="as" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of variable to assign in tag content rendering]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.object">
    <xsd:annotation>
      <xsd:documentation><![CDATA[FlexForm field section object ViewHelper

Use this inside flux:form.section to name and divide the fields
into individual objects that can be inserted into the section.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the section object, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for section object, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.objects.foobar" based on object name, in scope of extension rendering the Flux form.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="transform" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Set this to transform your value to this type - integer, array (for csv values), float, DateTime, Vendor\MyExt\Domain\Model\Object or ObjectStorage with type hint. ]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="contentContainer" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, each object that is created of this type results in a content column of the same name, with an automatic colPos value.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.object.columnPosition">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Section object - automatic colPos field

Provides a field to designate the "colPos" value of
a section object, which is automatically maintained
and guaranteed uniqueness when editing the backend
form. Adding this field inside `<flux:field.object />`
renders a field that's not user editable which contains
a unique colPos value for each section object.

The colPos field is then associated with the section
object _and will not change even if the section object
is moved up or down in the section_.

This property can then be used in `<flux:grid.column />`
arguments if the grid columns are created by iterating
the section objects and creating a column for each.

Example
-------

      <flux:form id="sectionobjectasgrid" options="{static: 1}" extensionName="FluidTYPO3.TestProviderExtension">
          <flux:form.sheet name="options">
              <flux:form.section name="columns">
                  <flux:form.object name="column" label="Column">
                      <flux:form.object.columnPosition />
                  </flux:form.object>
              </flux:form.section>
          </flux:form.sheet>
      </flux:form>
      <flux:grid>
          <flux:grid.row>
              <f:for each="{columns}" as="columnObject">
                  <flux:grid.column colPos="{columnObject.column.colPos}" />
              </f:for>
          </flux:grid.row>
      </flux:grid>

Notes
-----

Please be aware that dynamic grid is NOT compatible
with the "static" option for `<flux:form />` - this
option must not be enabled; if it is, the grid will
not be rendered.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.option">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Form option ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="value" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Option value]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the option to be set]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.option.group">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Form group option ViewHelper

Defines a logical group name for the Flux form, which can
then be read by extensions supporting Flux forms. How the
setting gets used is specific to the extension reading the
Flux form - please consult that documentation to learn
if/how the extension supports this option.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="value" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the group]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.option.icon">
    <xsd:annotation>
      <xsd:documentation><![CDATA[### Icon option

Sets the `icon` option in the Flux form, which can then be read by
extensions using Flux forms. Consult the documentation of extensions
which use the `icon` setting to learn more about how icons are used.

``value`` needs to be the absolute path to the image file, e.g.
``/typo3conf/ext/myext/Resources/Public/Icons/Element.svg``.

#### Example

    <flux:form.option.icon value="/typo3conf/ext/myext/Resources/Public/Icons/Element.svg"/>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="value" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Path and name of the icon file]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.option.inheritanceMode">
    <xsd:annotation>
      <xsd:documentation><![CDATA[### Inheritance mode option

Control how this Form will handle inheritance (page context only).
There are two possible values of this option:

- restricted
- unrestricted

Note that the default (the mode which is used if you do NOT specify
the mode with this ViewHelper/option) is defined by the Flux extension
configuration. If you do not change the extension configuration then
the default behavior is "restricted". Any template that wants to use
a mode other than the default *MUST* specify the mode with this option.

When the option is set to "restricted" either by this ViewHelper or
by extension configuration, the inheritance behavior matches the
Flux behavior pre version 10.1.x, meaning that inheritance will only
happen if the parent (page) has selected the same Form (layout) as
the current page. As soon as a different Form is encountered in a
parent, the inheritance stops. In short: inheritance only works for
identical Forms.

Alternatively, when the option is set to "unrestricted", the above
constraint is removed and inheritance can happen for Forms which are
NOT the same.

This makes sense to use if you have different page templates which
use the same values (for example a shared set of fields) and you want
child pages to be able to inherit these values from parents even if
the child page has selected a different page layout.

#### Example

    <flux:form.option.inheritanceMode value="unrestricted" />
    (which is the same as:)
    <flux:form.option.inheritanceMode>unrestricted</flux:form.option.inheritanceMode>

Or:

    <flux:form.option.inheritanceMode value="restricted" />
    (which is the same as:)
    <flux:form.option.inheritanceMode>restricted</flux:form.option.inheritanceMode>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="value" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Mode of inheritance, either "restricted" or "unrestricted".]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.option.sorting">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Form sorting option ViewHelper
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:integer" name="value" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Sorting value of form (how this is applied depends on the implementation using the Form instance; see third-party feature documentation)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.option.static">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Form static caching option ViewHelper

Use this only when your Flux form is 100% static and
will work when cached.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:boolean" name="value" default="true">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Configures caching of the DS resulting from the form. Default when used is TRUE which enables caching]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.render">
    <xsd:annotation>
      <xsd:documentation><![CDATA[## Main form rendering ViewHelper

Use to render a Flux form as HTML.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:anySimpleType" name="form" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Form instance to render as HTML]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.section">
    <xsd:annotation>
      <xsd:documentation><![CDATA[FlexForm field section ViewHelper

#### Using a section to let a user add many elements

    <flux:form.section name="settings.numbers" label="Telephone numbers">
        <flux:form.object name="mobile" label="Mobile">
            <flux:field.input name="number"/>
        </flux:form.object>
        <flux:form.object name="landline" label="Landline">
            <flux:field.input name="number"/>
        </flux:form.object>
    </flux:form.section>

#### Reading section element values

    <f:for each="{settings.numbers}" as="obj" key="id">
        Number #{id}:
        <f:if condition="{obj.landline}">mobile, {obj.landline.number}</f:if>
        <f:if condition="{obj.mobile}">landline, {obj.mobile.number}</f:if>
        <br/>
    </f:for>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the attribute, FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for section, can be LLL: value. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.sections.foobar" based on section name, in scope of extension rendering the form.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inherit" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, the value for this particular field is inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:boolean" name="inheritEmpty" default="false">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If TRUE, allows empty values (specifically excluding the number zero!) to be inherited - if inheritance is enabled by the ConfigurationProvider]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="gridMode" default="'rows'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Defines how section objects which are marked as content containers, get rendered as a grid. Valid values are either "rows" or "columns". Default is to render as rows.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.sheet">
    <xsd:annotation>
      <xsd:documentation><![CDATA[FlexForm sheet ViewHelper

Groups FlexForm fields into sheets.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the group, used as FlexForm sheet name, must be FlexForm XML-valid tag name string]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Label for the field group - used as tab name in FlexForm. Optional - if not specified, Flux tries to detect an LLL label named "flux.fluxFormId.sheets.foobar" based on sheet name, in scope of extension rendering the Flux form.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="description" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional string or LLL reference with a desription of the purpose of the sheet]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="shortDescription" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional shorter version of description of purpose of the sheet, LLL reference supported]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="form.variable">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Sets an option in the Form instance
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:anySimpleType" name="value" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Value of the option]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="name" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Name of the option - valid values and their behaviours depend entirely on the consumer that will handle the Form instance]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="grid">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Grid container ViewHelper.

Use `<flux:grid.row>` with nested `<flux:grid.column>` tags
to define a tabular layout.

The grid is then rendered automatically in the preview section
of the content element, or as page columns if used in page templates.

For frontend rendering, use `flux:content.render`.

### Define Page and Content elements

Name is used to identify columns and fetch e.g. translations from XLF files.

    <flux:grid>
        <flux:grid.row>
            <flux:grid.column colPos="0" name="Main" colspan="3" style="width: 75%" />
            <flux:grid.column colPos="1" name="Secondary" colspan="1" style="width: 25%" />
        </flux:grid.row>
    </flux:grid>

#### Rendering

    <v:content.render column="0" />
    <v:content.render column="1" />
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="'grid'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of this grid - defaults to "grid"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional label for this grid - defaults to an LLL value (reported if it is missing)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="grid.column">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Flexform Grid Column ViewHelper

Used inside `<flux:grid.row>` tags.

Use the `colPos` attribute for grids in page and content elements.

See `<flux:grid>` for an example.

### Limit allowed elements

It is possible to limit the elements allowed in the column by setting
the `allowedContentTypes` variable:

    <flux:grid.column name="elements" colPos="0">
        <flux:form.variable name="allowedContentTypes" value="text,shortcut"/>
    </flux:grid.column>

The value is a comma-separated list of content type IDs; they can be found
in `tt_content.CType` column.

### Limit allowed fluid content elements

It is also possible to limit the allowed fluid content elements:

    <flux:grid.column name="elements" colPos="0">
        <flux:form.variable name="allowedContentTypes" value="extkey_vehicledetailssectionusedcarseal"/>
    </flux:grid.column>
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="'column'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Identifies your column and is used to fetch translations from XLF for example.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional column label, will be shown as column header.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="colPos" default="NULL" use="required">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Column number - between 0 and 99, should be unique.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="colspan" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Column span]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:integer" name="rowspan" default="1">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Row span]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="style" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Inline style to add when rendering the column]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template. Can also be set and/or overridden in tag content using `<flux:form.variable />`]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="grid.row">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Flexform Grid Row ViewHelper

Used inside `<flux:grid>` tags.
Usually contains `<flux:grid.column>` tags.

See `<flux:grid>` for an example.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="name" default="'row'">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional name of this row - defaults to "row"]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="label" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Optional label for this row - defaults to an LLL value (reported if it is missing)]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:anySimpleType" name="variables" default="array (&#10;)">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Freestyle variables which become assigned to the resulting Component - can then be read from that Component outside this Fluid template and in other templates using the Form object from this template]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute type="xsd:string" name="extensionName" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[If provided, enables overriding the extension context for this and all child nodes. The extension name is otherwise automatically detected from rendering context.]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="inline">
    <xsd:annotation>
      <xsd:documentation><![CDATA[Inline Fluid rendering ViewHelper

Renders Fluid code stored in a variable, which you normally would
have to render before assigning it to the view. Instead you can
do the following (note, extremely simplified use case):

     $view->assign('variable', 'value of my variable');
     $view->assign('code', 'My variable: {variable}');

And in the template:

     {code -> flux:inline()}

Which outputs:

     My variable: value of my variable

You can use this to pass smaller and dynamic pieces of Fluid code
to templates, as an alternative to creating new partial templates.
/]]></xsd:documentation>
    </xsd:annotation>
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute type="xsd:string" name="code" default="NULL">
        <xsd:annotation>
          <xsd:documentation><![CDATA[Fluid code to be rendered as if it were part of the template rendering it. Can be passed as inline argument or tag content]]></xsd:documentation>
        </xsd:annotation>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
