void processDatatypeValidator( const DatatypeValidator* dtValidator, bool margin ) { if( !dtValidator ) { return; } if( margin ) { XERCES_STD_QUALIFIER cout << "\t"; } XERCES_STD_QUALIFIER cout << "Base Datatype:\t\t"; switch( dtValidator->getType() ) { case DatatypeValidator::String: XERCES_STD_QUALIFIER cout << "string"; break; case DatatypeValidator::AnyURI: XERCES_STD_QUALIFIER cout << "AnyURI"; break; case DatatypeValidator::QName: XERCES_STD_QUALIFIER cout << "QName"; break; case DatatypeValidator::Name: XERCES_STD_QUALIFIER cout << "Name"; break; case DatatypeValidator::NCName: XERCES_STD_QUALIFIER cout << "NCName"; break; case DatatypeValidator::Boolean: XERCES_STD_QUALIFIER cout << "Boolean"; break; case DatatypeValidator::Float: XERCES_STD_QUALIFIER cout << "Float"; break; case DatatypeValidator::Double: XERCES_STD_QUALIFIER cout << "Double"; break; case DatatypeValidator::Decimal: XERCES_STD_QUALIFIER cout << "Decimal"; break; case DatatypeValidator::HexBinary: XERCES_STD_QUALIFIER cout << "HexBinary"; break; case DatatypeValidator::Base64Binary: XERCES_STD_QUALIFIER cout << "Base64Binary";break; case DatatypeValidator::Duration: XERCES_STD_QUALIFIER cout << "Duration"; break; case DatatypeValidator::DateTime: XERCES_STD_QUALIFIER cout << "DateTime"; break; case DatatypeValidator::Date: XERCES_STD_QUALIFIER cout << "Date"; break; case DatatypeValidator::Time: XERCES_STD_QUALIFIER cout << "Time"; break; case DatatypeValidator::MonthDay: XERCES_STD_QUALIFIER cout << "MonthDay"; break; case DatatypeValidator::YearMonth: XERCES_STD_QUALIFIER cout << "YearMonth"; break; case DatatypeValidator::Year: XERCES_STD_QUALIFIER cout << "Year"; break; case DatatypeValidator::Month: XERCES_STD_QUALIFIER cout << "Month"; break; case DatatypeValidator::Day: XERCES_STD_QUALIFIER cout << "Day"; break; case DatatypeValidator::ID: XERCES_STD_QUALIFIER cout << "ID"; break; case DatatypeValidator::IDREF: XERCES_STD_QUALIFIER cout << "IDREF"; break; case DatatypeValidator::ENTITY: XERCES_STD_QUALIFIER cout << "ENTITY"; break; case DatatypeValidator::NOTATION: XERCES_STD_QUALIFIER cout << "NOTATION"; break; case DatatypeValidator::List: XERCES_STD_QUALIFIER cout << "List"; break; case DatatypeValidator::Union: XERCES_STD_QUALIFIER cout << "Union"; break; case DatatypeValidator::AnySimpleType: XERCES_STD_QUALIFIER cout << "AnySimpleType"; break; case DatatypeValidator::UnKnown: XERCES_STD_QUALIFIER cout << "UNKNOWN"; break; } XERCES_STD_QUALIFIER cout << "\n"; // Facets RefHashTableOf<KVStringPair>* facets = dtValidator->getFacets(); if( facets && facets->getCount()>0) { XMLSize_t i; // Element's properties XERCES_STD_QUALIFIER cout << "Facets:\t\t\n"; // use a list to print them sorted, or the list could be different on 64-bit machines RefVectorOf<XMLCh> sortedList(facets->getCount(), false); RefHashTableOfEnumerator<KVStringPair> enumFacets(facets); while( enumFacets.hasMoreElements() ) { const KVStringPair& curPair = enumFacets.nextElement(); const XMLCh* key=curPair.getKey(); XMLSize_t len=sortedList.size(); for(i=0;i<len;i++) if(XMLString::compareString(key, sortedList.elementAt(i))<0) { sortedList.insertElementAt((XMLCh*)key,i); break; } if(i==len) sortedList.addElement((XMLCh*)key); } XMLSize_t len=sortedList.size(); for(i=0;i<len;i++) { const XMLCh* key = sortedList.elementAt(i); XERCES_STD_QUALIFIER cout << "\t" << StrX( key ) << "=" << StrX( facets->get(key)->getValue() ) << "\n"; } } // Enumerations RefVectorOf<XMLCh>* enums = (RefVectorOf<XMLCh>*) dtValidator->getEnumString(); if (enums) { XERCES_STD_QUALIFIER cout << "Enumeration:\t\t\n"; XMLSize_t enumLength = enums->size(); for ( XMLSize_t i = 0; i < enumLength; i++) { XERCES_STD_QUALIFIER cout << "\t" << StrX( enums->elementAt(i)) << "\n"; } } }