diff --git a/src/xercesc/internal/XSObjectFactory.cpp b/src/xercesc/internal/XSObjectFactory.cpp
index 5a10f2e8558cbfc4a79ee481822832fc665cea98..6336601b79a923d09e3d1a50bd053bf820b37504 100644
--- a/src/xercesc/internal/XSObjectFactory.cpp
+++ b/src/xercesc/internal/XSObjectFactory.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.21  2004/03/05 16:28:21  knoaman
+ * PSVI: prohibited attributes should not be part of attribute use. Patch by Mike Boos.
+ *
  * Revision 1.20  2004/02/05 18:09:53  cargilld
  * Fix a seg fault with PSVI and set basetype of anysimpletype to be anytype.
  *
@@ -676,9 +679,12 @@ XSObjectFactory::addOrFind(ComplexTypeInfo* const typeInfo,
                 else
                     xsAttDecl = addOrFind(&attDef, xsModel, xsObj);
 
-                XSAttributeUse* attUse = createXSAttributeUse(xsAttDecl, xsModel);
-                xsAttList->addElement(attUse);
-                processAttUse(&attDef, attUse);
+                if (attDef.getDefaultType() != XMLAttDef::Prohibited) {
+
+                    XSAttributeUse* attUse = createXSAttributeUse(xsAttDecl, xsModel);
+                    xsAttList->addElement(attUse);
+                    processAttUse(&attDef, attUse);
+                }
             }
         }
 
@@ -858,7 +864,7 @@ XSObjectFactory::createXSAttGroupDefinition(XercesAttGroupInfo* const attGroupIn
             else
                 xsAttDecl = addOrFind(attDef, xsModel);
 
-            if (xsAttDecl) // just for sanity
+            if (xsAttDecl && (attDef->getDefaultType() != XMLAttDef::Prohibited)) // just for sanity
             {
                 XSAttributeUse* attUse = createXSAttributeUse(xsAttDecl, xsModel);
                 xsAttList->addElement(attUse);