Appendix A: IDL Definitions

This appendix contains the complete OMG IDL [OMG IDL] for the XML Schema API.

The IDL files are also available as: idl.zip

org.apache.xerces.idl:

// File: org.apache.xerces.idl

#ifndef _ORG.APACHE.XERCES_IDL_
#define _ORG.APACHE.XERCES_IDL_

#pragma prefix "xs"
module org.apache.xerces
{

  valuetype GenericString sequence<unsigned short>;

  typedef   Object GenericObject;


  interface XSObject;
  interface XSNamespaceItem;
  interface XSElementDeclaration;
  interface XSAttributeDeclaration;
  interface XSTypeDefinition;
  interface XSAttributeGroupDefinition;
  interface XSModelGroupDefinition;
  interface XSNotationDeclaration;
  interface XSSimpleTypeDefinition;
  interface XSComplexTypeDefinition;
  interface XSAnnotation;
  interface XSWildcard;
  interface XSParticle;
  interface XSTerm;
  interface XSLoader;

  exception XSException {
    unsigned short   code;
  };
  // ExceptionCode
  const unsigned short      NOT_SUPPORTED_ERR              = 1;
  const unsigned short      INDEX_SIZE_ERR                 = 2;


  interface XSNamedMap {
    readonly attribute unsigned long   length;
    XSObject           item(in unsigned long index);
    XSObject           itemByName(in GenericString namespace, 
                                  in GenericString localName);
  };

  interface XSObjectList {
    readonly attribute unsigned long   length;
    XSObject           item(in unsigned long index);
  };

  interface XSNamespaceItemList {
    readonly attribute unsigned long   length;
    XSNamespaceItem    item(in unsigned long index);
  };

  interface StringList {
    readonly attribute unsigned long   length;
    boolean            contains(in GenericString item);
    GenericString      item(in unsigned long index);
  };

  interface LSInputList {
    readonly attribute unsigned long   length;
    LSInput           item(in unsigned long index);
  };

  interface ShortList {
    readonly attribute unsigned long   length;
    boolean            contains(in unsigned short item);
    unsigned short     item(in unsigned long index)
                                        raises(XSException);
  };

  interface XSObject {
    readonly attribute unsigned short  type;
    readonly attribute GenericString   name;
    readonly attribute GenericString   namespace;
    readonly attribute XSNamespaceItem namespaceItem;
  };

  interface XSConstants {

    // XML Schema Components
    const unsigned short      ATTRIBUTE_DECLARATION          = 1;
    const unsigned short      ELEMENT_DECLARATION            = 2;
    const unsigned short      TYPE_DEFINITION                = 3;
    const unsigned short      ATTRIBUTE_USE                  = 4;
    const unsigned short      ATTRIBUTE_GROUP                = 5;
    const unsigned short      MODEL_GROUP_DEFINITION         = 6;
    const unsigned short      MODEL_GROUP                    = 7;
    const unsigned short      PARTICLE                       = 8;
    const unsigned short      WILDCARD                       = 9;
    const unsigned short      IDENTITY_CONSTRAINT            = 10;
    const unsigned short      NOTATION_DECLARATION           = 11;
    const unsigned short      ANNOTATION                     = 12;
    const unsigned short      FACET                          = 13;
    const unsigned short      MULTIVALUE_FACET               = 14;


    // Derivation constants
    const unsigned short      DERIVATION_NONE                = 0;
    const unsigned short      DERIVATION_EXTENSION           = 1;
    const unsigned short      DERIVATION_RESTRICTION         = 2;
    const unsigned short      DERIVATION_SUBSTITUTION        = 4;
    const unsigned short      DERIVATION_UNION               = 8;
    const unsigned short      DERIVATION_LIST                = 16;


    // Scope
    const unsigned short      SCOPE_ABSENT                   = 0;
    const unsigned short      SCOPE_GLOBAL                   = 1;
    const unsigned short      SCOPE_LOCAL                    = 2;


    // Value Constraint
    const unsigned short      VC_NONE                        = 0;
    const unsigned short      VC_DEFAULT                     = 1;
    const unsigned short      VC_FIXED                       = 2;


