00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087 #if !defined(XMLATTR_HPP)
00088 #define XMLATTR_HPP
00089
00090 #include <xercesc/util/PlatformUtils.hpp>
00091 #include <xercesc/util/QName.hpp>
00092 #include <xercesc/framework/XMLAttDef.hpp>
00093 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
00094
00095 XERCES_CPP_NAMESPACE_BEGIN
00096
00118 class XMLAttr : public XMemory
00119 {
00120 public:
00121
00122
00123
00126
00134 XMLAttr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
00135
00168 XMLAttr
00169 (
00170 const unsigned int uriId
00171 , const XMLCh* const attrName
00172 , const XMLCh* const attrPrefix
00173 , const XMLCh* const attrValue
00174 , const XMLAttDef::AttTypes type = XMLAttDef::CData
00175 , const bool specified = true
00176 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
00177 , DatatypeValidator * datatypeValidator = 0
00178 , const bool isSchema = false
00179 );
00180
00209 XMLAttr
00210 (
00211 const unsigned int uriId
00212 , const XMLCh* const rawName
00213 , const XMLCh* const attrValue
00214 , const XMLAttDef::AttTypes type = XMLAttDef::CData
00215 , const bool specified = true
00216 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
00217 , DatatypeValidator * datatypeValidator = 0
00218 , const bool isSchema = false
00219 );
00220
00222
00225 ~XMLAttr();
00227
00228
00229
00230
00231
00232
00235
00239 QName* getAttName() const;
00240
00245 const XMLCh* getName() const;
00246
00251 const XMLCh* getPrefix() const;
00252
00258 const XMLCh* getQName() const;
00259
00264 bool getSpecified() const;
00265
00270 XMLAttDef::AttTypes getType() const;
00271
00277 const XMLCh* getValue() const;
00278
00283 unsigned int getURIId() const;
00284
00289 const XMLCh* getValidatingTypeURI() const;
00290
00295 const XMLCh* getValidatingTypeName() const;
00296
00298
00299
00300
00301
00302
00303
00306
00335 void set
00336 (
00337 const unsigned int uriId
00338 , const XMLCh* const attrName
00339 , const XMLCh* const attrPrefix
00340 , const XMLCh* const attrValue
00341 , const XMLAttDef::AttTypes type = XMLAttDef::CData
00342 , DatatypeValidator * datatypeValidator = 0
00343 , const bool isSchema = false
00344 );
00345
00369 void set
00370 (
00371 const unsigned int uriId
00372 , const XMLCh* const attrRawName
00373 , const XMLCh* const attrValue
00374 , const XMLAttDef::AttTypes type = XMLAttDef::CData
00375 , DatatypeValidator * datatypeValidator = 0
00376 , const bool isSchema = false
00377 );
00378
00393 void setName
00394 (
00395 const unsigned int uriId
00396 , const XMLCh* const attrName
00397 , const XMLCh* const attrPrefix
00398 );
00399
00407 void setSpecified(const bool newValue);
00408
00417 void setType(const XMLAttDef::AttTypes newType);
00418
00426 void setValue(const XMLCh* const newValue);
00427
00435 void setURIId(const unsigned int uriId);
00436
00444 void setDatatypeValidator(DatatypeValidator * datatypeValidator);
00445
00453 void setSchemaValidated(const bool isSchema);
00454
00456
00457
00458
00459 private :
00460
00461
00462
00463 XMLAttr(const XMLAttr&);
00464 XMLAttr& operator=(const XMLAttr&);
00465
00466
00467
00468
00469
00470 void cleanUp();
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502 bool fSpecified;
00503 XMLAttDef::AttTypes fType;
00504 unsigned int fValueBufSz;
00505 XMLCh* fValue;
00506 QName* fAttName;
00507 MemoryManager* fMemoryManager;
00508 DatatypeValidator * fDatatypeValidator;
00509 bool fIsSchemaValidated;
00510 };
00511
00512
00513
00514
00515 inline XMLAttr::~XMLAttr()
00516 {
00517 cleanUp();
00518 }
00519
00520
00521
00522
00523
00524 inline QName* XMLAttr::getAttName() const
00525 {
00526 return fAttName;
00527 }
00528
00529 inline const XMLCh* XMLAttr::getName() const
00530 {
00531 return fAttName->getLocalPart();
00532 }
00533
00534 inline const XMLCh* XMLAttr::getPrefix() const
00535 {
00536 return fAttName->getPrefix();
00537 }
00538
00539 inline bool XMLAttr::getSpecified() const
00540 {
00541 return fSpecified;
00542 }
00543
00544 inline XMLAttDef::AttTypes XMLAttr::getType() const
00545 {
00546 return fType;
00547 }
00548
00549 inline const XMLCh* XMLAttr::getValue() const
00550 {
00551 return fValue;
00552 }
00553
00554 inline unsigned int XMLAttr::getURIId() const
00555 {
00556 return fAttName->getURI();
00557 }
00558
00559 inline const XMLCh* XMLAttr::getValidatingTypeName() const
00560 {
00561 if(fIsSchemaValidated)
00562 {
00563 if(!fDatatypeValidator || fDatatypeValidator->getAnonymous())
00564 return 0;
00565 return fDatatypeValidator->getTypeLocalName();
00566 }
00567 else
00568 {
00569 return XMLAttDef::getAttTypeString(fType, fMemoryManager);
00570 }
00571 }
00572
00573 inline const XMLCh* XMLAttr::getValidatingTypeURI() const
00574 {
00575 if(fIsSchemaValidated)
00576 {
00577 if(!fDatatypeValidator || fDatatypeValidator->getAnonymous())
00578 return 0;
00579 return fDatatypeValidator->getTypeUri();
00580 }
00581 else
00582 {
00583 return 0;
00584 }
00585 }
00586
00587
00588
00589
00590 inline void XMLAttr::set(const unsigned int uriId
00591 , const XMLCh* const attrName
00592 , const XMLCh* const attrPrefix
00593 , const XMLCh* const attrValue
00594 , const XMLAttDef::AttTypes type
00595 , DatatypeValidator * datatypeValidator
00596 , const bool isSchema )
00597 {
00598
00599 fAttName->setName(attrPrefix, attrName, uriId);
00600 setValue(attrValue);
00601
00602
00603 fType = type;
00604
00605
00606 fIsSchemaValidated = isSchema;
00607 fDatatypeValidator = datatypeValidator;
00608 }
00609
00610 inline void XMLAttr::set(const unsigned int uriId
00611 , const XMLCh* const attrRawName
00612 , const XMLCh* const attrValue
00613 , const XMLAttDef::AttTypes type
00614 , DatatypeValidator * datatypeValidator
00615 , const bool isSchema )
00616 {
00617
00618 fAttName->setName(attrRawName, uriId);
00619 setValue(attrValue);
00620
00621
00622 fType = type;
00623
00624
00625 fIsSchemaValidated = isSchema;
00626 fDatatypeValidator = datatypeValidator;
00627 }
00628
00629 inline void XMLAttr::setType(const XMLAttDef::AttTypes newValue)
00630 {
00631 fType = newValue;
00632 }
00633
00634 inline void XMLAttr::setSpecified(const bool newValue)
00635 {
00636 fSpecified = newValue;
00637 }
00638
00639 inline void XMLAttr::setDatatypeValidator(DatatypeValidator *datatypeValidator)
00640 {
00641 fDatatypeValidator = datatypeValidator;
00642 }
00643
00644 inline void XMLAttr::setSchemaValidated(const bool isSchema)
00645 {
00646 fIsSchemaValidated = isSchema;
00647 }
00648
00649 XERCES_CPP_NAMESPACE_END
00650
00651 #endif