neilg 2003/11/23 21:19:37 Modified: c/src/xercesc/framework XMLAttr.cpp XMLAttr.hpp Log: update XMLAttr class to carry information needed by DOMTypeInfo Revision Changes Path 1.7 +13 -3 xml-xerces/c/src/xercesc/framework/XMLAttr.cpp Index: XMLAttr.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLAttr.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- XMLAttr.cpp 1 Oct 2003 16:32:37 -0000 1.6 +++ XMLAttr.cpp 24 Nov 2003 05:19:37 -0000 1.7 @@ -79,6 +79,8 @@ , fValue(0) , fAttName(0) , fMemoryManager(manager) + , fDatatypeValidator(0) + , fIsSchemaValidated(false) { fAttName = new (fMemoryManager) QName(fMemoryManager); } @@ -89,7 +91,9 @@ , const XMLCh* const attrValue , const XMLAttDef::AttTypes type , const bool specified - , MemoryManager* const manager) : + , MemoryManager* const manager + , DatatypeValidator * datatypeValidator + , const bool isSchema ): fSpecified(specified) , fType(type) @@ -97,6 +101,8 @@ , fValue(0) , fAttName(0) , fMemoryManager(manager) + , fDatatypeValidator(datatypeValidator) + , fIsSchemaValidated(isSchema) { try { @@ -122,7 +128,9 @@ , const XMLCh* const attrValue , const XMLAttDef::AttTypes type , const bool specified - , MemoryManager* const manager) : + , MemoryManager* const manager + , DatatypeValidator * datatypeValidator + , const bool isSchema ): fSpecified(specified) , fType(type) @@ -130,6 +138,8 @@ , fValue(0) , fAttName(0) , fMemoryManager(manager) + , fDatatypeValidator(datatypeValidator) + , fIsSchemaValidated(isSchema) { try { 1.8 +114 -4 xml-xerces/c/src/xercesc/framework/XMLAttr.hpp Index: XMLAttr.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLAttr.hpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XMLAttr.hpp 22 May 2003 02:10:51 -0000 1.7 +++ XMLAttr.hpp 24 Nov 2003 05:19:37 -0000 1.8 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.8 2003/11/24 05:19:37 neilg + * update XMLAttr class to carry information needed by DOMTypeInfo + * * Revision 1.7 2003/05/22 02:10:51 knoaman * Default the memory manager. * @@ -118,6 +121,7 @@ #include <xercesc/util/PlatformUtils.hpp> #include <xercesc/util/QName.hpp> #include <xercesc/framework/XMLAttDef.hpp> +#include <xercesc/validators/datatype/DatatypeValidator.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -187,6 +191,10 @@ * in from a FIXED or DEFAULT value. * * @param manager The configurable memory manager + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema */ XMLAttr ( @@ -197,6 +205,8 @@ , const XMLAttDef::AttTypes type = XMLAttDef::CData , const bool specified = true , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false ); /** @@ -222,6 +232,10 @@ * in from a FIXED or DEFAULT value. * * @param manager The configurable memory manager + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema */ XMLAttr ( @@ -231,6 +245,8 @@ , const XMLAttDef::AttTypes type = XMLAttDef::CData , const bool specified = true , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false ); //@} @@ -297,6 +313,16 @@ */ unsigned int getURIId() const; + /** + * @return the uri part of DOM Level 3 TypeInfo + */ + const XMLCh* getValidatingTypeURI() const; + + /** + * @return the name part of DOM Level 3 TypeInfo + */ + const XMLCh* getValidatingTypeName() const; + //@} @@ -329,6 +355,10 @@ * the type of normalization done and constrains * the value content. Make sure that the value * set meets the constraints! + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema * */ void set @@ -338,6 +368,8 @@ , const XMLCh* const attrPrefix , const XMLCh* const attrValue , const XMLAttDef::AttTypes type = XMLAttDef::CData + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false ); /** @@ -358,7 +390,10 @@ * the type of normalization done and constrains * the value content. Make sure that the value * set meets the constraints! - * + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema */ void set ( @@ -366,6 +401,8 @@ , const XMLCh* const attrRawName , const XMLCh* const attrValue , const XMLAttDef::AttTypes type = XMLAttDef::CData + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false ); /** @@ -426,6 +463,22 @@ */ void setURIId(const unsigned int uriId); + /** + * This method will update the datatype validator that was used + * to assess the validity of the value of this attribute. + * @param datatypeValidator DatatypeValidator used to assess the validity + * of this attribute's value + */ + void setDatatypeValidator(DatatypeValidator * datatypeValidator); + + /** + * This method will define whether the attribute was + * validated by an XML Schema + * @param isSchema true indicates that this attribute was validated + * by an XML Schema; false indicates otherwise + */ + void setSchemaValidated(const bool isSchema); + //@} @@ -465,6 +518,12 @@ // // fMemoryManager // The memory manager used for dynamic memory allocation/deallocation + // fDatatypeValidator + // The validator used to validate the value of this attribute. + // The attribute does not own this object, and it is only + // used in the calculation of DOMTypeInfo information. + // fIsSchemaValidated + // whether this attribute was validated by an XML Schema // // ----------------------------------------------------------------------- bool fSpecified; @@ -473,6 +532,8 @@ XMLCh* fValue; QName* fAttName; MemoryManager* fMemoryManager; + DatatypeValidator * fDatatypeValidator; + bool fIsSchemaValidated; }; // --------------------------------------------------------------------------- @@ -522,6 +583,33 @@ return fAttName->getURI(); } +inline const XMLCh* XMLAttr::getValidatingTypeName() const +{ + if(fIsSchemaValidated) + { + if(!fDatatypeValidator || fDatatypeValidator->getAnonymous()) + return 0; + return fDatatypeValidator->getTypeLocalName(); + } + else + { + return XMLAttDef::getAttTypeString(fType); + } +} + +inline const XMLCh* XMLAttr::getValidatingTypeURI() const +{ + if(fIsSchemaValidated) + { + if(!fDatatypeValidator || fDatatypeValidator->getAnonymous()) + return 0; + return fDatatypeValidator->getTypeUri(); + } + else + { + return 0; + } +} // --------------------------------------------------------------------------- // XMLAttr: Setter methods @@ -530,7 +618,9 @@ , const XMLCh* const attrName , const XMLCh* const attrPrefix , const XMLCh* const attrValue - , const XMLAttDef::AttTypes type) + , const XMLAttDef::AttTypes type + , DatatypeValidator * datatypeValidator + , const bool isSchema ) { // Set the name info and the value via their respective calls fAttName->setName(attrPrefix, attrName, uriId); @@ -538,12 +628,18 @@ // And store the type fType = type; + + // and set up info for DOM type info + fIsSchemaValidated = isSchema; + fDatatypeValidator = datatypeValidator; } inline void XMLAttr::set(const unsigned int uriId , const XMLCh* const attrRawName , const XMLCh* const attrValue - , const XMLAttDef::AttTypes type) + , const XMLAttDef::AttTypes type + , DatatypeValidator * datatypeValidator + , const bool isSchema ) { // Set the name info and the value via their respective calls fAttName->setName(attrRawName, uriId); @@ -551,6 +647,10 @@ // And store the type fType = type; + + // and set up info for DOM type info + fIsSchemaValidated = isSchema; + fDatatypeValidator = datatypeValidator; } inline void XMLAttr::setType(const XMLAttDef::AttTypes newValue) @@ -561,6 +661,16 @@ inline void XMLAttr::setSpecified(const bool newValue) { fSpecified = newValue; +} + +inline void XMLAttr::setDatatypeValidator(DatatypeValidator *datatypeValidator) +{ + fDatatypeValidator = datatypeValidator; +} + +inline void XMLAttr::setSchemaValidated(const bool isSchema) +{ + fIsSchemaValidated = isSchema; } XERCES_CPP_NAMESPACE_END
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]