    // Built-in types: primitive and derived
    const unsigned short      ANYSIMPLETYPE_DT               = 1;
    const unsigned short      STRING_DT                      = 2;
    const unsigned short      BOOLEAN_DT                     = 3;
    const unsigned short      DECIMAL_DT                     = 4;
    const unsigned short      FLOAT_DT                       = 5;
    const unsigned short      DOUBLE_DT                      = 6;
    const unsigned short      DURATION_DT                    = 7;
    const unsigned short      DATETIME_DT                    = 8;
    const unsigned short      TIME_DT                        = 9;
    const unsigned short      DATE_DT                        = 10;
    const unsigned short      GYEARMONTH_DT                  = 11;
    const unsigned short      GYEAR_DT                       = 12;
    const unsigned short      GMONTHDAY_DT                   = 13;
    const unsigned short      GDAY_DT                        = 14;
    const unsigned short      GMONTH_DT                      = 15;
    const unsigned short      HEXBINARY_DT                   = 16;
    const unsigned short      BASE64BINARY_DT                = 17;
    const unsigned short      ANYURI_DT                      = 18;
    const unsigned short      QNAME_DT                       = 19;
    const unsigned short      NOTATION_DT                    = 20;
    const unsigned short      NORMALIZEDSTRING_DT            = 21;
    const unsigned short      TOKEN_DT                       = 22;
    const unsigned short      LANGUAGE_DT                    = 23;
    const unsigned short      NMTOKEN_DT                     = 24;
    const unsigned short      NAME_DT                        = 25;
    const unsigned short      NCNAME_DT                      = 26;
    const unsigned short      ID_DT                          = 27;
    const unsigned short      IDREF_DT                       = 28;
    const unsigned short      ENTITY_DT                      = 29;
    const unsigned short      INTEGER_DT                     = 30;
    const unsigned short      NONPOSITIVEINTEGER_DT          = 31;
    const unsigned short      NEGATIVEINTEGER_DT             = 32;
    const unsigned short      LONG_DT                        = 33;
    const unsigned short      INT_DT                         = 34;
    const unsigned short      SHORT_DT                       = 35;
    const unsigned short      BYTE_DT                        = 36;
    const unsigned short      NONNEGATIVEINTEGER_DT          = 37;
    const unsigned short      UNSIGNEDLONG_DT                = 38;
    const unsigned short      UNSIGNEDINT_DT                 = 39;
    const unsigned short      UNSIGNEDSHORT_DT               = 40;
    const unsigned short      UNSIGNEDBYTE_DT                = 41;
    const unsigned short      POSITIVEINTEGER_DT             = 42;
    const unsigned short      LISTOFUNION_DT                 = 43;
    const unsigned short      LIST_DT                        = 44;
    const unsigned short      UNAVAILABLE_DT                 = 45;
  };

  interface XSModel {
    readonly attribute StringList      namespaces;
    readonly attribute XSNamespaceItemList namespaceItems;
    XSNamedMap         getComponents(in unsigned short objectType);
    XSNamedMap         getComponentsByNamespace(in unsigned short objectType, 
                                                in GenericString namespace);
    readonly attribute XSObjectList    annotations;
    XSElementDeclaration getElementDeclaration(in GenericString namespace, 
                                               in GenericString name);
    XSAttributeDeclaration getAttributeDeclaration(in GenericString namespace, 
                                                   in GenericString name);
    XSTypeDefinition   getTypeDefinition(in GenericString namespace, 
                                         in GenericString name);
    XSAttributeGroupDefinition getAttributeGroup(in GenericString namespace, 
                                                 in GenericString name);
    XSModelGroupDefinition getModelGroupDefinition(in GenericString namespace, 
                                                   in GenericString name);
    XSNotationDeclaration getNotationDeclaration(in GenericString namespace, 
                                                 in GenericString name);
  };

