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]