GME
13
|
00001 /* 00002 * Licensed to the Apache Software Foundation (ASF) under one or more 00003 * contributor license agreements. See the NOTICE file distributed with 00004 * this work for additional information regarding copyright ownership. 00005 * The ASF licenses this file to You under the Apache License, Version 2.0 00006 * (the "License"); you may not use this file except in compliance with 00007 * the License. You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 */ 00017 00018 // --------------------------------------------------------------------------- 00019 // Includes 00020 // --------------------------------------------------------------------------- 00021 #include <xercesc/validators/schema/GeneralAttributeCheck.hpp> 00022 #include <xercesc/validators/schema/SchemaSymbols.hpp> 00023 #include <xercesc/validators/schema/TraverseSchema.hpp> 00024 #include <xercesc/validators/datatype/DatatypeValidatorFactory.hpp> 00025 #include <xercesc/dom/DOMNamedNodeMap.hpp> 00026 #include <xercesc/framework/XMLErrorCodes.hpp> 00027 #include <xercesc/framework/psvi/XSAnnotation.hpp> 00028 #include <xercesc/util/XMLString.hpp> 00029 #include <xercesc/util/XMLUniDefs.hpp> 00030 #include <xercesc/util/Janitor.hpp> 00031 #include <xercesc/util/PlatformUtils.hpp> 00032 #include <xercesc/util/XMLInitializer.hpp> 00033 #include <xercesc/util/OutOfMemoryException.hpp> 00034 00035 XERCES_CPP_NAMESPACE_BEGIN 00036 00037 // --------------------------------------------------------------------------- 00038 // Local const data 00039 // --------------------------------------------------------------------------- 00040 static const XMLCh fgValueZero[] = 00041 { 00042 chDigit_0, chNull 00043 }; 00044 00045 static const XMLCh fgValueOne[] = 00046 { 00047 chDigit_1, chNull 00048 }; 00049 00050 static const XMLCh fgUnbounded[] = 00051 { 00052 chLatin_u, chLatin_n, chLatin_b, chLatin_o, chLatin_u, chLatin_n, chLatin_d, 00053 chLatin_e, chLatin_d, chNull 00054 }; 00055 00056 // --------------------------------------------------------------------------- 00057 // Static member data initialization 00058 // --------------------------------------------------------------------------- 00059 ValueHashTableOf<unsigned short>* GeneralAttributeCheck::fAttMap = 0; 00060 ValueHashTableOf<unsigned short>* GeneralAttributeCheck::fFacetsMap = 0; 00061 DatatypeValidator* GeneralAttributeCheck::fNonNegIntDV = 0; 00062 DatatypeValidator* GeneralAttributeCheck::fBooleanDV = 0; 00063 DatatypeValidator* GeneralAttributeCheck::fAnyURIDV = 0; 00064 00065 void XMLInitializer::initializeGeneralAttributeCheck() 00066 { 00067 GeneralAttributeCheck::initialize (); 00068 } 00069 00070 void XMLInitializer::terminateGeneralAttributeCheck() 00071 { 00072 delete GeneralAttributeCheck::fFacetsMap; 00073 delete GeneralAttributeCheck::fAttMap; 00074 00075 GeneralAttributeCheck::fAttMap = 0; 00076 GeneralAttributeCheck::fFacetsMap = 0; 00077 00078 GeneralAttributeCheck::fNonNegIntDV = 0; 00079 GeneralAttributeCheck::fBooleanDV = 0; 00080 GeneralAttributeCheck::fAnyURIDV = 0; 00081 } 00082 00083 void GeneralAttributeCheck::initialize() 00084 { 00085 // Set up validators. 00086 // 00087 DatatypeValidatorFactory dvFactory; 00088 00089 fNonNegIntDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER); 00090 fBooleanDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_BOOLEAN); 00091 fAnyURIDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); 00092 00093 // TODO - add remaining valdiators 00094 00095 // Map attributes. 00096 // 00097 fAttMap = new ValueHashTableOf<unsigned short>(A_Count); 00098 00099 fAttMap->put((void*)SchemaSymbols::fgATT_ABSTRACT, A_Abstract); 00100 fAttMap->put((void*)SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT, A_AttributeFormDefault); 00101 fAttMap->put((void*)SchemaSymbols::fgATT_BASE, A_Base); 00102 fAttMap->put((void*)SchemaSymbols::fgATT_BLOCK, A_Block); 00103 fAttMap->put((void*)SchemaSymbols::fgATT_BLOCKDEFAULT, A_BlockDefault); 00104 fAttMap->put((void*)SchemaSymbols::fgATT_DEFAULT, A_Default); 00105 fAttMap->put((void*)SchemaSymbols::fgATT_ELEMENTFORMDEFAULT, A_ElementFormDefault); 00106 fAttMap->put((void*)SchemaSymbols::fgATT_FINAL, A_Final); 00107 fAttMap->put((void*)SchemaSymbols::fgATT_FINALDEFAULT, A_FinalDefault); 00108 fAttMap->put((void*)SchemaSymbols::fgATT_FIXED, A_Fixed); 00109 fAttMap->put((void*)SchemaSymbols::fgATT_FORM, A_Form); 00110 fAttMap->put((void*)SchemaSymbols::fgATT_ID, A_ID); 00111 fAttMap->put((void*)SchemaSymbols::fgATT_ITEMTYPE, A_ItemType); 00112 fAttMap->put((void*)SchemaSymbols::fgATT_MAXOCCURS, A_MaxOccurs); 00113 fAttMap->put((void*)SchemaSymbols::fgATT_MEMBERTYPES, A_MemberTypes); 00114 fAttMap->put((void*)SchemaSymbols::fgATT_MINOCCURS, A_MinOccurs); 00115 fAttMap->put((void*)SchemaSymbols::fgATT_MIXED, A_Mixed); 00116 fAttMap->put((void*)SchemaSymbols::fgATT_NAME, A_Name); 00117 fAttMap->put((void*)SchemaSymbols::fgATT_NAMESPACE, A_Namespace); 00118 fAttMap->put((void*)SchemaSymbols::fgATT_NILLABLE, A_Nillable); 00119 fAttMap->put((void*)SchemaSymbols::fgATT_PROCESSCONTENTS, A_ProcessContents); 00120 fAttMap->put((void*)SchemaSymbols::fgATT_PUBLIC, A_Public); 00121 fAttMap->put((void*)SchemaSymbols::fgATT_REF, A_Ref); 00122 fAttMap->put((void*)SchemaSymbols::fgATT_REFER, A_Refer); 00123 fAttMap->put((void*)SchemaSymbols::fgATT_SCHEMALOCATION, A_SchemaLocation); 00124 fAttMap->put((void*)SchemaSymbols::fgATT_SOURCE, A_Source); 00125 fAttMap->put((void*)SchemaSymbols::fgATT_SUBSTITUTIONGROUP, A_SubstitutionGroup); 00126 fAttMap->put((void*)SchemaSymbols::fgATT_SYSTEM, A_System); 00127 fAttMap->put((void*)SchemaSymbols::fgATT_TARGETNAMESPACE, A_TargetNamespace); 00128 fAttMap->put((void*)SchemaSymbols::fgATT_TYPE, A_Type); 00129 fAttMap->put((void*)SchemaSymbols::fgATT_USE, A_Use); 00130 fAttMap->put((void*)SchemaSymbols::fgATT_VALUE, A_Value); 00131 fAttMap->put((void*)SchemaSymbols::fgATT_VERSION, A_Version); 00132 fAttMap->put((void*)SchemaSymbols::fgATT_XPATH, A_XPath); 00133 00134 fFacetsMap = new ValueHashTableOf<unsigned short>(13); 00135 00136 fFacetsMap->put((void*) SchemaSymbols::fgELT_MINEXCLUSIVE, E_MinExclusive); 00137 fFacetsMap->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, E_MinInclusive); 00138 fFacetsMap->put((void*) SchemaSymbols::fgELT_MAXEXCLUSIVE, E_MaxExclusive); 00139 fFacetsMap->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, E_MaxInclusive); 00140 fFacetsMap->put((void*) SchemaSymbols::fgELT_TOTALDIGITS, E_TotalDigits); 00141 fFacetsMap->put((void*) SchemaSymbols::fgELT_FRACTIONDIGITS, E_FractionDigits); 00142 fFacetsMap->put((void*) SchemaSymbols::fgELT_LENGTH, E_Length); 00143 fFacetsMap->put((void*) SchemaSymbols::fgELT_MINLENGTH, E_MinLength); 00144 fFacetsMap->put((void*) SchemaSymbols::fgELT_MAXLENGTH, E_MaxLength); 00145 fFacetsMap->put((void*) SchemaSymbols::fgELT_ENUMERATION, E_Enumeration); 00146 fFacetsMap->put((void*) SchemaSymbols::fgELT_WHITESPACE, E_WhiteSpace); 00147 fFacetsMap->put((void*) SchemaSymbols::fgELT_PATTERN, E_Pattern); 00148 } 00149 00150 // --------------------------------------------------------------------------- 00151 // GeneralAttributeCheck: Constructors and Destructor 00152 // --------------------------------------------------------------------------- 00153 GeneralAttributeCheck::GeneralAttributeCheck(MemoryManager* const manager) 00154 : fMemoryManager(manager) 00155 , fIDValidator(manager) 00156 { 00157 } 00158 00159 GeneralAttributeCheck::~GeneralAttributeCheck() 00160 { 00161 } 00162 00163 // --------------------------------------------------------------------------- 00164 // GeneralAttributeCheck: Validation methods 00165 // --------------------------------------------------------------------------- 00166 void 00167 GeneralAttributeCheck::checkAttributes(const DOMElement* const elem, 00168 const unsigned short elemContext, 00169 TraverseSchema* const schema, 00170 const bool isTopLevel, 00171 ValueVectorOf<DOMNode*>* const nonXSAttList) 00172 { 00173 if (nonXSAttList) 00174 nonXSAttList->removeAllElements(); 00175 00176 if (elem == 0 || !fAttMap || elemContext>=E_Count) 00177 return; 00178 00179 const XMLCh* elemName = elem->getLocalName(); 00180 if (!XMLString::equals(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, elem->getNamespaceURI())) { 00181 schema->reportSchemaError 00182 ( 00183 elem 00184 , XMLUni::fgXMLErrDomain 00185 , XMLErrs::ELTSchemaNS 00186 , elemName 00187 ); 00188 } 00189 00190 DOMNamedNodeMap* eltAttrs = elem->getAttributes(); 00191 const XMLSize_t attrCount = eltAttrs->getLength(); 00192 XMLByte attList[A_Count]; 00193 00194 memset(attList, 0, sizeof(attList)); 00195 00196 for (XMLSize_t i = 0; i < attrCount; i++) { 00197 00198 DOMNode* attribute = eltAttrs->item(i); 00199 const XMLCh* attName = attribute->getNodeName(); 00200 00201 // skip namespace declarations 00202 if (XMLString::equals(attName, XMLUni::fgXMLNSString) 00203 || XMLString::startsWith(attName, XMLUni::fgXMLNSColonString)) 00204 continue; 00205 00206 // Bypass attributes that start with xml 00207 // add this to the list of "non-schema" attributes 00208 if ((*attName == chLatin_X || *attName == chLatin_x) 00209 && (*(attName+1) == chLatin_M || *(attName+1) == chLatin_m) 00210 && (*(attName+2) == chLatin_L || *(attName+2) == chLatin_l)) { 00211 00212 if (nonXSAttList) 00213 nonXSAttList->addElement(attribute); 00214 00215 continue; 00216 } 00217 00218 // for attributes with namespace prefix 00219 const XMLCh* attrURI = attribute->getNamespaceURI(); 00220 00221 if (attrURI != 0 && *attrURI) { 00222 00223 // attributes with schema namespace are not allowed 00224 // and not allowed on "documentation" and "appInfo" 00225 if (XMLString::equals(attrURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || 00226 XMLString::equals(elemName, SchemaSymbols::fgELT_APPINFO) || 00227 XMLString::equals(elemName, SchemaSymbols::fgELT_DOCUMENTATION)) { 00228 00229 schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, 00230 isTopLevel?XMLErrs::AttributeDisallowedGlobal:XMLErrs::AttributeDisallowedLocal, 00231 attName, elemName); 00232 } 00233 else if (nonXSAttList) 00234 { 00235 nonXSAttList->addElement(attribute); 00236 } 00237 00238 continue; 00239 } 00240 00241 int attNameId = A_Invalid; 00242 attName = attribute->getLocalName(); 00243 00244 bool bContinue=false; // workaround for Borland bug with 'continue' in 'catch' 00245 try { 00246 attNameId= fAttMap->get(attName, fMemoryManager); 00247 } 00248 catch(const OutOfMemoryException&) 00249 { 00250 throw; 00251 } 00252 catch(...) { 00253 00254 schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, 00255 isTopLevel?XMLErrs::AttributeDisallowedGlobal:XMLErrs::AttributeDisallowedLocal, 00256 attName, elemName); 00257 bContinue=true; 00258 } 00259 if(bContinue) 00260 continue; 00261 00262 if (fgElemAttTable[elemContext][attNameId] & Att_Mask) { 00263 00264 attList[attNameId] = 1; 00265 validate 00266 ( 00267 elem 00268 , attName 00269 , attribute->getNodeValue() 00270 , fgElemAttTable[elemContext][attNameId] & DV_Mask 00271 , schema 00272 ); 00273 } 00274 else { 00275 schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, 00276 isTopLevel?XMLErrs::AttributeDisallowedGlobal:XMLErrs::AttributeDisallowedLocal, 00277 attName, elemName); 00278 } 00279 } 00280 00281 // ------------------------------------------------------------------ 00282 // Check for required attributes 00283 // ------------------------------------------------------------------ 00284 for (unsigned int j=0; j < A_Count; j++) { 00285 00286 if ((fgElemAttTable[elemContext][j] & Att_Required) && attList[j] == 0) { 00287 schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, 00288 isTopLevel?XMLErrs::AttributeRequiredGlobal:XMLErrs::AttributeRequiredLocal, 00289 fAttNames[j], elemName); 00290 } 00291 } 00292 } 00293 00294 00295 void GeneralAttributeCheck::validate(const DOMElement* const elem, 00296 const XMLCh* const attName, 00297 const XMLCh* const attValue, 00298 const short dvIndex, 00299 TraverseSchema* const schema) 00300 { 00301 bool isInvalid = false; 00302 DatatypeValidator* dv = 0; 00303 00304 ValidationContext* fValidationContext = schema->fSchemaInfo->getValidationContext(); 00305 switch (dvIndex) { 00306 case DV_Form: 00307 if (!XMLString::equals(attValue, SchemaSymbols::fgATTVAL_QUALIFIED) 00308 && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_UNQUALIFIED)) { 00309 isInvalid = true; 00310 } 00311 break; 00312 case DV_MaxOccurs: 00313 // maxOccurs = (nonNegativeInteger | unbounded) 00314 if (!XMLString::equals(attValue, fgUnbounded)) { 00315 dv = fNonNegIntDV; 00316 } 00317 break; 00318 case DV_MaxOccurs1: 00319 if (!XMLString::equals(attValue, fgValueOne)) { 00320 isInvalid = true; 00321 } 00322 break; 00323 case DV_MinOccurs1: 00324 if (!XMLString::equals(attValue, fgValueZero) 00325 && !XMLString::equals(attValue, fgValueOne)) { 00326 isInvalid = true; 00327 } 00328 break; 00329 case DV_ProcessContents: 00330 if (!XMLString::equals(attValue, SchemaSymbols::fgATTVAL_SKIP) 00331 && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_LAX) 00332 && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_STRICT)) { 00333 isInvalid = true; 00334 } 00335 break; 00336 case DV_Use: 00337 if (!XMLString::equals(attValue, SchemaSymbols::fgATTVAL_OPTIONAL) 00338 && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_PROHIBITED) 00339 && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_REQUIRED)) { 00340 isInvalid = true; 00341 } 00342 break; 00343 case DV_WhiteSpace: 00344 if (!XMLString::equals(attValue, SchemaSymbols::fgWS_PRESERVE) 00345 && !XMLString::equals(attValue, SchemaSymbols::fgWS_REPLACE) 00346 && !XMLString::equals(attValue, SchemaSymbols::fgWS_COLLAPSE)) { 00347 isInvalid = true; 00348 } 00349 break; 00350 case DV_Boolean: 00351 dv = fBooleanDV; 00352 break; 00353 case DV_NonNegInt: 00354 dv = fNonNegIntDV; 00355 break; 00356 case DV_AnyURI: 00357 dv = fAnyURIDV; 00358 break; 00359 case DV_ID: 00360 if (fValidationContext) 00361 { 00362 dv = &fIDValidator; 00363 } 00364 break; 00365 } 00366 00367 if (dv) { 00368 try { 00369 dv->validate(attValue, fValidationContext, fMemoryManager); 00370 } 00371 catch(const XMLException& excep) { 00372 schema->reportSchemaError(elem, excep); 00373 } 00374 catch(const OutOfMemoryException&) 00375 { 00376 throw; 00377 } 00378 catch(...) { 00379 isInvalid = true; 00380 } 00381 } 00382 00383 if (isInvalid) { 00384 schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidAttValue, 00385 attValue, attName); 00386 } 00387 } 00388 00389 00390 // --------------------------------------------------------------------------- 00391 // Conditional methods for building the table 00392 // --------------------------------------------------------------------------- 00393 00394 // 00395 // This code will set up the character flags table. Its defined out since 00396 // this table is now written out and hard coded (at the bottom of this 00397 // file) into the code itself. This code is retained in case there is 00398 // any need to recreate it later. 00399 // 00400 00401 #if defined(NEED_TO_GEN_ELEM_ATT_MAP_TABLE) 00402 00403 #include <stdio.h> 00404 00405 void GeneralAttributeCheck::initCharFlagTable() 00406 { 00407 unsigned short attList[E_Count][A_Count]; 00408 00409 for (unsigned int i=0; i < E_Count; i++) { 00410 for (unsigned int j=0; j < A_Count; j++) { 00411 attList[i][j] = 0; 00412 } 00413 } 00414 00415 // 00416 // Write it out to a temp file to be read back into this source later. 00417 // 00418 FILE* outFl = fopen("ea_table.out", "wt+"); 00419 fprintf(outFl, "unsigned short GeneralAttributeCheck::fgElemAttTable[GeneralAttributeCheck::E_Count][GeneralAttributeCheck::A_Count] =\n{\n {"); 00420 00421 //"all" 00422 attList[E_All][A_ID] = Att_Optional | DV_ID; 00423 attList[E_All][A_MaxOccurs] = Att_Optional | DV_MaxOccurs1; 00424 attList[E_All][A_MinOccurs] = Att_Optional | DV_MinOccurs1; 00425 00426 // "annotation" 00427 attList[E_Annotation][A_ID] = Att_Optional | DV_ID; 00428 00429 // "any" 00430 attList[E_Any][A_ID] = Att_Optional | DV_ID; 00431 attList[E_Any][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; 00432 attList[E_Any][A_MinOccurs] = Att_Optional | DV_NonNegInt; 00433 attList[E_Any][A_Namespace] = Att_Optional; 00434 attList[E_Any][A_ProcessContents] = Att_Optional | DV_ProcessContents; 00435 00436 // "anyAttribute" 00437 attList[E_AnyAttribute][A_ID] = Att_Optional | DV_ID; 00438 attList[E_AnyAttribute][A_Namespace] = Att_Optional; 00439 attList[E_AnyAttribute][A_ProcessContents] = Att_Optional | DV_ProcessContents; 00440 00441 // "appinfo" 00442 attList[E_Appinfo][A_Source]= Att_Optional | DV_AnyURI; 00443 00444 // attribute - global" 00445 attList[E_AttributeGlobal][A_Default] = Att_Optional; 00446 attList[E_AttributeGlobal][A_Fixed] = Att_Optional; 00447 attList[E_AttributeGlobal][A_ID] = Att_Optional | DV_ID; 00448 attList[E_AttributeGlobal][A_Name] = Att_Required; 00449 attList[E_AttributeGlobal][A_Type] = Att_Optional; 00450 00451 // "attribute - local" 00452 attList[E_AttributeLocal][A_Default] = Att_Optional; 00453 attList[E_AttributeLocal][A_Fixed] = Att_Optional; 00454 attList[E_AttributeLocal][A_Form]= Att_Optional | DV_Form; 00455 attList[E_AttributeLocal][A_ID] = Att_Optional | DV_ID; 00456 attList[E_AttributeLocal][A_Name] = Att_Required; 00457 attList[E_AttributeLocal][A_Type] = Att_Optional; 00458 attList[E_AttributeLocal][A_Use] = Att_Optional | DV_Use; 00459 00460 // "attribute - ref" 00461 attList[E_AttributeRef][A_Default] = Att_Optional; 00462 attList[E_AttributeRef][A_Fixed] = Att_Optional; 00463 attList[E_AttributeRef][A_ID] = Att_Optional | DV_ID; 00464 attList[E_AttributeRef][A_Ref]= Att_Required; 00465 attList[E_AttributeRef][A_Use] = Att_Optional | DV_Use; 00466 00467 // "attributeGroup - global" 00468 attList[E_AttributeGroupGlobal][A_ID] = Att_Optional | DV_ID; 00469 attList[E_AttributeGroupGlobal][A_Name] = Att_Required; 00470 00471 // "attributeGroup - ref" 00472 attList[E_AttributeGroupRef][A_ID] = Att_Optional | DV_ID; 00473 attList[E_AttributeGroupRef][A_Ref]= Att_Required; 00474 00475 // "choice" 00476 attList[E_Choice][A_ID] = Att_Optional | DV_ID; 00477 attList[E_Choice][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; 00478 attList[E_Choice][A_MinOccurs] = Att_Optional | DV_NonNegInt; 00479 00480 // "complexContent" 00481 attList[E_ComplexContent][A_ID] = Att_Optional | DV_ID; 00482 attList[E_ComplexContent][A_Mixed] = Att_Optional | DV_Boolean; 00483 00484 // "complexType - global" 00485 attList[E_ComplexTypeGlobal][A_Abstract] = Att_Optional | DV_Boolean; 00486 attList[E_ComplexTypeGlobal][A_Block] = Att_Optional; 00487 attList[E_ComplexTypeGlobal][A_Final] = Att_Optional; 00488 attList[E_ComplexTypeGlobal][A_ID] = Att_Optional | DV_ID; 00489 attList[E_ComplexTypeGlobal][A_Mixed] = Att_Optional | DV_Boolean; 00490 attList[E_ComplexTypeGlobal][A_Name] = Att_Required; 00491 00492 // "complexType - local" 00493 attList[E_ComplexTypeLocal][A_ID] = Att_Optional | DV_ID; 00494 attList[E_ComplexTypeLocal][A_Mixed] = Att_Optional | DV_Boolean; 00495 00496 // "documentation" 00497 attList[E_Documentation][A_Source] = Att_Optional | DV_AnyURI; 00498 00499 // "element - global" 00500 attList[E_ElementGlobal][A_Abstract] = Att_Optional | DV_Boolean; 00501 attList[E_ElementGlobal][A_Block] = Att_Optional; 00502 attList[E_ElementGlobal][A_Default] = Att_Optional; 00503 attList[E_ElementGlobal][A_Final] = Att_Optional; 00504 attList[E_ElementGlobal][A_Fixed] = Att_Optional; 00505 attList[E_ElementGlobal][A_ID] = Att_Optional | DV_ID; 00506 attList[E_ElementGlobal][A_Name] = Att_Required; 00507 attList[E_ElementGlobal][A_Nillable] = Att_Optional | DV_Boolean; 00508 attList[E_ElementGlobal][A_SubstitutionGroup] = Att_Optional; 00509 attList[E_ElementGlobal][A_Type] = Att_Optional; 00510 00511 // "element - local" 00512 attList[E_ElementLocal][A_Block]= Att_Optional; 00513 attList[E_ElementLocal][A_Default] = Att_Optional; 00514 attList[E_ElementLocal][A_Fixed] = Att_Optional; 00515 attList[E_ElementLocal][A_Form] = Att_Optional | DV_Form; 00516 attList[E_ElementLocal][A_ID] = Att_Optional | DV_ID; 00517 attList[E_ElementLocal][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; 00518 attList[E_ElementLocal][A_MinOccurs] = Att_Optional | DV_NonNegInt; 00519 attList[E_ElementLocal][A_Name] = Att_Required; 00520 attList[E_ElementLocal][A_Nillable] = Att_Optional | DV_Boolean; 00521 attList[E_ElementLocal][A_Type] = Att_Optional; 00522 00523 //"element - ref" 00524 attList[E_ElementRef][A_ID] = Att_Optional | DV_ID; 00525 attList[E_ElementRef][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; 00526 attList[E_ElementRef][A_MinOccurs] = Att_Optional | DV_NonNegInt; 00527 attList[E_ElementRef][A_Ref] = Att_Required; 00528 00529 // "enumeration" 00530 attList[E_Enumeration][A_ID] = Att_Optional | DV_ID; 00531 attList[E_Enumeration][A_Value] = Att_Optional; 00532 00533 // "extension" 00534 attList[E_Extension][A_Base] = Att_Required; 00535 attList[E_Extension][A_ID] = Att_Optional | DV_ID; 00536 00537 //"field" 00538 attList[E_Field][A_ID] = Att_Optional | DV_ID; 00539 attList[E_Field][A_XPath] = Att_Required; 00540 00541 // "fractionDigits" 00542 attList[E_FractionDigits][A_ID] = Att_Optional | DV_ID; 00543 attList[E_FractionDigits][A_Value] = Att_Optional | DV_NonNegInt; 00544 attList[E_FractionDigits][A_Fixed] = Att_Optional | DV_Boolean; 00545 00546 // "group - global" 00547 attList[E_GroupGlobal][A_ID] = Att_Optional | DV_ID; 00548 attList[E_GroupGlobal][A_Name] = Att_Required; 00549 00550 // "group - ref" 00551 attList[E_GroupRef][A_ID] = Att_Optional | DV_ID; 00552 attList[E_GroupRef][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; 00553 attList[E_GroupRef][A_MinOccurs] = Att_Optional | DV_NonNegInt; 00554 attList[E_GroupRef][A_Ref] = Att_Required; 00555 00556 // "import" 00557 attList[E_Import][A_ID] = Att_Optional | DV_ID; 00558 attList[E_Import][A_Namespace] = Att_Optional; 00559 attList[E_Import][A_SchemaLocation] = Att_Optional; 00560 00561 // "include" 00562 attList[E_Include][A_ID] = Att_Optional | DV_ID; 00563 attList[E_Include][A_SchemaLocation] = Att_Required; 00564 00565 // "key" 00566 attList[E_Key][A_ID] = Att_Optional | DV_ID; 00567 attList[E_Key][A_Name] = Att_Required; 00568 00569 // "keyref" 00570 attList[E_KeyRef][A_ID] = Att_Optional | DV_ID; 00571 attList[E_KeyRef][A_Name] = Att_Required; 00572 attList[E_KeyRef][A_Refer] = Att_Required; 00573 00574 // "length" 00575 attList[E_Length][A_ID] = Att_Optional | DV_ID; 00576 attList[E_Length][A_Value] = Att_Optional | DV_NonNegInt; 00577 attList[E_Length][A_Fixed] = Att_Optional | DV_Boolean; 00578 00579 // "list" 00580 attList[E_List][A_ID] = Att_Optional | DV_ID; 00581 attList[E_List][A_ItemType] = Att_Optional; 00582 00583 // "maxExclusive" 00584 attList[E_MaxExclusive][A_ID] = Att_Optional | DV_ID; 00585 attList[E_MaxExclusive][A_Value] = Att_Optional; 00586 attList[E_MaxExclusive][A_Fixed] = Att_Optional | DV_Boolean; 00587 00588 // "maxInclusive" 00589 attList[E_MaxInclusive][A_ID] = Att_Optional | DV_ID; 00590 attList[E_MaxInclusive][A_Value] = Att_Optional; 00591 attList[E_MaxInclusive][A_Fixed] = Att_Optional | DV_Boolean; 00592 00593 // "maxLength" 00594 attList[E_MaxLength][A_ID] = Att_Optional | DV_ID; 00595 attList[E_MaxLength][A_Value] = Att_Optional | DV_NonNegInt; 00596 attList[E_MaxLength][A_Fixed] = Att_Optional | DV_Boolean; 00597 00598 // "minExclusive" 00599 attList[E_MinExclusive][A_ID] = Att_Optional | DV_ID; 00600 attList[E_MinExclusive][A_Value] = Att_Optional; 00601 attList[E_MinExclusive][A_Fixed] = Att_Optional | DV_Boolean; 00602 00603 // "minInclusive" 00604 attList[E_MinInclusive][A_ID] = Att_Optional | DV_ID; 00605 attList[E_MinInclusive][A_Value] = Att_Optional; 00606 attList[E_MinInclusive][A_Fixed] = Att_Optional | DV_Boolean; 00607 00608 // "minLength" 00609 attList[E_MinLength][A_ID] = Att_Optional | DV_ID; 00610 attList[E_MinLength][A_Value] = Att_Optional | DV_NonNegInt; 00611 attList[E_MinLength][A_Fixed] = Att_Optional | DV_Boolean; 00612 00613 // "notation" 00614 attList[E_Notation][A_ID] = Att_Optional | DV_ID; 00615 attList[E_Notation][A_Name] = Att_Required; 00616 attList[E_Notation][A_Public] = Att_Optional; 00617 attList[E_Notation][A_System] = Att_Optional | DV_AnyURI; 00618 00619 // "pattern" 00620 attList[E_Pattern][A_ID] = Att_Optional; 00621 attList[E_Pattern][A_Value] = Att_Optional; 00622 00623 // "redefine" 00624 attList[E_Redefine][A_ID] = Att_Optional | DV_ID; 00625 attList[E_Redefine][A_SchemaLocation] = Att_Required; 00626 00627 // "restriction" 00628 attList[E_Restriction][A_Base] = Att_Optional; 00629 attList[E_Restriction][A_ID] = Att_Optional | DV_ID; 00630 00631 // "schema" 00632 attList[E_Schema][A_AttributeFormDefault] = Att_Optional | DV_Form; 00633 attList[E_Schema][A_BlockDefault] = Att_Optional; 00634 attList[E_Schema][A_ElementFormDefault] = Att_Optional | DV_Form; 00635 attList[E_Schema][A_FinalDefault] = Att_Optional; 00636 attList[E_Schema][A_ID] = Att_Optional | DV_ID; 00637 attList[E_Schema][A_TargetNamespace] = Att_Optional; 00638 attList[E_Schema][A_Version] = Att_Optional; 00639 00640 // "selector" 00641 attList[E_Selector][A_ID] = Att_Optional | DV_ID; 00642 attList[E_Selector][A_XPath] = Att_Required; 00643 00644 // "sequence" 00645 attList[E_Sequence][A_ID] = Att_Optional | DV_ID; 00646 attList[E_Sequence][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; 00647 attList[E_Sequence][A_MinOccurs] = Att_Optional | DV_NonNegInt; 00648 00649 // "simpleContent" 00650 attList[E_SimpleContent][A_ID] = Att_Optional | DV_ID; 00651 00652 // "simpleType - global" 00653 attList[E_SimpleTypeGlobal][A_Final] = Att_Optional; 00654 attList[E_SimpleTypeGlobal][A_ID] = Att_Optional | DV_ID; 00655 attList[E_SimpleTypeGlobal][A_Name] = Att_Required; 00656 00657 // "simpleType - local" 00658 attList[E_SimpleTypeLocal][A_Final] = Att_Optional; 00659 attList[E_SimpleTypeLocal][A_ID] = Att_Optional | DV_ID; 00660 00661 // "totalDigits" 00662 attList[E_TotalDigits][A_ID] = Att_Optional | DV_ID; 00663 attList[E_TotalDigits][A_Value] = Att_Optional | DV_NonNegInt; 00664 attList[E_TotalDigits][A_Fixed] = Att_Optional | DV_Boolean; 00665 00666 // "union" 00667 attList[E_Union][A_ID] = Att_Optional | DV_ID; 00668 attList[E_Union][A_MemberTypes] = Att_Optional; 00669 00670 // "unique" 00671 attList[E_Unique][A_ID] = Att_Optional | DV_ID; 00672 attList[E_Unique][A_Name] = Att_Required; 00673 00674 // "whitespace" 00675 attList[E_WhiteSpace][A_ID] = Att_Optional | DV_ID; 00676 attList[E_WhiteSpace][A_Value] = Att_Optional | DV_WhiteSpace; 00677 attList[E_WhiteSpace][A_Fixed] = Att_Optional | DV_Boolean; 00678 00679 for (unsigned int j=0; j < E_Count; j++) { 00680 00681 for (unsigned int index = 0; index < A_Count-1; index++) 00682 { 00683 fprintf(outFl, " %d,", attList[j][index]); 00684 } 00685 00686 fprintf(outFl, " %d", attList[j][A_Count - 1]); 00687 00688 if (j + 1 == E_Count) 00689 fprintf(outFl, "}\n};"); 00690 else 00691 fprintf(outFl, "},\n {"); 00692 } 00693 00694 fclose(outFl); 00695 } 00696 00697 #endif 00698 00699 00700 unsigned short GeneralAttributeCheck::fgElemAttTable[GeneralAttributeCheck::E_Count][GeneralAttributeCheck::A_Count] = 00701 { 00702 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 258, 0, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00703 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00704 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 2, 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00705 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 2, 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00706 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, 00707 { 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0}, 00708 { 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 66, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2050, 0, 0, 0}, 00709 { 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 0}, 00710 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00711 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00712 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00713 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00714 { 18, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00715 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00716 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, 00717 { 18, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 34, 0, 0, 0, 0, 0, 1, 0, 18, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0}, 00718 { 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 66, 34, 0, 130, 0, 10, 0, 1, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0}, 00719 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00720 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, 00721 { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00722 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 00723 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, 00724 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00725 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00726 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00727 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00728 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00729 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00730 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, 00731 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00732 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, 00733 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, 00734 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, 00735 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, 00736 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, 00737 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, 00738 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0}, 00739 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, 00740 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00741 { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00742 { 0, 66, 0, 0, 2, 0, 66, 0, 2, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0}, 00743 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 00744 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00745 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00746 { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00747 { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00748 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, 00749 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00750 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 00751 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4098, 0, 0} 00752 }; 00753 00754 const XMLCh* GeneralAttributeCheck::fAttNames[GeneralAttributeCheck::A_Count] = 00755 { 00756 SchemaSymbols::fgATT_ABSTRACT, 00757 SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT, 00758 SchemaSymbols::fgATT_BASE, 00759 SchemaSymbols::fgATT_BLOCK, 00760 SchemaSymbols::fgATT_BLOCKDEFAULT, 00761 SchemaSymbols::fgATT_DEFAULT, 00762 SchemaSymbols::fgATT_ELEMENTFORMDEFAULT, 00763 SchemaSymbols::fgATT_FINAL, 00764 SchemaSymbols::fgATT_FINALDEFAULT, 00765 SchemaSymbols::fgATT_FIXED, 00766 SchemaSymbols::fgATT_FORM, 00767 SchemaSymbols::fgATT_ID, 00768 SchemaSymbols::fgATT_ITEMTYPE, 00769 SchemaSymbols::fgATT_MAXOCCURS, 00770 SchemaSymbols::fgATT_MEMBERTYPES, 00771 SchemaSymbols::fgATT_MINOCCURS, 00772 SchemaSymbols::fgATT_MIXED, 00773 SchemaSymbols::fgATT_NAME, 00774 SchemaSymbols::fgATT_NAMESPACE, 00775 SchemaSymbols::fgATT_NILLABLE, 00776 SchemaSymbols::fgATT_PROCESSCONTENTS, 00777 SchemaSymbols::fgATT_PUBLIC, 00778 SchemaSymbols::fgATT_REF, 00779 SchemaSymbols::fgATT_REFER, 00780 SchemaSymbols::fgATT_SCHEMALOCATION, 00781 SchemaSymbols::fgATT_SOURCE, 00782 SchemaSymbols::fgATT_SUBSTITUTIONGROUP, 00783 SchemaSymbols::fgATT_SYSTEM, 00784 SchemaSymbols::fgATT_TARGETNAMESPACE, 00785 SchemaSymbols::fgATT_TYPE, 00786 SchemaSymbols::fgATT_USE, 00787 SchemaSymbols::fgATT_VALUE, 00788 SchemaSymbols::fgATT_VERSION, 00789 SchemaSymbols::fgATT_XPATH, 00790 }; 00791 00792 XERCES_CPP_NAMESPACE_END 00793