  interface XSNamespaceItem {
    readonly attribute GenericString   schemaNamespace;
    XSNamedMap         getComponents(in unsigned short objectType);
    readonly attribute XSObjectList    annotations;
    XSElementDeclaration getElementDeclaration(in GenericString name);
    XSAttributeDeclaration getAttributeDeclaration(in GenericString name);
    XSTypeDefinition   getTypeDefinition(in GenericString name);
    XSAttributeGroupDefinition getAttributeGroup(in GenericString name);
    XSModelGroupDefinition getModelGroupDefinition(in GenericString name);
    XSNotationDeclaration getNotationDeclaration(in GenericString name);
    readonly attribute StringList      documentLocations;
  };

  interface XSAttributeDeclaration : XSObject {
    readonly attribute XSSimpleTypeDefinition typeDefinition;
    readonly attribute unsigned short  scope;
    readonly attribute XSComplexTypeDefinition enclosingCTDefinition;
    readonly attribute unsigned short  constraintType;
    readonly attribute GenericString   constraintValue;
    readonly attribute GenericObject   actualVC;
                                        // raises(XSException) on retrieval

    readonly attribute unsigned short  actualVCType;
                                        // raises(XSException) on retrieval

    readonly attribute ShortList       itemValueTypes;
                                        // raises(XSException) on retrieval

    readonly attribute XSAnnotation    annotation;
  };

  interface XSTypeDefinition : XSObject {
    const unsigned short      COMPLEX_TYPE                   = 15;
    const unsigned short      SIMPLE_TYPE                    = 16;
    readonly attribute unsigned short  typeCategory;
    readonly attribute XSTypeDefinition baseType;
    boolean            isFinal(in unsigned short restriction);
    readonly attribute unsigned short  final;
    readonly attribute boolean         anonymous;
    boolean            derivedFromType(in XSTypeDefinition ancestorType, 
                                       in unsigned short derivationMethod);
    boolean            derivedFrom(in GenericString namespace, 
                                   in GenericString name, 
                                   in unsigned short derivationMethod);
  };

  interface XSComplexTypeDefinition : XSTypeDefinition {

    // Content Model Types
    const unsigned short      CONTENTTYPE_EMPTY              = 0;
    const unsigned short      CONTENTTYPE_SIMPLE             = 1;
    const unsigned short      CONTENTTYPE_ELEMENT            = 2;
    const unsigned short      CONTENTTYPE_MIXED              = 3;

    readonly attribute unsigned short  derivationMethod;
    readonly attribute boolean         abstract;
    readonly attribute XSObjectList    attributeUses;
    readonly attribute XSWildcard      attributeWildcard;
    readonly attribute unsigned short  contentType;
    readonly attribute XSSimpleTypeDefinition simpleType;
    readonly attribute XSParticle      particle;
    boolean            isProhibitedSubstitution(in unsigned short restriction);
    readonly attribute unsigned short  prohibitedSubstitutions;
    readonly attribute XSObjectList    annotations;
  };

  interface XSSimpleTypeDefinition : XSTypeDefinition {

    // Variety definitions
    const unsigned short      VARIETY_ABSENT                 = 0;
    const unsigned short      VARIETY_ATOMIC                 = 1;
    const unsigned short      VARIETY_LIST                   = 2;
    const unsigned short      VARIETY_UNION                  = 3;


    // Facets
    const unsigned short      FACET_NONE                     = 0;
    const unsigned short      FACET_LENGTH                   = 1;
    const unsigned short      FACET_MINLENGTH                = 2;
    const unsigned short      FACET_MAXLENGTH                = 4;
    const unsigned short      FACET_PATTERN                  = 8;
    const unsigned short      FACET_WHITESPACE               = 16;
    const unsigned short      FACET_MAXINCLUSIVE             = 32;
    const unsigned short      FACET_MAXEXCLUSIVE             = 64;
    const unsigned short      FACET_MINEXCLUSIVE             = 128;
    const unsigned short      FACET_MININCLUSIVE             = 256;
    const unsigned short      FACET_TOTALDIGITS              = 512;
    const unsigned short      FACET_FRACTIONDIGITS           = 1024;
    const unsigned short      FACET_ENUMERATION              = 2048;

