/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla. * * The Initial Developer of the Original Code is * Netscape Communications. * Portions created by the Initial Developer are Copyright (C) 2001 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Vidur Apparao (original author) * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" #include "nsIWebServiceErrorHandler.idl" interface nsISchema; interface nsISchemaType; interface nsISchemaSimpleType; interface nsISchemaBuiltinType; interface nsISchemaListType; interface nsISchemaUnionType; interface nsISchemaRestrictionType; interface nsISchemaComplexType; interface nsISchemaParticle; interface nsISchemaModelGroup; interface nsISchemaAnyParticle; interface nsISchemaElement; interface nsISchemaAttributeComponent; interface nsISchemaAttribute; interface nsISchemaAttributeGroup; interface nsISchemaAnyAttribute; interface nsISchemaFacet; /** * The collection of loaded schemas. If a schema references other * schemas (generally through an import), these will be included * in the corresponding collection. */ [scriptable, uuid(427c5511-941b-48c0-9abc-8ec9ea5d964b)] interface nsISchemaCollection : nsISupports { nsISchema getSchema(in AString targetNamespace); nsISchemaElement getElement(in AString name, in AString aNamespace); nsISchemaAttribute getAttribute(in AString name, in AString aNamespace); nsISchemaType getType(in AString name, in AString aNamespace); }; [scriptable, uuid(5caaa64e-e191-11d8-842a-000393b6661a)] interface nsISchemaComponent : nsISupports { readonly attribute AString targetNamespace; void resolve(in nsIWebServiceErrorHandler aErrorHandler); void clear(); }; [scriptable, uuid(3c14a021-6f4e-11d5-9b46-000064657374)] interface nsISchema : nsISchemaComponent { /* Is this necessary? */ readonly attribute AString schemaNamespace; readonly attribute PRUint32 typeCount; nsISchemaType getTypeByIndex(in PRUint32 index); nsISchemaType getTypeByName(in AString name); readonly attribute PRUint32 attributeCount; nsISchemaAttribute getAttributeByIndex(in PRUint32 index); nsISchemaAttribute getAttributeByName(in AString name); readonly attribute PRUint32 elementCount; nsISchemaElement getElementByIndex(in PRUint32 index); nsISchemaElement getElementByName(in AString name); readonly attribute PRUint32 attributeGroupCount; nsISchemaAttributeGroup getAttributeGroupByIndex(in PRUint32 index); nsISchemaAttributeGroup getAttributeGroupByName(in AString name); readonly attribute PRUint32 modelGroupCount; nsISchemaModelGroup getModelGroupByIndex(in PRUint32 index); nsISchemaModelGroup getModelGroupByName(in AString name); readonly attribute nsISchemaCollection collection; }; [scriptable, uuid(3c14a022-6f4e-11d5-9b46-000064657374)] interface nsISchemaType : nsISchemaComponent { const unsigned short SCHEMA_TYPE_SIMPLE = 1; const unsigned short SCHEMA_TYPE_COMPLEX = 2; const unsigned short SCHEMA_TYPE_PLACEHOLDER = 3; readonly attribute AString name; readonly attribute unsigned short schemaType; }; [scriptable, uuid(3c14a023-6f4e-11d5-9b46-000064657374)] interface nsISchemaSimpleType : nsISchemaType { const unsigned short SIMPLE_TYPE_BUILTIN = 1; const unsigned short SIMPLE_TYPE_LIST = 2; const unsigned short SIMPLE_TYPE_UNION = 3; const unsigned short SIMPLE_TYPE_RESTRICTION = 4; readonly attribute unsigned short simpleType; }; [scriptable, uuid(3c14a024-6f4e-11d5-9b46-000064657374)] interface nsISchemaBuiltinType : nsISchemaSimpleType { const unsigned short BUILTIN_TYPE_ANYTYPE = 1; const unsigned short BUILTIN_TYPE_STRING = 2; const unsigned short BUILTIN_TYPE_NORMALIZED_STRING = 3; const unsigned short BUILTIN_TYPE_TOKEN = 4; const unsigned short BUILTIN_TYPE_BYTE = 5; const unsigned short BUILTIN_TYPE_UNSIGNEDBYTE = 6; const unsigned short BUILTIN_TYPE_BASE64BINARY = 7; const unsigned short BUILTIN_TYPE_HEXBINARY = 8; const unsigned short BUILTIN_TYPE_INTEGER = 9; const unsigned short BUILTIN_TYPE_POSITIVEINTEGER = 10; const unsigned short BUILTIN_TYPE_NEGATIVEINTEGER = 11; const unsigned short BUILTIN_TYPE_NONNEGATIVEINTEGER = 12; const unsigned short BUILTIN_TYPE_NONPOSITIVEINTEGER = 13; const unsigned short BUILTIN_TYPE_INT = 14; const unsigned short BUILTIN_TYPE_UNSIGNEDINT = 15; const unsigned short BUILTIN_TYPE_LONG = 16; const unsigned short BUILTIN_TYPE_UNSIGNEDLONG = 17; const unsigned short BUILTIN_TYPE_SHORT = 18; const unsigned short BUILTIN_TYPE_UNSIGNEDSHORT = 19; const unsigned short BUILTIN_TYPE_DECIMAL = 20; const unsigned short BUILTIN_TYPE_FLOAT = 21; const unsigned short BUILTIN_TYPE_DOUBLE = 22; const unsigned short BUILTIN_TYPE_BOOLEAN = 23; const unsigned short BUILTIN_TYPE_TIME = 24; const unsigned short BUILTIN_TYPE_DATETIME = 25; const unsigned short BUILTIN_TYPE_DURATION = 26; const unsigned short BUILTIN_TYPE_DATE = 27; const unsigned short BUILTIN_TYPE_GMONTH = 28; const unsigned short BUILTIN_TYPE_GYEAR = 29; const unsigned short BUILTIN_TYPE_GYEARMONTH = 30; const unsigned short BUILTIN_TYPE_GDAY = 31; const unsigned short BUILTIN_TYPE_GMONTHDAY = 32; const unsigned short BUILTIN_TYPE_NAME = 33; const unsigned short BUILTIN_TYPE_QNAME = 34; const unsigned short BUILTIN_TYPE_NCNAME = 35; const unsigned short BUILTIN_TYPE_ANYURI = 36; const unsigned short BUILTIN_TYPE_LANGUAGE = 37; const unsigned short BUILTIN_TYPE_ID = 38; const unsigned short BUILTIN_TYPE_IDREF = 39; const unsigned short BUILTIN_TYPE_IDREFS = 40; const unsigned short BUILTIN_TYPE_ENTITY = 41; const unsigned short BUILTIN_TYPE_ENTITIES = 42; const unsigned short BUILTIN_TYPE_NOTATION = 43; const unsigned short BUILTIN_TYPE_NMTOKEN = 44; const unsigned short BUILTIN_TYPE_NMTOKENS = 45; readonly attribute unsigned short builtinType; }; [scriptable, uuid(3c14a025-6f4e-11d5-9b46-000064657374)] interface nsISchemaListType : nsISchemaSimpleType { readonly attribute nsISchemaSimpleType listType; }; [scriptable, uuid(3c14a026-6f4e-11d5-9b46-000064657374)] interface nsISchemaUnionType : nsISchemaSimpleType { readonly attribute PRUint32 unionTypeCount; nsISchemaSimpleType getUnionType(in PRUint32 index); }; [scriptable, uuid(3c14a027-6f4e-11d5-9b46-000064657374)] interface nsISchemaRestrictionType : nsISchemaSimpleType { readonly attribute nsISchemaSimpleType baseType; readonly attribute PRUint32 facetCount; nsISchemaFacet getFacet(in PRUint32 index); }; [scriptable, uuid(3c14a028-6f4e-11d5-9b46-000064657374)] interface nsISchemaComplexType : nsISchemaType { const unsigned short CONTENT_MODEL_EMPTY = 1; const unsigned short CONTENT_MODEL_SIMPLE = 2; const unsigned short CONTENT_MODEL_ELEMENT_ONLY = 3; const unsigned short CONTENT_MODEL_MIXED = 4; const unsigned short DERIVATION_EXTENSION_SIMPLE = 1; const unsigned short DERIVATION_RESTRICTION_SIMPLE = 2; const unsigned short DERIVATION_EXTENSION_COMPLEX = 3; const unsigned short DERIVATION_RESTRICTION_COMPLEX = 4; const unsigned short DERIVATION_SELF_CONTAINED = 5; // Restriction of ur-type readonly attribute unsigned short contentModel; readonly attribute unsigned short derivation; readonly attribute nsISchemaType baseType; // For complex types that are derivations of simple types or of // complex types that are themselves derivations of simple types // i.e. derivation is either DERIVATION_RESTRICTION_SIMPLE or // DERIVATION_EXTENSION_SIMPLE. readonly attribute nsISchemaSimpleType simpleBaseType; readonly attribute nsISchemaModelGroup modelGroup; readonly attribute PRUint32 attributeCount; nsISchemaAttributeComponent getAttributeByIndex(in PRUint32 index); nsISchemaAttributeComponent getAttributeByName(in AString name); readonly attribute boolean abstract; readonly attribute boolean isArray; readonly attribute nsISchemaType arrayType; readonly attribute PRUint32 arrayDimension; }; [scriptable, uuid(3c14a029-6f4e-11d5-9b46-000064657374)] interface nsISchemaParticle : nsISchemaComponent { const unsigned short PARTICLE_TYPE_ELEMENT = 1; const unsigned short PARTICLE_TYPE_MODEL_GROUP = 2; const unsigned short PARTICLE_TYPE_ANY = 3; const PRUint32 OCCURRENCE_UNBOUNDED = 0xFFFFFFFF; readonly attribute AString name; readonly attribute unsigned short particleType; readonly attribute PRUint32 minOccurs; readonly attribute PRUint32 maxOccurs; }; [scriptable, uuid(3c14a02a-6f4e-11d5-9b46-000064657374)] interface nsISchemaModelGroup : nsISchemaParticle { const unsigned short COMPOSITOR_ALL = 1; const unsigned short COMPOSITOR_SEQUENCE = 2; const unsigned short COMPOSITOR_CHOICE = 3; readonly attribute unsigned short compositor; readonly attribute PRUint32 particleCount; nsISchemaParticle getParticle(in PRUint32 index); // Get named element definition for a named element that is // part of this model group or part of a nested model group. nsISchemaElement getElementByName(in AString name); }; [scriptable, uuid(3c14a02b-6f4e-11d5-9b46-000064657374)] interface nsISchemaAnyParticle : nsISchemaParticle { const unsigned short PROCESS_STRICT = 1; const unsigned short PROCESS_SKIP = 2; const unsigned short PROCESS_LAX = 3; readonly attribute unsigned short process; readonly attribute AString namespace; }; [scriptable, uuid(3c14a02c-6f4e-11d5-9b46-000064657374)] interface nsISchemaElement : nsISchemaParticle { readonly attribute nsISchemaType type; readonly attribute AString defaultValue; readonly attribute AString fixedValue; readonly attribute boolean nillable; readonly attribute boolean abstract; }; [scriptable, uuid(3c14a02d-6f4e-11d5-9b46-000064657374)] interface nsISchemaAttributeComponent : nsISchemaComponent { const unsigned short COMPONENT_TYPE_ATTRIBUTE = 1; const unsigned short COMPONENT_TYPE_GROUP = 2; const unsigned short COMPONENT_TYPE_ANY = 3; readonly attribute AString name; readonly attribute unsigned short componentType; }; [scriptable, uuid(3c14a02e-6f4e-11d5-9b46-000064657374)] interface nsISchemaAttribute : nsISchemaAttributeComponent { const unsigned short USE_OPTIONAL = 1; const unsigned short USE_PROHIBITED = 2; const unsigned short USE_REQUIRED = 3; readonly attribute nsISchemaSimpleType type; readonly attribute AString defaultValue; readonly attribute AString fixedValue; readonly attribute unsigned short use; }; [scriptable, uuid(3c14a02f-6f4e-11d5-9b46-000064657374)] interface nsISchemaAttributeGroup : nsISchemaAttributeComponent { readonly attribute PRUint32 attributeCount; nsISchemaAttributeComponent getAttributeByIndex(in PRUint32 index); nsISchemaAttributeComponent getAttributeByName(in AString name); }; [scriptable, uuid(3c14a030-6f4e-11d5-9b46-000064657374)] interface nsISchemaAnyAttribute : nsISchemaAttributeComponent { const unsigned short PROCESS_STRICT = 1; const unsigned short PROCESS_SKIP = 2; const unsigned short PROCESS_LAX = 3; readonly attribute unsigned short process; readonly attribute AString namespace; }; [scriptable, uuid(3c14a031-6f4e-11d5-9b46-000064657374)] interface nsISchemaFacet : nsISchemaComponent { const unsigned short FACET_TYPE_LENGTH = 1; const unsigned short FACET_TYPE_MINLENGTH = 2; const unsigned short FACET_TYPE_MAXLENGTH = 3; const unsigned short FACET_TYPE_PATTERN = 4; const unsigned short FACET_TYPE_ENUMERATION = 5; const unsigned short FACET_TYPE_WHITESPACE = 6; const unsigned short FACET_TYPE_MAXINCLUSIVE = 7; const unsigned short FACET_TYPE_MININCLUSIVE = 8; const unsigned short FACET_TYPE_MAXEXCLUSIVE = 9; const unsigned short FACET_TYPE_MINEXCLUSIVE = 10; const unsigned short FACET_TYPE_TOTALDIGITS = 11; const unsigned short FACET_TYPE_FRACTIONDIGITS = 12; const unsigned short WHITESPACE_PRESERVE = 1; const unsigned short WHITESPACE_REPLACE = 1; const unsigned short WHITESPACE_COLLAPSE = 1; readonly attribute unsigned short facetType; readonly attribute AString value; readonly attribute PRUint32 lengthValue; // For length, minLength & maxLength readonly attribute PRUint32 digitsValue; // For totalDigits & fractionDigits readonly attribute unsigned short whitespaceValue; // For whitespace only readonly attribute boolean isfixed; };