You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2004/11/25 15:36:40 UTC

cvs commit: xml-xerces/c/src/xercesc/validators/common AllContentModel.cpp AllContentModel.hpp

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: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org