    const unsigned short      ORDERED_FALSE                  = 0;
    const unsigned short      ORDERED_PARTIAL                = 1;
    const unsigned short      ORDERED_TOTAL                  = 2;
    readonly attribute unsigned short  variety;
    readonly attribute XSSimpleTypeDefinition primitiveType;
    readonly attribute unsigned short  builtInKind;
    readonly attribute XSSimpleTypeDefinition itemType;
    readonly attribute XSObjectList    memberTypes;
    readonly attribute unsigned short  definedFacets;
    boolean            isDefinedFacet(in unsigned short facetName);
    readonly attribute unsigned short  fixedFacets;
    boolean            isFixedFacet(in unsigned short facetName);
    GenericString      getLexicalFacetValue(in unsigned short facetName);
    readonly attribute StringList      lexicalEnumeration;
    readonly attribute StringList      lexicalPattern;
    readonly attribute unsigned short  ordered;
    readonly attribute boolean         finite;
    readonly attribute boolean         bounded;
    readonly attribute boolean         numeric;
    readonly attribute XSObjectList    facets;
    readonly attribute XSObjectList    multiValueFacets;
    readonly attribute XSObjectList    annotations;
  };

  interface XSFacet : XSObject {
    readonly attribute unsigned short  facetKind;
    readonly attribute GenericString   lexicalFacetValue;
    readonly attribute boolean         fixed;
    readonly attribute XSAnnotation    annotation;
  };

  interface XSMultiValueFacet : XSObject {
    readonly attribute unsigned short  facetKind;
    readonly attribute StringList      lexicalFacetValues;
    readonly attribute XSObjectList    annotations;
  };

  interface XSParticle : XSObject {
    readonly attribute unsigned long   minOccurs;
    readonly attribute unsigned long   maxOccurs;
    readonly attribute boolean         maxOccursUnbounded;
    readonly attribute XSTerm          term;
  };

  interface XSTerm : XSObject {
  };

  interface XSModelGroup : XSTerm {

    // Content model compositors
    const unsigned short      COMPOSITOR_SEQUENCE            = 1;
    const unsigned short      COMPOSITOR_CHOICE              = 2;
    const unsigned short      COMPOSITOR_ALL                 = 3;

    readonly attribute unsigned short  compositor;
    readonly attribute XSObjectList    particles;
    readonly attribute XSAnnotation    annotation;
  };

  interface XSModelGroupDefinition : XSObject {
    readonly attribute XSModelGroup    modelGroup;
    readonly attribute XSAnnotation    annotation;
  };

  interface XSAttributeGroupDefinition : XSObject {
    readonly attribute XSObjectList    attributeUses;
    readonly attribute XSWildcard      attributeWildcard;
    readonly attribute XSAnnotation    annotation;
  };

  interface XSAttributeUse : XSObject {
    readonly attribute boolean         required;
    readonly attribute XSAttributeDeclaration attrDeclaration;
    readonly attribute unsigned short  constraintType;
    readonly attribute GenericString   constraintValue;
    readonly attribute GenericObject   actualVC;
                                        // raises(XSException) on retrieval

    readonly attribute unsigned short  actualVCType;
                                        // raises(XSException) on retrieval

    readonly attribute ShortList       itemValueTypes;
                                        // raises(XSException) on retrieval

  };

  interface XSWildcard : XSTerm {

    // Namespace Constraint
    const unsigned short      NSCONSTRAINT_ANY               = 1;
    const unsigned short      NSCONSTRAINT_NOT               = 2;
    const unsigned short      NSCONSTRAINT_LIST              = 3;


    // Process contents
    const unsigned short      PC_STRICT                      = 1;
    const unsigned short      PC_SKIP                        = 2;
    const unsigned short      PC_LAX                         = 3;

    readonly attribute unsigned short  constraintType;
    readonly attribute StringList      nsConstraintList;
    readonly attribute unsigned short  processContents;
    readonly attribute XSAnnotation    annotation;
  };

  interface XSIDCDefinition : XSObject {

    // Identity Constraints
    const unsigned short      IC_KEY                         = 1;
    const unsigned short      IC_KEYREF                      = 2;
    const unsigned short      IC_UNIQUE                      = 3;

    readonly attribute unsigned short  category;
    readonly attribute GenericString   selectorStr;
    readonly attribute StringList      fieldStrs;
    readonly attribute XSIDCDefinition refKey;
    readonly attribute XSObjectList    annotations;
  };

