neilg       2003/12/19 22:29:01

  Modified:    c/src/xercesc/internal IGXMLScanner2.cpp IGXMLScanner.cpp
                        SGXMLScanner.cpp
  Log:
  add attribute names to PSVIAttributeList and fix some problems with calculation of 
canonical values in element content
  
  Revision  Changes    Path
  1.54      +7 -3      xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp
  
  Index: IGXMLScanner2.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- IGXMLScanner2.cpp 19 Dec 2003 07:20:03 -0000      1.53
  +++ IGXMLScanner2.cpp 20 Dec 2003 06:29:00 -0000      1.54
  @@ -593,7 +593,7 @@
                   if(actualAttDef)
                   {
                        XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration 
*)fModel->getXSObject(actualAttDef);
  -                     PSVIAttribute *toFill = 
fPSVIAttrList->getPSVIAttributeToFill(); 
  +                     PSVIAttribute *toFill = 
fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId)); 
                       DatatypeValidator * attrDataType = 
actualAttDef->getDatatypeValidator();
                        XSSimpleTypeDefinition *validatingType = 
(XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType);
                        if(attrValid != PSVIItem::VALIDITY_VALID)
  @@ -647,7 +647,7 @@
                   attrValidator = 
DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI);
               if(getPSVIHandler() && fGrammarType == Grammar::SchemaGrammarType)
               {
  -                 PSVIAttribute *toFill = fPSVIAttrList->getPSVIAttributeToFill(); 
  +                 PSVIAttribute *toFill = 
fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId)); 
                    XSSimpleTypeDefinition *validatingType = (attrValidator)
                               ? (XSSimpleTypeDefinition 
*)fModel->getXSObject(attrValidator)
                               : 0;
  @@ -835,7 +835,11 @@
                       retCount++;
                       if(getPSVIHandler() && fGrammarType == 
Grammar::SchemaGrammarType)
                       {
  -                        PSVIAttribute *defAttrToFill = 
fPSVIAttrList->getPSVIAttributeToFill();
  +                        QName *attName = ((SchemaAttDef *)curDef)->getAttName();
  +                        PSVIAttribute *defAttrToFill = 
fPSVIAttrList->getPSVIAttributeToFill
  +                        (
  +                            attName->getLocalPart(), fURIStringPool->getValueForId( 
attName->getURI())
  +                        );
                           XSAttributeDeclaration *defAttrDecl = 
(XSAttributeDeclaration *)fModel->getXSObject((void *)curDef);
                           DatatypeValidator * attrDataType = ((SchemaAttDef 
*)curDef)->getDatatypeValidator();
                           XSSimpleTypeDefinition *defAttrType = 
  
  
  
  1.53      +8 -1      xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp
  
  Index: IGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- IGXMLScanner.cpp  19 Dec 2003 07:20:03 -0000      1.52
  +++ IGXMLScanner.cpp  20 Dec 2003 06:29:00 -0000      1.53
  @@ -3472,13 +3472,20 @@
       }
   
       XSTypeDefinition* typeDef = 0;
  +    bool isMixed = false;
       if (fPSVIElemContext.fCurrentTypeInfo)
  +    {
           typeDef = (XSTypeDefinition*) 
fModel->getXSObject(fPSVIElemContext.fCurrentTypeInfo);
  +        SchemaElementDecl::ModelTypes modelType = 
(SchemaElementDecl::ModelTypes)fPSVIElemContext.fCurrentTypeInfo->getContentType();
  +        isMixed = (modelType == SchemaElementDecl::Mixed_Simple
  +                || modelType == SchemaElementDecl::Mixed_Complex);
  +    }
       else if (fPSVIElemContext.fCurrentDV)
           typeDef = (XSTypeDefinition*) 
fModel->getXSObject(fPSVIElemContext.fCurrentDV);
   
       XMLCh* canonicalValue = 0;
  -    if (fPSVIElemContext.fNormalizedValue )
  +    if (fPSVIElemContext.fNormalizedValue && !isMixed && 
  +            validity == PSVIElement::VALIDITY_VALID)
       {
           if (memberDV)
               canonicalValue = (XMLCh*) 
memberDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, 
fMemoryManager);
  
  
  
  1.70      +15 -4     xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp
  
  Index: SGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- SGXMLScanner.cpp  19 Dec 2003 07:20:03 -0000      1.69
  +++ SGXMLScanner.cpp  20 Dec 2003 06:29:00 -0000      1.70
  @@ -2690,7 +2690,7 @@
                   if(actualAttDef)
                   {
                        XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration 
*)fModel->getXSObject(actualAttDef);
  -                     PSVIAttribute *toFill = 
fPSVIAttrList->getPSVIAttributeToFill(); 
  +                     PSVIAttribute *toFill = 
fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId));
                       DatatypeValidator * attrDataType = 
actualAttDef->getDatatypeValidator();
                        XSSimpleTypeDefinition *validatingType = 
(XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType);
                        if(attrValid != PSVIItem::VALIDITY_VALID)
  @@ -2744,7 +2744,7 @@
                   attrValidator = 
DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI);
               if(getPSVIHandler())
               {
  -                PSVIAttribute *toFill = fPSVIAttrList->getPSVIAttributeToFill();
  +                PSVIAttribute *toFill = 
fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId));
                    XSSimpleTypeDefinition *validatingType = (attrValidator)
                               ? (XSSimpleTypeDefinition 
*)fModel->getXSObject(attrValidator)
                               : 0;
  @@ -2894,7 +2894,11 @@
                       retCount++;
                       if(getPSVIHandler())
                       {
  -                        PSVIAttribute *defAttrToFill = 
fPSVIAttrList->getPSVIAttributeToFill();
  +                        QName *attName = ((SchemaAttDef *)curDef)->getAttName();
  +                        PSVIAttribute *defAttrToFill = 
fPSVIAttrList->getPSVIAttributeToFill
  +                        (
  +                            attName->getLocalPart(), fURIStringPool->getValueForId( 
attName->getURI())
  +                        );
                           XSAttributeDeclaration *defAttrDecl = 
(XSAttributeDeclaration *)fModel->getXSObject((void *)curDef);
                           DatatypeValidator * attrDataType = ((SchemaAttDef 
*)curDef)->getDatatypeValidator();
                           XSSimpleTypeDefinition *defAttrType = 
  @@ -4885,13 +4889,20 @@
       }
   
       XSTypeDefinition* typeDef = 0;
  +    bool isMixed = false;
       if (fPSVIElemContext.fCurrentTypeInfo)
  +    {
           typeDef = (XSTypeDefinition*) 
fModel->getXSObject(fPSVIElemContext.fCurrentTypeInfo);
  +        SchemaElementDecl::ModelTypes modelType = 
(SchemaElementDecl::ModelTypes)fPSVIElemContext.fCurrentTypeInfo->getContentType();
  +        isMixed = (modelType == SchemaElementDecl::Mixed_Simple
  +                || modelType == SchemaElementDecl::Mixed_Complex);
  +    }
       else if (fPSVIElemContext.fCurrentDV)
           typeDef = (XSTypeDefinition*) 
fModel->getXSObject(fPSVIElemContext.fCurrentDV);
   
       XMLCh* canonicalValue = 0;
  -    if (fPSVIElemContext.fNormalizedValue)
  +    if (fPSVIElemContext.fNormalizedValue && !isMixed &&
  +            validity == PSVIElement::VALIDITY_VALID)
       {
           if (memberDV)
               canonicalValue = (XMLCh*) 
memberDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, 
fMemoryManager);
  
  
  

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

Reply via email to