The XML that defines GCVs has a <definition> section. The GCV DTD is as follows:
<!ENTITY % Value-Type "string | boolean | integer | real | dn | enum | list | password-ref | dn-ref"> <!ENTITY % Dn-Type "ldap | slash | qualified-slash | dot | qualified-dot | custom"> <!ENTITY % Dn-Space "dirxml | application"> <!ENTITY % Boolean "true | false"> <!ELEMENT configuration-values (definitions)> <!ELEMENT definitions (definition | gcv-ref | header | group)*> <!-- FIXIT: one value, one description --> <!ELEMENT definition (value | description | enum-choice | target-class)*> <!ATTLIST definition name NMTOKEN #REQUIRED display-name CDATA #REQUIRED type (%Value-Type;) "string" dn-type (%Dn-Type;) #IMPLIED dn-delims CDATA #IMPLIED dn-space (%Dn-Space;) #IMPLIED range-lo CDATA #IMPLIED range-hi CDATA #IMPLIED multiline CDATA "false" attr-name CDATA #IMPLIED aux-class-name CDATA #IMPLIED item-separator CDATA #IMPLIED display-name-ref CDATA #IMPLIED hide (%Boolean;) #IMPLIED > <!ELEMENT gcv-ref EMPTY> <!ATTLIST gcv-ref name NMTOKEN #REQUIRED> <!ELEMENT group ((definition | gcv-ref),(definition | gcv-ref | subordinates | header | group)*)> <!ELEMENT subordinates (group | definition | gcv-ref | header)*> <!ATTLIST subordinates active-value CDATA #REQUIRED> <!ELEMENT header EMPTY> <!ATTLIST header display-name CDATA #REQUIRED> <!ELEMENT value (#PCDATA | item)*> <!ATTLIST value xml:space (preserve|default) #IMPLIED> <!ELEMENT description (#PCDATA)> <!ATTLIST description description-ref CDATA #IMPLIED> <!ELEMENT enum-choice (#PCDATA)> <!ATTLIST enum-choice display-name CDATA #REQUIRED> <!ELEMENT item (#PCDATA)> <!ATTLIST item xml:space (preserve) #FIXED "preserve"> <!ELEMENT target-class (#PCDATA)>