  interface XSNotationDeclaration : XSObject {
    readonly attribute GenericString   systemId;
    readonly attribute GenericString   publicId;
    readonly attribute XSAnnotation    annotation;
  };

  interface XSAnnotation : XSObject {

    // TargetType
    const unsigned short      W3C_DOM_ELEMENT                = 1;
    const unsigned short      SAX_CONTENTHANDLER             = 2;
    const unsigned short      W3C_DOM_DOCUMENT               = 3;

    boolean            writeAnnotation(in GenericObject target, 
                                       in unsigned short targetType);
    readonly attribute GenericString   annotationString;
  };

  interface ItemPSVI {
    const unsigned short      VALIDITY_NOTKNOWN              = 0;
    const unsigned short      VALIDITY_INVALID               = 1;
    const unsigned short      VALIDITY_VALID                 = 2;
    const unsigned short      VALIDATION_NONE                = 0;
    const unsigned short      VALIDATION_PARTIAL             = 1;
    const unsigned short      VALIDATION_FULL                = 2;
    readonly attribute GenericString   validationContext;
    readonly attribute unsigned short  validity;
    readonly attribute unsigned short  validationAttempted;
    readonly attribute StringList      errorCodes;
    readonly attribute GenericString   schemaNormalizedValue;
    readonly attribute GenericObject   actualNormalizedValue;
                                        // raises(XSException) on retrieval

    readonly attribute unsigned short  actualNormalizedValueType;
                                        // raises(XSException) on retrieval

    readonly attribute ShortList       itemValueTypes;
                                        // raises(XSException) on retrieval

    readonly attribute XSTypeDefinition typeDefinition;
    readonly attribute XSSimpleTypeDefinition memberTypeDefinition;
    readonly attribute GenericString   schemaDefault;
    readonly attribute boolean         isSchemaSpecified;
  };

  interface ElementPSVI : ItemPSVI {
    readonly attribute XSElementDeclaration elementDeclaration;
    readonly attribute XSNotationDeclaration notation;
    readonly attribute boolean         nil;
    readonly attribute XSModel         schemaInformation;
  };

  interface AttributePSVI : ItemPSVI {
    readonly attribute XSAttributeDeclaration attributeDeclaration;
  };

  interface PSVIProvider {
    ElementPSVI        getElementPSVI();
    AttributePSVI      getAttributePSVI(in unsigned long index);
    AttributePSVI      getAttributePSVIByName(in GenericString uri, 
                                              in GenericString localname);
  };

  interface XSImplementation {
             attribute StringList      recognizedVersions;
    XSLoader           createXSLoader(in StringList versions)
                                        raises(XSException);
  };

  interface XSLoader {
    readonly attribute DOMConfiguration config;
    XSModel            loadURIList(in StringList uriList);
    XSModel            loadInputList(in LSInputList is);
    XSModel            loadURI(in GenericString uri);
    XSModel            load(in LSInput is);
  };

  interface XSElementDeclaration : XSTerm {
    readonly attribute XSTypeDefinition typeDefinition;
    readonly attribute unsigned short  scope;
    readonly attribute XSComplexTypeDefinition enclosingCTDefinition;
    readonly attribute unsigned short  constraintType;
    readonly attribute GenericString   constraintValue;
    readonly attribute GenericObject   actualVC;
                                        // raises(XSException) on retrieval

    readonly attribute unsigned short  actualVCType;
                                        // raises(XSException) on retrieval

    readonly attribute ShortList       itemValueTypes;
                                        // raises(XSException) on retrieval

    readonly attribute boolean         nillable;
    readonly attribute XSNamedMap      identityConstraints;
    readonly attribute XSElementDeclaration substitutionGroupAffiliation;
    boolean            isSubstitutionGroupExclusion(in unsigned short exclusion);
    readonly attribute unsigned short  substitutionGroupExclusions;
    boolean            isDisallowedSubstitution(in unsigned short disallowed);
    readonly attribute unsigned short  disallowedSubstitutions;
    readonly attribute boolean         abstract;
    readonly attribute XSAnnotation    annotation;
  };
};

#endif // _ORG.APACHE.XERCES_IDL_