# schema-def

<schema-def> is used as part of the response to a query-schema command and to the DriverShim.getSchema() method. It specifies the schema for an application or eDirectory. It is also the top-level element of the XML stored in the DirXML-ApplicationSchema attribute of the DirXML-Driver object.

The distinguished name format for the application is specified by dn-format or dn-delims (but not both) and must be match what the source application actually uses.

One of the standard dn formats should be adequate for most applications but sometimes it may be necessary to specify a custom delimiter set. The eight (8) characters that make up the delimiter set are defined as follows:

1. Typed Name Boolean Flag: '0' means names are NOT typed, '1' means names are typed
2. Unicode No-Map Character Boolean Flag: '0' means don't output or interpret unmappable unicode characters as escaped hex digit strings, e.g.,\FEFF. The following unicode characters are not accepted by eDirectory: 0xfeff, 0xfffe, 0xfffd, and 0xffff.
3. Relative RDN Delimiter
4. RDN Delimiter
5. Name Divider
6. Name Value Delimiter
7. Wildcard Character
8. Escape Character

If RDN Delimiter and Relative RDN Delimiter are the same character, then the orientation of the name is root right, otherwise the orientation is root left.

If there are more than eight characters in the delimiter set, then the extra characters will all be considered to be characters that need to be escaped but will have no other special meaning within DirXML.

Example

>     <schema-def hierarchical="true">
>      <class-def class-name="Organization" container="true">
>       <attr-def attr-name="Name" case-sensitive="false" multi-valued="false" naming="true" read-only="false" required="false" type="string"/>
>       <attr-def attr-name="Object Path" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>       <attr-def attr-name="Unique Id" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>      </class-def>
>      <class-def class-name="Organizational Unit" container="true">
>       <attr-def attr-name="Name" case-sensitive="false" multi-valued="false" naming="true" read-only="false" required="false" type="string"/>
>       <attr-def attr-name="Object Path" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>       <attr-def attr-name="Unique Id" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>      </class-def>
>      <class-def class-name="User" container="false">
>       <attr-def attr-name="cn" case-sensitive="false" multi-valued="false" naming="true" read-only="false" required="true" type="string"/>
>       <attr-def attr-name="Surname" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="false" type="string"/>
>       <attr-def attr-name="Given Name" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="false" type="string"/>
>       <attr-def attr-name="Telephone Number" case-sensitive="false" multi-valued="true" naming="false" read-only="false" required="false" type="string"/>
>       <attr-def attr-name="Object Path" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>       <attr-def attr-name="Unique Id" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>      </class-def>
>      <class-def class-name="Bogus" container="false">
>       <attr-def attr-name="Whatever" case-sensitive="false" multi-valued="true" naming="true" read-only="false" required="false" type="string"/>
>       <attr-def attr-name="Object Path" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>       <attr-def attr-name="Unique Id" case-sensitive="false" multi-valued="false" naming="false" read-only="false" required="true" type="string"/>
>      </class-def>
>     </schema-def>

## 1. Allowed Content

> class-def
>   Schema class definition.
> operation-data
>   Operation additional custom data.

## 2. Attributes

> Attribute | Value(s) | Default Value
> --- | --- | ---
> application-name | CDATA Specifies the name of the application that uses the schema. | #IMPLIED
> dn-delims | CDATA The custom DN format used by the application. | #IMPLIED
> dn-format | dot | qualified-dot | slash | qualified-slash | ldap The DN format used by the application. | slash
> hierarchical | true | false Specifies whether or not the application stores its data in a hierarchical structure. | true

## 3. Content Rule

> (( class-def ) * , operation-data ? )

## 4. Parent Elements

> output
>   Results of events or commands.

Top Elements || All Elements || Tree