cargilld    2004/10/27 08:24:22

  Modified:    c/src/xercesc/validators/schema TraverseSchema.cpp
  Log:
  Fix problem where an XSAnnotation was not being created if it didn't have a child 
(document or appinfo).
  
  Revision  Changes    Path
  1.123     +29 -19    xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp
  
  Index: TraverseSchema.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp,v
  retrieving revision 1.122
  retrieving revision 1.123
  diff -u -r1.122 -r1.123
  --- TraverseSchema.cpp        30 Sep 2004 13:14:28 -0000      1.122
  +++ TraverseSchema.cpp        27 Oct 2004 15:24:22 -0000      1.123
  @@ -438,31 +438,41 @@
       );
   
       const XMLCh* contents = 0;
  -    for (DOMElement* child = XUtil::getFirstChildElement(annotationElem);
  -         child != 0;
  -         child = XUtil::getNextSiblingElement(child)) {
  -
  -        const XMLCh* name = child->getLocalName();
  -
  -        if (XMLString::equals(name, SchemaSymbols::fgELT_APPINFO)) {
  -
  -            DOMNode* textContent = child->getFirstChild();
  -            if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE)
  -                contents = ((DOMText*) textContent)->getData();
  -
  -            fAttributeCheck.checkAttributes(child, 
GeneralAttributeCheck::E_Appinfo, this);
  -        }
  -        else if (XMLString::equals(name, SchemaSymbols::fgELT_DOCUMENTATION)) {
  -
  -            DOMNode* textContent = child->getFirstChild();
  -            if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE)
  -                contents = ((DOMText*) textContent)->getData();
  -
  -            fAttributeCheck.checkAttributes(child, 
GeneralAttributeCheck::E_Documentation, this);
  -        }
  -        else {
  -            reportSchemaError(child, XMLUni::fgXMLErrDomain, 
XMLErrs::InvalidAnnotationContent);
  +    DOMElement* child = XUtil::getFirstChildElement(annotationElem);
  +    if (child) {
  +        for (;
  +             child != 0;
  +             child = XUtil::getNextSiblingElement(child)) {
  +
  +            const XMLCh* name = child->getLocalName();
  +
  +            if (XMLString::equals(name, SchemaSymbols::fgELT_APPINFO)) {
  +
  +                DOMNode* textContent = child->getFirstChild();
  +                if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE)
  +                    contents = ((DOMText*) textContent)->getData();
  +
  +                fAttributeCheck.checkAttributes(child, 
GeneralAttributeCheck::E_Appinfo, this);
  +            }
  +            else if (XMLString::equals(name, SchemaSymbols::fgELT_DOCUMENTATION)) {
  +
  +                DOMNode* textContent = child->getFirstChild();
  +                if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE)
  +                    contents = ((DOMText*) textContent)->getData();
  +
  +                fAttributeCheck.checkAttributes(child, 
GeneralAttributeCheck::E_Documentation, this);
  +            }
  +            else {
  +                reportSchemaError(child, XMLUni::fgXMLErrDomain, 
XMLErrs::InvalidAnnotationContent);
  +            }
           }
  +    }
  +    else
  +    {
  +        // If the Annotation has no children, get the text directly
  +        DOMNode* textContent = annotationElem->getFirstChild();
  +        if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE)
  +            contents = ((DOMText*) textContent)->getData();    
       }
   
       if (contents)
  
  
  

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

Reply via email to