> For the complete documentation index, see [llms.txt](https://alex-robenko.gitbook.io/commsdsl-specification/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alex-robenko.gitbook.io/commsdsl-specification/fields.md).

# Fields

Any **field** can be defined as independent element inside the **\<fields>** child of the [\<schema>](/commsdsl-specification/schema_def.md) or a [namespace](/commsdsl-specification/namespaces.md).

```
<?xml version="1.0" encoding="UTF-8"?>
<schema ...>
    <fields>
        <int name="SomeField" type="uint8" />
        ...
    </fields>
</schema>
```

It can also be defined as a member of a message.

```
<?xml version="1.0" encoding="UTF-8"?>
<schema ...>
    <message name="SomeMessage" id="1">
        <int name="SomeField" type="uint8" />
        ...
    </message>
</schema>
```

Field that is defined as a child of **\<fields>** node of the [\<schema>](/commsdsl-specification/schema_def.md) or [\<ns>](/commsdsl-specification/namespaces.md) can be referenced by other fields to avoid duplication of the same definition.

```
<?xml version="1.0" encoding="UTF-8"?>
<schema ...>
    <ns name="ns1">
        <int name="SomeField" type="uint8" />
        <ref name="AliasToField" field="ns1.SomeField" />
    </ns>
    <message name="SomeMessage" id="1">
        <ref name="Mem1" field="ns1.SomeField"" />
        ...
    </message>
</schema>
```

The available fields are described in details in the sections to follow. They are:

* [\<enum>](/commsdsl-specification/fields/enum.md) - Enumeration field.
* [\<int>](/commsdsl-specification/fields/int.md) - Integral value field.
* [\<set>](/commsdsl-specification/fields/set.md) - Bitset (bitmask) field.
* [\<bitfield>](/commsdsl-specification/fields/bitfield.md) - Bitfield field.
* [\<bundle>](/commsdsl-specification/fields/bundle.md) - Bundle field.
* [\<string>](/commsdsl-specification/fields/string.md) - String field.
* [\<data>](/commsdsl-specification/fields/data.md) - Raw data field.
* [\<list>](/commsdsl-specification/fields/list.md) - List of other fields.
* [\<float>](/commsdsl-specification/fields/float.md) - Floating point value field.
* [\<ref>](/commsdsl-specification/fields/ref.md) - Reference to (alias of) other field.
* [\<optional>](/commsdsl-specification/fields/optional.md)- Optional field.
* [\<variant>](/commsdsl-specification/fields/variant.md)- Variant field.

All this fields have [common](/commsdsl-specification/fields/common.md) as well as their own specific set of properties.
