diff --git a/src/validators/schema/GeneralAttributeCheck.cpp b/src/validators/schema/GeneralAttributeCheck.cpp
index 115adffc4baa08ff977c236c9aff35b45abc9bec..198785bc4aa52a41aaa555c6c1a213de332c76f4 100644
--- a/src/validators/schema/GeneralAttributeCheck.cpp
+++ b/src/validators/schema/GeneralAttributeCheck.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.4  2001/06/06 13:09:02  knoaman
+ * Use BooleanDatatypeValidator to validate values.
+ *
  * Revision 1.3  2001/05/18 20:05:30  knoaman
  * Modified wording of error messages.
  *
@@ -187,19 +190,19 @@ void GeneralAttributeCheck::setUpAttributes() {
                           SchemaSymbols::fgATTVAL_FALSE, DT_Boolean);
 
     fAttributes[Att_Attribute_FD_D] =
-		new AttributeInfo(SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT, Att_Optional_Default,
+        new AttributeInfo(SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT, Att_Optional_Default,
                           SchemaSymbols::fgATTVAL_UNQUALIFIED, DT_Form);
 
     fAttributes[Att_Base_R] = 
-		new AttributeInfo(SchemaSymbols::fgATT_BASE, Att_Required,
+        new AttributeInfo(SchemaSymbols::fgATT_BASE, Att_Required,
                           0, 0);
 
     fAttributes[Att_Base_N] = 
-		new AttributeInfo(SchemaSymbols::fgATT_BASE, Att_Optional_NoDefault,
+        new AttributeInfo(SchemaSymbols::fgATT_BASE, Att_Optional_NoDefault,
                           0, 0);
 
     fAttributes[Att_Block_N] =
-	    new AttributeInfo(SchemaSymbols::fgATT_BLOCK, Att_Optional_NoDefault,
+        new AttributeInfo(SchemaSymbols::fgATT_BLOCK, Att_Optional_NoDefault,
                           0, DT_Block);
 
     fAttributes[Att_Block1_N] =
@@ -222,7 +225,7 @@ void GeneralAttributeCheck::setUpAttributes() {
         new AttributeInfo(SchemaSymbols::fgATT_FINAL, Att_Optional_NoDefault,
                           0, DT_Final);
 
-	fAttributes[Att_Final1_N] =
+    fAttributes[Att_Final1_N] =
         new AttributeInfo(SchemaSymbols::fgATT_FINAL, Att_Optional_NoDefault,
                           0, DT_Final1);
         
@@ -369,10 +372,13 @@ void GeneralAttributeCheck::setUpValidators() {
 
     DatatypeValidatorFactory dvFactory;
 
-	dvFactory.expandRegistryToFullSchemaSet();
+    dvFactory.expandRegistryToFullSchemaSet();
     fValidators[DT_NonNegInt] = 
         dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER);
 
+    fValidators[DT_Boolean] = 
+        dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_BOOLEAN);
+
     // TO DO - add remaining valdiators
 }
 
@@ -387,11 +393,11 @@ void GeneralAttributeCheck::mapElements() {
 
     RefVectorOf<AttributeInfo>* attList = 0;
     int prefixContext = globalPrefix;
-	
+
     fElementMap = new RefHash2KeysTableOf<RefVectorOfAttributeInfo>(25);
 
     // element "attribute" - global
-	attList = new RefVectorOf<AttributeInfo>(5, false);
+    attList = new RefVectorOf<AttributeInfo>(5, false);
     attList->addElement(fAttributes[Att_Default_N]);
     attList->addElement(fAttributes[Att_Fixed_N]);
     attList->addElement(fAttributes[Att_ID_N]);
@@ -457,7 +463,7 @@ void GeneralAttributeCheck::mapElements() {
 
     // for element "redefine" - global (same as include)
 
-	// element "attributeGroup" - global
+    // element "attributeGroup" - global
 
     // element "group" - global
 
@@ -487,7 +493,7 @@ void GeneralAttributeCheck::mapElements() {
 
     // element "attribute" - local name
     prefixContext = localNamePrefix;
-	attList = new RefVectorOf<AttributeInfo>(7, false);
+    attList = new RefVectorOf<AttributeInfo>(7, false);
     attList->addElement(fAttributes[Att_Default_N]);
     attList->addElement(fAttributes[Att_Fixed_N]);
     attList->addElement(fAttributes[Att_Form_N]);
@@ -694,7 +700,7 @@ void GeneralAttributeCheck::mapElements() {
 // ---------------------------------------------------------------------------
 void GeneralAttributeCheck::cleanUp() {
 
-	for (unsigned int index = 0; index < Att_Count; index++) {
+    for (unsigned int index = 0; index < Att_Count; index++) {
             delete fAttributes[index];
     }
 
@@ -708,14 +714,14 @@ void GeneralAttributeCheck::cleanUp() {
 // ---------------------------------------------------------------------------
 GeneralAttributeCheck* GeneralAttributeCheck::instance() {
 
-	if (!fInstance) {
+    if (!fInstance) {
 
-		fInstance = new GeneralAttributeCheck();
+        fInstance = new GeneralAttributeCheck();
         XMLPlatformUtils::registerLazyData
         (
             new XMLDeleterFor<GeneralAttributeCheck>(fInstance)
         );
-	}
+    }
 
     return fInstance;
 }
@@ -732,20 +738,20 @@ GeneralAttributeCheck::checkAttributes(const DOM_Element& elem,
         return;
     }
 
-	DOMString                   name = elem.getLocalName();
+    DOMString                   name = elem.getLocalName();
     int                         prefixContext = globalPrefix;
     unsigned int                nameLen = name.length();
     XMLCh*                      elemName = 0;
     const XMLCh*                contextStr = fgGlobal;
     RefVectorOf<AttributeInfo>* elemAttrs = 0;
 
-	if (nameLen) {
+    if (nameLen) {
         elemName = new XMLCh[nameLen + 1];
         XMLString::copyNString(elemName, name.rawBuffer(), nameLen);
         elemName[nameLen] = chNull;
     }
 
-	ArrayJanitor<XMLCh> janName(elemName);
+    ArrayJanitor<XMLCh> janName(elemName);
 
     if (elemContext == LocalContext) {
 
@@ -761,19 +767,19 @@ GeneralAttributeCheck::checkAttributes(const DOM_Element& elem,
 
     elemAttrs = fElementMap->get(elemName, prefixContext);
 
-	if (!elemAttrs) {
+    if (!elemAttrs) {
         // We should report an error
         return;
     }
 
-	unsigned int           size = elemAttrs->size();
+    unsigned int           size = elemAttrs->size();
     RefHashTableOf<XMLCh>  attNameList(5);
 
     for (unsigned int i=0; i< size; i++) {
 
         AttributeInfo* attInfo = elemAttrs->elementAt(i);
 
-		if (attInfo) {
+        if (attInfo) {
 
             XMLCh* attName = attInfo->getName();
             DOMString attValue = elem.getAttribute(attName);
@@ -786,7 +792,7 @@ GeneralAttributeCheck::checkAttributes(const DOM_Element& elem,
                 fBuffer.set(attValue.rawBuffer(), attValueLen);
                 validate(attName, fBuffer.getRawBuffer(),
                          attInfo->getValidatorIndex(), schema);
-			}
+            }
             else {
                 if (attInfo->getDefaultOption() == Att_Required) {
                     schema->reportSchemaError(XMLUni::fgXMLErrDomain, 
@@ -799,30 +805,30 @@ GeneralAttributeCheck::checkAttributes(const DOM_Element& elem,
     // ------------------------------------------------------------------
     // Check for disallowed attributes
     // ------------------------------------------------------------------
-	DOM_NamedNodeMap eltAttrs = elem.getAttributes();
+    DOM_NamedNodeMap eltAttrs = elem.getAttributes();
     int attrCount = eltAttrs.getLength();
 
     for (int j = 0; j < attrCount; j++) {
 
         DOM_Node  attribute = eltAttrs.item(j);
 
-		if (attribute.isNull()) {
+        if (attribute.isNull()) {
             break;
         }
 
         // Bypass attributes that start with xml 
         DOMString attName = attribute.getNodeName();
-		fBuffer.set(attName.rawBuffer(), attName.length());
-		XMLCh* tmpName = fBuffer.getRawBuffer();
+        fBuffer.set(attName.rawBuffer(), attName.length());
+        XMLCh* tmpName = fBuffer.getRawBuffer();
 
         if ((*tmpName == chLatin_X || *tmpName == chLatin_x)
            && (*(tmpName+1) == chLatin_M || *(tmpName+1) == chLatin_m)
            && (*(tmpName+2) == chLatin_L || *(tmpName+2) == chLatin_l)) {
             continue;
-		}
+        }
 
-	    attName = attribute.getLocalName();
-		fBuffer.set(attName.rawBuffer(), attName.length());
+        attName = attribute.getLocalName();
+        fBuffer.set(attName.rawBuffer(), attName.length());
 
         if (!attNameList.containsKey(fBuffer.getRawBuffer())) {
             schema->reportSchemaError(XMLUni::fgXMLErrDomain,
@@ -837,7 +843,7 @@ void GeneralAttributeCheck::validate(const XMLCh* const attName,
                                      const short dvIndex,
                                      TraverseSchema* const schema)
 {
-	bool isInvalid = false;
+    bool isInvalid = false;
     DatatypeValidator* dv = 0;
 
     switch (dvIndex) {
@@ -846,10 +852,10 @@ void GeneralAttributeCheck::validate(const XMLCh* const attName,
             && XMLString::compareString(attValue, SchemaSymbols::fgATTVAL_UNQUALIFIED) != 0) {
             isInvalid = true;
         }
-		break;
+        break;
     case DT_MaxOccurs:
             // maxOccurs = (nonNegativeInteger | unbounded)
-		if (XMLString::compareString(attValue, fgUnbounded) != 0) {
+        if (XMLString::compareString(attValue, fgUnbounded) != 0) {
             dv = fValidators[DT_NonNegInt];
         }
         break;
@@ -886,14 +892,11 @@ void GeneralAttributeCheck::validate(const XMLCh* const attName,
         }
         break;
     case DT_Boolean:
-        if (XMLString::compareString(attValue, SchemaSymbols::fgATTVAL_TRUE) != 0
-            && XMLString::compareString(attValue, SchemaSymbols::fgATTVAL_FALSE) != 0) {
-            isInvalid = true;
-        }
+        dv = fValidators[DT_Boolean];
         break;
     case DT_NonNegInt:
-		dv = fValidators[DT_NonNegInt];
-		break;
+        dv = fValidators[DT_NonNegInt];
+        break;
     }
 
     if (dv) {
@@ -905,11 +908,11 @@ void GeneralAttributeCheck::validate(const XMLCh* const attName,
         }
     }
 
-	if (isInvalid) {
-		      schema->reportSchemaError(XMLUni::fgXMLErrDomain, 
+    if (isInvalid) {
+              schema->reportSchemaError(XMLUni::fgXMLErrDomain, 
                                       XMLErrs::InvalidAttValue,
                                       attValue, attName);
-	}
+    }
 }
 
 /**
diff --git a/src/validators/schema/GeneralAttributeCheck.hpp b/src/validators/schema/GeneralAttributeCheck.hpp
index 8fb1cd92fa777e2ead0c36610fafbf0040bc8c2b..d9a793b964615c4dda2b9001ffbd097c2f2fbb59 100644
--- a/src/validators/schema/GeneralAttributeCheck.hpp
+++ b/src/validators/schema/GeneralAttributeCheck.hpp
@@ -91,7 +91,7 @@ public:
                   const XMLCh* const defaultValue, const short dvIndex);
     ~AttributeInfo();
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  Getter methods
     // -----------------------------------------------------------------------
     short  getDefaultOption() const;
@@ -101,7 +101,7 @@ public:
 
 
 private:
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  CleanUp methods
     // -----------------------------------------------------------------------
     void cleanUp();
@@ -133,20 +133,20 @@ public:
     // -----------------------------------------------------------------------
     //  Instance methods
     // -----------------------------------------------------------------------
-	static GeneralAttributeCheck* instance();
+    static GeneralAttributeCheck* instance();
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  Public Constants
     // -----------------------------------------------------------------------
     static const unsigned short GlobalContext;
     static const unsigned short LocalContext;
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  Validation methods
     // -----------------------------------------------------------------------
-	void checkAttributes(const DOM_Element& elem,
+    void checkAttributes(const DOM_Element& elem,
                          const unsigned short elemContext,
-						 TraverseSchema* const schema);
+                         TraverseSchema* const schema);
 
 private:
     // -----------------------------------------------------------------------
@@ -154,31 +154,31 @@ private:
     // -----------------------------------------------------------------------
     GeneralAttributeCheck();
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  Unimplemented constructors and operators
     // -----------------------------------------------------------------------
     GeneralAttributeCheck(const GeneralAttributeCheck&);
     void operator=(const GeneralAttributeCheck&);
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  Setup methods
     // -----------------------------------------------------------------------
     void setUpAttributes();
     void setUpValidators();
     void mapElements();
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  CleanUp methods
     // -----------------------------------------------------------------------
     void cleanUp();
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  Validation methods
     // -----------------------------------------------------------------------
     void validate(const XMLCh* const attName, const XMLCh* const attValue,
                   const short dvIndex, TraverseSchema* const schema);
 
-	// -----------------------------------------------------------------------
+    // -----------------------------------------------------------------------
     //  Private Constants
     // -----------------------------------------------------------------------
     // attributes 
@@ -228,13 +228,13 @@ private:
         Att_Value_WS_N,
         Att_Version_N,
 
-		// TO DO - Add XPath
+        // TO DO - Add XPath
 
         Att_Count
     };
 
-	// direct value compare
-	enum {
+    // direct value compare
+    enum {
         DT_Block = -1,
         DT_Block1 = -2,
         DT_Final = -3,
@@ -248,8 +248,7 @@ private:
         DT_ProcessContents = -11,
         DT_Public = -12,
         DT_Use = -13,
-        DT_WhiteSpace = -14,
-        DT_Boolean = -15
+        DT_WhiteSpace = -14
     };
 
     // datatype validators
@@ -259,8 +258,9 @@ private:
         DT_NonNegInt,
         DT_QName,
         DT_Token,
+        DT_Boolean,
 
-		// add XPath
+        // add XPath
         DT_Count
     };