tng         2002/11/26 13:20:09

  Modified:    c/src/xercesc/validators/schema SchemaValidator.cpp
  Log:
  Schema Fix: List can have Union, and Union can have List.  So need to check its 
items for ID/IDREF/Entity.
  
  Revision  Changes    Path
  1.19      +33 -0     xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp
  
  Index: SchemaValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- SchemaValidator.cpp       7 Nov 2002 21:57:37 -0000       1.18
  +++ SchemaValidator.cpp       26 Nov 2002 21:20:09 -0000      1.19
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.19  2002/11/26 21:20:09  tng
  + * Schema Fix: List can have Union, and Union can have List.  So need to check its 
items for ID/IDREF/Entity.
  + *
    * Revision 1.18  2002/11/07 21:57:37  tng
    * Fix the following Schema Test Failures:
    * 1. Typo when comparing miscFlags with FIXED
  @@ -351,6 +354,21 @@
                           else if (itemDTVType == DatatypeValidator::IDREF) {
                               
((IDREFDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList());
                           }
  +                        else if (itemDTVType == DatatypeValidator::Union) {
  +                            RefVectorOf<DatatypeValidator>* memberDTV = 
((UnionDatatypeValidator*)itemDTV)->getMemberTypeValidators();
  +                            unsigned int memberTypeNumber = memberDTV->size();
  +                            for ( unsigned int memberIndex = 0; memberIndex < 
memberTypeNumber; ++memberIndex)
  +                            {
  +                                DatatypeValidator::ValidatorType memberDTVType = 
memberDTV->elementAt(memberIndex)->getType();
  +                                if (memberDTVType == DatatypeValidator::ENTITY)
  +                                    
((ENTITYDatatypeValidator*)memberDTV->elementAt(memberIndex))->setEntityDeclPool(getScanner()->getEntityDeclPool());
  +                                else if (memberDTVType == DatatypeValidator::ID)
  +                                    
((IDDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList());
  +                                else if (memberDTVType == DatatypeValidator::IDREF) 
{
  +                                    
((IDREFDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList());
  +                                }
  +                            }
  +                        }
                       }
                       else if (eleDefDVType == DatatypeValidator::Union) {
                           RefVectorOf<DatatypeValidator>* memberDTV = 
((UnionDatatypeValidator*)fCurrentDV)->getMemberTypeValidators();
  @@ -364,6 +382,17 @@
                                   
((IDDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList());
                               else if (memberDTVType == DatatypeValidator::IDREF) {
                                   
((IDREFDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList());
  +                            }
  +                            else if (memberDTVType == DatatypeValidator::List) {
  +                                DatatypeValidator* itemDTV = 
((ListDatatypeValidator*)memberDTV->elementAt(memberIndex))->getItemTypeDTV();
  +                                DatatypeValidator::ValidatorType itemDTVType = 
itemDTV->getType();
  +                                if (itemDTVType == DatatypeValidator::ENTITY)
  +                                    
((ENTITYDatatypeValidator*)itemDTV)->setEntityDeclPool(getScanner()->getEntityDeclPool());
  +                                else if (itemDTVType == DatatypeValidator::ID)
  +                                    
((IDDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList());
  +                                else if (itemDTVType == DatatypeValidator::IDREF) {
  +                                    
((IDREFDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList());
  +                                }
                               }
                           }
                       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to