knoaman     2004/11/25 06:36:40

  Modified:    c/src/xercesc/validators/common AllContentModel.cpp
                        AllContentModel.hpp
  Log:
  Fix problem with an All content model with minOccurs of 0.
  
  Revision  Changes    Path
  1.11      +10 -2     
xml-xerces/c/src/xercesc/validators/common/AllContentModel.cpp
  
  Index: AllContentModel.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/common/AllContentModel.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AllContentModel.cpp       16 Sep 2004 13:32:03 -0000      1.10
  +++ AllContentModel.cpp       25 Nov 2004 14:36:40 -0000      1.11
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.11  2004/11/25 14:36:40  knoaman
  + * Fix problem with an All content model with minOccurs of 0.
  + *
    * Revision 1.10  2004/09/16 13:32:03  amassari
    * Updated error message for UPA to also state the complex type that is 
failing the test
    *
  @@ -84,6 +87,7 @@
    , fChildOptional(0)
    , fNumRequired(0)
    , fIsMixed(isMixed)
  + , fHasOptionalContent(false)
   {
       //
       //  Create a vector of unsigned ints that will be filled in with the
  @@ -105,6 +109,10 @@
           ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_NoParentCSN, 
fMemoryManager);
   
       // And now call the private recursive method that iterates the tree
  +    if (curNode->getType() == ContentSpecNode::All
  +        && curNode->getMinOccurs() == 0) {
  +        fHasOptionalContent = true;
  +    }
       buildChildList(curNode, children, childOptional);
   
       //
  @@ -144,7 +152,7 @@
   {
       // If <all> had minOccurs of zero and there are
       // no children to validate, trivially validate
  -    if (!fNumRequired && !childCount)
  +    if (childCount == 0 && (fHasOptionalContent || !fNumRequired))
           return -1;
   
       // Check for duplicate element
  @@ -221,7 +229,7 @@
   
       // If <all> had minOccurs of zero and there are
       // no children to validate, trivially validate
  -    if (!fNumRequired && !childCount)
  +    if (childCount == 0 && (fHasOptionalContent || !fNumRequired))
           return -1;
   
       // Check for duplicate element
  
  
  
  1.9       +4 -1      
xml-xerces/c/src/xercesc/validators/common/AllContentModel.hpp
  
  Index: AllContentModel.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/common/AllContentModel.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- AllContentModel.hpp       16 Sep 2004 13:32:03 -0000      1.8
  +++ AllContentModel.hpp       25 Nov 2004 14:36:40 -0000      1.9
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.9  2004/11/25 14:36:40  knoaman
  + * Fix problem with an All content model with minOccurs of 0.
  + *
    * Revision 1.8  2004/09/16 13:32:03  amassari
    * Updated error message for UPA to also state the complex type that is 
failing the test
    *
  @@ -163,7 +166,7 @@
       bool*           fChildOptional;
       unsigned int    fNumRequired;
       bool            fIsMixed;
  -
  +    bool            fHasOptionalContent;
   };
   
   inline ContentLeafNameTypeVector* 
AllContentModel::getContentLeafNameTypeVector() const
  
  
  

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

Reply via email to