tng 2002/09/23 12:41:07 Modified: c/src/xercesc/dom/impl DOMDocumentImpl.cpp DOMDocumentImpl.hpp DOMElementImpl.cpp DOMElementNSImpl.cpp DOMElementNSImpl.hpp DOMEntityImpl.cpp DOMEntityImpl.hpp DOMEntityReferenceImpl.cpp DOMEntityReferenceImpl.hpp DOMNodeImpl.cpp DOMNotationImpl.cpp DOMNotationImpl.hpp DOMProcessingInstructionImpl.cpp DOMProcessingInstructionImpl.hpp Log: DOM L3: Support baseURI. Revision Changes Path 1.23 +10 -4 xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.cpp Index: DOMDocumentImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- DOMDocumentImpl.cpp 17 Sep 2002 12:42:21 -0000 1.22 +++ DOMDocumentImpl.cpp 23 Sep 2002 19:41:07 -0000 1.23 @@ -576,6 +576,11 @@ } +const XMLCh* DOMDocumentImpl::getBaseURI() const +{ + return fDocumentURI; +}; + DOMRange* DOMDocumentImpl::createRange() { @@ -692,7 +697,6 @@ void* DOMDocumentImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); }; void* DOMDocumentImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; - const XMLCh* DOMDocumentImpl::getBaseURI() const {return fNode.getBaseURI(); }; short DOMDocumentImpl::compareTreePosition(DOMNode* other) {return fNode.compareTreePosition(other); }; const XMLCh* DOMDocumentImpl::getTextContent() const {return fNode.getTextContent(); }; void DOMDocumentImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; @@ -727,7 +731,8 @@ const XMLCh * DOMDocumentImpl::getPooledString(const XMLCh *src) { - return this->fNamePool->getPooledString(src); + if (!src) return 0; + else return this->fNamePool->getPooledString(src); } static const int kHeapAllocSize = 0x10000; // The chunk size to allocate from the @@ -892,7 +897,8 @@ fVersion = cloneString(version); } -const XMLCh* DOMDocumentImpl::getDocumentURI() const { +const XMLCh* DOMDocumentImpl::getDocumentURI() const +{ return fDocumentURI; } 1.10 +5 -5 xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.hpp Index: DOMDocumentImpl.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.hpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- DOMDocumentImpl.hpp 16 Aug 2002 16:02:53 -0000 1.9 +++ DOMDocumentImpl.hpp 23 Sep 2002 19:41:07 -0000 1.10 @@ -321,11 +321,11 @@ // data // ----------------------------------------------------------------------- // New data introduced in DOM Level 3 - XMLCh* fActualEncoding; - XMLCh* fEncoding; + const XMLCh* fActualEncoding; + const XMLCh* fEncoding; bool fStandalone; - XMLCh* fVersion; - XMLCh* fDocumentURI; + const XMLCh* fVersion; + const XMLCh* fDocumentURI; RefHashTableOf<DOMNodeUserDataTable>* fUserDataTable; 1.14 +39 -5 xml-xerces/c/src/xercesc/dom/impl/DOMElementImpl.cpp Index: DOMElementImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMElementImpl.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- DOMElementImpl.cpp 16 Sep 2002 20:49:52 -0000 1.13 +++ DOMElementImpl.cpp 23 Sep 2002 19:41:07 -0000 1.14 @@ -63,6 +63,8 @@ #include <xercesc/dom/DOMAttr.hpp> #include <xercesc/dom/DOMDocument.hpp> #include <xercesc/dom/DOMException.hpp> +#include <xercesc/util/XMLUniDefs.hpp> +#include <xercesc/util/XMLUri.hpp> #include "DOMAttrMapImpl.hpp" #include "DOMDocumentImpl.hpp" @@ -71,12 +73,10 @@ #include "DOMCasts.hpp" #include "DOMElementNSImpl.hpp" - #include "DOMDeepNodeListImpl.hpp" #include "DOMDocumentTypeImpl.hpp" #include "DOMNamedNodeMapImpl.hpp" - class DOMAttr; DOMElementImpl::DOMElementImpl(DOMDocument *ownerDoc, const XMLCh *eName) @@ -102,6 +102,7 @@ fDefaultAttributes(0) { fName = other.fName; + if (deep) fParent.cloneChildren(&other); @@ -129,6 +130,7 @@ fAttributes = new (getOwnerDocument()) DOMAttrMapImpl(this, fDefaultAttributes); } } + }; @@ -465,6 +467,35 @@ } } +const XMLCh* DOMElementImpl::getBaseURI() const +{ + const XMLCh* baseURI = fNode.fOwnerNode->getBaseURI(); + if (fAttributes) { + const XMLCh xmlBaseString[] = + { + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull + }; + DOMNode* attrNode = fAttributes->getNamedItem(xmlBaseString); + if (attrNode) { + const XMLCh* uri = attrNode->getNodeValue(); + if (XMLString::stringLen(uri) != 0 ) {// attribute value is always empty string + try { + XMLUri temp(baseURI); + XMLUri temp2(&temp, uri); + uri = ((DOMDocumentImpl *)this->getOwnerDocument())->cloneString(temp2.getUriText()); + } + catch (...){ + // REVISIT: what should happen in this case? + return 0; + } + return uri; + } + } + } + return baseURI; +} + + // // Functions inherited from Node @@ -477,7 +508,7 @@ const XMLCh* DOMElementImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); }; DOMNode* DOMElementImpl::getNextSibling() const {return fChild.getNextSibling (); }; const XMLCh* DOMElementImpl::getNodeValue() const {return fNode.getNodeValue (); }; - DOMDocument* DOMElementImpl::getOwnerDocument() const {return fNode.getOwnerDocument (); }; + DOMDocument* DOMElementImpl::getOwnerDocument() const {return fParent.fOwnerDocument; }; const XMLCh* DOMElementImpl::getPrefix() const {return fNode.getPrefix (); }; DOMNode* DOMElementImpl::getParentNode() const {return fChild.getParentNode (this); }; DOMNode* DOMElementImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); }; @@ -495,7 +526,6 @@ void* DOMElementImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); }; void* DOMElementImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; - const XMLCh* DOMElementImpl::getBaseURI() const {return fNode.getBaseURI(); }; short DOMElementImpl::compareTreePosition(DOMNode* other) {return fNode.compareTreePosition(other); }; const XMLCh* DOMElementImpl::getTextContent() const {return fNode.getTextContent(); }; void DOMElementImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; @@ -508,6 +538,10 @@ bool DOMElementImpl::isEqualNode(const DOMNode* arg) { + if (isSameNode(arg)) { + return true; + } + if (!fNode.isEqualNode(arg)) { return false; } 1.8 +31 -1 xml-xerces/c/src/xercesc/dom/impl/DOMElementNSImpl.cpp Index: DOMElementNSImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMElementNSImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMElementNSImpl.cpp 16 Sep 2002 20:44:47 -0000 1.7 +++ DOMElementNSImpl.cpp 23 Sep 2002 19:41:07 -0000 1.8 @@ -62,6 +62,7 @@ #include "DOMElementNSImpl.hpp" #include "DOMDocumentImpl.hpp" #include <xercesc/dom/DOMException.hpp> +#include <xercesc/util/XMLUri.hpp> DOMElementNSImpl::DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *nam) : DOMElementImpl(ownerDoc, nam) @@ -109,6 +110,35 @@ { return fLocalName; } + +const XMLCh* DOMElementNSImpl::getBaseURI() const +{ + const XMLCh* baseURI = (fNode.fOwnerNode)->getBaseURI(); + if (fAttributes) { + const XMLCh baseString[] = + { + chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull + }; + DOMNode* attrNode = fAttributes->getNamedItemNS(DOMNodeImpl::getXmlURIString(), baseString); + if (attrNode) { + const XMLCh* uri = attrNode->getNodeValue(); + if (XMLString::stringLen(uri) != 0 ) {// attribute value is always empty string + try { + XMLUri temp(baseURI); + XMLUri temp2(&temp, uri); + uri = ((DOMDocumentImpl *)this->getOwnerDocument())->cloneString(temp2.getUriText()); + } + catch (...){ + // REVISIT: what should happen in this case? + return 0; + } + return uri; + } + } + } + return baseURI; +} + void DOMElementNSImpl::setPrefix(const XMLCh *prefix) { 1.4 +4 -1 xml-xerces/c/src/xercesc/dom/impl/DOMElementNSImpl.hpp Index: DOMElementNSImpl.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMElementNSImpl.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DOMElementNSImpl.hpp 4 Jul 2002 15:27:56 -0000 1.3 +++ DOMElementNSImpl.hpp 23 Sep 2002 19:41:07 -0000 1.4 @@ -96,6 +96,9 @@ virtual void setPrefix(const XMLCh *prefix); virtual void release(); + //Introduced in DOM Level 3 + virtual const XMLCh *getBaseURI() const; + // helper function for DOM Level 3 renameNode virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); void setName(const XMLCh* namespaceURI, const XMLCh* name); 1.10 +30 -18 xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.cpp Index: DOMEntityImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- DOMEntityImpl.cpp 16 Aug 2002 19:20:28 -0000 1.9 +++ DOMEntityImpl.cpp 23 Sep 2002 19:41:07 -0000 1.10 @@ -73,7 +73,8 @@ fActualEncoding(0), fEncoding(0), fVersion(0), - fEntityRefNodeCloned(false) + fEntityRefNodeCloned(false), + fBaseURI(0) { fRefEntity = 0; fName = ((DOMDocumentImpl *)ownerDoc)->getPooledString(eName); @@ -95,6 +96,7 @@ fPublicId = other.fPublicId; fSystemId = other.fSystemId; fNotationName = other.fNotationName; + fBaseURI = other.fBaseURI; fRefEntity = other.fRefEntity; fNode.setReadOnly(true, true); @@ -140,6 +142,12 @@ }; +const XMLCh* DOMEntityImpl::getBaseURI() const +{ + return fBaseURI; +} + + void DOMEntityImpl::setNodeValue(const XMLCh *arg) { fNode.setNodeValue(arg); @@ -167,6 +175,11 @@ } +void DOMEntityImpl::setBaseURI(const XMLCh* baseURI) { + fBaseURI = ((DOMDocumentImpl *)getOwnerDocument())->cloneString(baseURI); +} + + void DOMEntityImpl::setEntityRef(DOMEntityReference* other) { fRefEntity = other; @@ -248,38 +261,37 @@ // Functions inherited from Node // - DOMNode* DOMEntityImpl::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); }; + DOMNode* DOMEntityImpl::appendChild(DOMNode *newChild) {cloneEntityRefTree(); return fParent.appendChild (newChild); }; DOMNamedNodeMap* DOMEntityImpl::getAttributes() const {return fNode.getAttributes (); }; const XMLCh* DOMEntityImpl::getLocalName() const {return fNode.getLocalName (); }; const XMLCh* DOMEntityImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); }; - DOMNode* DOMEntityImpl::getNextSibling() const {return fNode.getNextSibling (); }; - const XMLCh* DOMEntityImpl::getNodeValue() const {return fNode.getNodeValue (); }; - DOMDocument* DOMEntityImpl::getOwnerDocument() const {return fNode.getOwnerDocument (); }; + DOMNode* DOMEntityImpl::getNextSibling() const {cloneEntityRefTree(); return fNode.getNextSibling (); }; + const XMLCh* DOMEntityImpl::getNodeValue() const {cloneEntityRefTree(); return fNode.getNodeValue (); }; + DOMDocument* DOMEntityImpl::getOwnerDocument() const {return fParent.fOwnerDocument; }; const XMLCh* DOMEntityImpl::getPrefix() const {return fNode.getPrefix (); }; DOMNode* DOMEntityImpl::getParentNode() const {return fNode.getParentNode (); }; DOMNode* DOMEntityImpl::getPreviousSibling() const {return fNode.getPreviousSibling (); }; DOMNode* DOMEntityImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) - {return fParent.insertBefore (newChild, refChild); }; - void DOMEntityImpl::normalize() {fParent.normalize (); }; - DOMNode* DOMEntityImpl::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); }; + {cloneEntityRefTree(); return fParent.insertBefore (newChild, refChild); }; + void DOMEntityImpl::normalize() {cloneEntityRefTree(); fParent.normalize (); }; + DOMNode* DOMEntityImpl::removeChild(DOMNode *oldChild) {cloneEntityRefTree(); return fParent.removeChild (oldChild); }; DOMNode* DOMEntityImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) - {return fParent.replaceChild (newChild, oldChild); }; + {cloneEntityRefTree(); return fParent.replaceChild (newChild, oldChild); }; bool DOMEntityImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); }; void DOMEntityImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); }; bool DOMEntityImpl::hasAttributes() const {return fNode.hasAttributes(); }; bool DOMEntityImpl::isSameNode(const DOMNode* other) {return fNode.isSameNode(other); }; - bool DOMEntityImpl::isEqualNode(const DOMNode* arg) {return fParent.isEqualNode(arg); }; + bool DOMEntityImpl::isEqualNode(const DOMNode* arg) {cloneEntityRefTree(); return fParent.isEqualNode(arg); }; void* DOMEntityImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); }; void* DOMEntityImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; - const XMLCh* DOMEntityImpl::getBaseURI() const {return fNode.getBaseURI(); }; - short DOMEntityImpl::compareTreePosition(DOMNode* other) {return fNode.compareTreePosition(other); }; - const XMLCh* DOMEntityImpl::getTextContent() const {return fNode.getTextContent(); }; - void DOMEntityImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; - const XMLCh* DOMEntityImpl::lookupNamespacePrefix(const XMLCh* namespaceURI, bool useDefault) const {return fNode.lookupNamespacePrefix(namespaceURI, useDefault); }; - bool DOMEntityImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); }; - const XMLCh* DOMEntityImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); }; + short DOMEntityImpl::compareTreePosition(DOMNode* other) {cloneEntityRefTree(); return fNode.compareTreePosition(other); }; + const XMLCh* DOMEntityImpl::getTextContent() const {cloneEntityRefTree(); return fNode.getTextContent(); }; + void DOMEntityImpl::setTextContent(const XMLCh* textContent){cloneEntityRefTree(); fNode.setTextContent(textContent); }; + const XMLCh* DOMEntityImpl::lookupNamespacePrefix(const XMLCh* namespaceURI, bool useDefault) const {cloneEntityRefTree(); return fNode.lookupNamespacePrefix(namespaceURI, useDefault); }; + bool DOMEntityImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {cloneEntityRefTree(); return fNode.isDefaultNamespace(namespaceURI); }; + const XMLCh* DOMEntityImpl::lookupNamespaceURI(const XMLCh* prefix) const {cloneEntityRefTree(); return fNode.lookupNamespaceURI(prefix); }; DOMNode* DOMEntityImpl::getInterface(const XMLCh* feature) {return fNode.getInterface(feature); }; 1.4 +6 -4 xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.hpp Index: DOMEntityImpl.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DOMEntityImpl.hpp 30 Jul 2002 13:31:07 -0000 1.3 +++ DOMEntityImpl.hpp 23 Sep 2002 19:41:07 -0000 1.4 @@ -89,9 +89,10 @@ DOMEntityReference* fRefEntity; // New data introduced in DOM Level 3 - XMLCh* fActualEncoding; - XMLCh* fEncoding; - XMLCh* fVersion; + const XMLCh* fActualEncoding; + const XMLCh* fEncoding; + const XMLCh* fVersion; + const XMLCh* fBaseURI; bool fEntityRefNodeCloned; // private helper function void cloneEntityRefTree() const; @@ -125,6 +126,7 @@ virtual void setEncoding(const XMLCh* encoding); virtual const XMLCh* getVersion() const; virtual void setVersion(const XMLCh* version); + virtual void setBaseURI(const XMLCh *arg); }; #endif 1.8 +13 -5 xml-xerces/c/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp Index: DOMEntityReferenceImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMEntityReferenceImpl.cpp 16 Aug 2002 19:20:28 -0000 1.7 +++ DOMEntityReferenceImpl.cpp 23 Sep 2002 19:41:07 -0000 1.8 @@ -69,7 +69,7 @@ DOMEntityReferenceImpl::DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName) - : fNode(ownerDoc), fParent(ownerDoc) + : fNode(ownerDoc), fParent(ownerDoc), fBaseURI(0) { fName = ((DOMDocumentImpl *)getOwnerDocument())->getPooledString(entityName); // EntityReference behaves as a read-only node, since its contents @@ -81,9 +81,11 @@ if (ownerDoc->getDoctype()->getEntities()) { DOMEntityImpl* entity = (DOMEntityImpl*)ownerDoc->getDoctype()->getEntities()->getNamedItem(entityName); if (entity) { + fBaseURI = entity->getBaseURI(); DOMEntityReference* refEntity = entity->getEntityRef(); - if (refEntity) + if (refEntity) { fParent.cloneChildren(refEntity); + } } } } @@ -99,6 +101,7 @@ : fNode(other.fNode), fParent(other.fParent), fChild(other.fChild) { fName = other.fName; + fBaseURI = other.fBaseURI; if (deep) fParent.cloneChildren(&other); fNode.setReadOnly(true, true); @@ -173,6 +176,12 @@ } } +const XMLCh* DOMEntityReferenceImpl::getBaseURI() const +{ + return fBaseURI; +} + + // // Delegate functions from Node to the appropriate implementation. @@ -188,7 +197,7 @@ const XMLCh* DOMEntityReferenceImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); }; DOMNode* DOMEntityReferenceImpl::getNextSibling() const {return fChild.getNextSibling (); }; const XMLCh* DOMEntityReferenceImpl::getNodeValue() const {return fNode.getNodeValue (); }; - DOMDocument* DOMEntityReferenceImpl::getOwnerDocument() const {return fNode.getOwnerDocument (); }; + DOMDocument* DOMEntityReferenceImpl::getOwnerDocument() const {return fParent.fOwnerDocument; }; const XMLCh* DOMEntityReferenceImpl::getPrefix() const {return fNode.getPrefix (); }; DOMNode* DOMEntityReferenceImpl::getParentNode() const {return fChild.getParentNode (this); }; DOMNode* DOMEntityReferenceImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); }; @@ -208,7 +217,6 @@ void* DOMEntityReferenceImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); }; void* DOMEntityReferenceImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; - const XMLCh* DOMEntityReferenceImpl::getBaseURI() const {return fNode.getBaseURI(); }; short DOMEntityReferenceImpl::compareTreePosition(DOMNode* other) {return fNode.compareTreePosition(other); }; const XMLCh* DOMEntityReferenceImpl::getTextContent() const {return fNode.getTextContent(); }; void DOMEntityReferenceImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; 1.2 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMEntityReferenceImpl.hpp Index: DOMEntityReferenceImpl.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityReferenceImpl.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DOMEntityReferenceImpl.hpp 21 May 2002 20:29:32 -0000 1.1 +++ DOMEntityReferenceImpl.hpp 23 Sep 2002 19:41:07 -0000 1.2 @@ -85,6 +85,7 @@ DOMChildNode fChild; const XMLCh *fName; + const XMLCh *fBaseURI; friend class XercesDOMParser; 1.15 +2 -4 xml-xerces/c/src/xercesc/dom/impl/DOMNodeImpl.cpp Index: DOMNodeImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMNodeImpl.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- DOMNodeImpl.cpp 21 Aug 2002 17:58:42 -0000 1.14 +++ DOMNodeImpl.cpp 23 Sep 2002 19:41:07 -0000 1.15 @@ -482,11 +482,9 @@ return false; } -// baseURI not suppported yet -/* if (XMLString::compareString(thisNode->getBaseURI(), arg->getBaseURI())) { return false; - }*/ + } return true; } 1.8 +13 -4 xml-xerces/c/src/xercesc/dom/impl/DOMNotationImpl.cpp Index: DOMNotationImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMNotationImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMNotationImpl.cpp 16 Aug 2002 19:20:28 -0000 1.7 +++ DOMNotationImpl.cpp 23 Sep 2002 19:41:07 -0000 1.8 @@ -66,10 +66,10 @@ DOMNotationImpl::DOMNotationImpl(DOMDocument *ownerDoc, const XMLCh *nName) - : fNode(ownerDoc), fPublicId(0), fSystemId(0) + : fNode(ownerDoc), fName(0), fPublicId(0), fSystemId(0), fBaseURI(0) { fNode.setIsLeafNode(true); - fName = ((DOMDocumentImpl *)ownerDoc)->cloneString(nName); + fName = ((DOMDocumentImpl *)ownerDoc)->getPooledString(nName); }; DOMNotationImpl::DOMNotationImpl(const DOMNotationImpl &other, bool deep) @@ -79,6 +79,7 @@ fName = other.fName; fPublicId = other.fPublicId; fSystemId = other.fSystemId; + fBaseURI = other.fBaseURI; }; @@ -159,6 +160,15 @@ } } +void DOMNotationImpl::setBaseURI(const XMLCh* baseURI) { + this->fBaseURI = ((DOMDocumentImpl *)getOwnerDocument())->cloneString(baseURI); +} + +const XMLCh* DOMNotationImpl::getBaseURI() const +{ + return fBaseURI; +} + DOMNode* DOMNotationImpl::appendChild(DOMNode *newChild) {return fNode.appendChild (newChild); }; DOMNamedNodeMap* DOMNotationImpl::getAttributes() const {return fNode.getAttributes (); }; @@ -189,7 +199,6 @@ void* DOMNotationImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); }; void* DOMNotationImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; - const XMLCh* DOMNotationImpl::getBaseURI() const {return fNode.getBaseURI(); }; short DOMNotationImpl::compareTreePosition(DOMNode* other) {return fNode.compareTreePosition(other); }; const XMLCh* DOMNotationImpl::getTextContent() const {return fNode.getTextContent(); }; void DOMNotationImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; 1.2 +7 -4 xml-xerces/c/src/xercesc/dom/impl/DOMNotationImpl.hpp Index: DOMNotationImpl.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMNotationImpl.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DOMNotationImpl.hpp 21 May 2002 20:29:32 -0000 1.1 +++ DOMNotationImpl.hpp 23 Sep 2002 19:41:07 -0000 1.2 @@ -83,6 +83,7 @@ const XMLCh * fName; const XMLCh * fPublicId; const XMLCh * fSystemId; + const XMLCh * fBaseURI; public: DOMNotationImpl(DOMDocument *ownerDoc, const XMLCh *); @@ -102,15 +103,17 @@ // was specified, this will be null. virtual const XMLCh * getSystemId() const; - // NON-DOM: The Public Identifier for this Notation. If no public - // identifier was specified, this will be null. */ + // identifier was specified, this will be null. virtual void setPublicId(const XMLCh *arg); // NON-DOM: The System Identifier for this Notation. If no system - // identifier was specified, this will be null. */ + // identifier was specified, this will be null. virtual void setSystemId(const XMLCh *arg); + + // NON-DOM: set base uri + virtual void setBaseURI(const XMLCh *arg); }; 1.8 +12 -3 xml-xerces/c/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp Index: DOMProcessingInstructionImpl.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DOMProcessingInstructionImpl.cpp 16 Aug 2002 19:20:28 -0000 1.7 +++ DOMProcessingInstructionImpl.cpp 23 Sep 2002 19:41:07 -0000 1.8 @@ -68,7 +68,7 @@ DOMProcessingInstructionImpl::DOMProcessingInstructionImpl(DOMDocument *ownerDoc, const XMLCh *targt, const XMLCh *dat) - : fNode(ownerDoc) + : fNode(ownerDoc), fBaseURI(0) { fNode.setIsLeafNode(true); this->fTarget = ((DOMDocumentImpl *)ownerDoc)->cloneString(targt); @@ -84,6 +84,7 @@ fNode.setIsLeafNode(true); fTarget = other.fTarget; fData = other.fData; + fBaseURI = other.fBaseURI; }; @@ -177,6 +178,15 @@ } } +void DOMProcessingInstructionImpl::setBaseURI(const XMLCh* baseURI) { + this->fBaseURI = ((DOMDocumentImpl *)getOwnerDocument())->cloneString(baseURI); +} + +const XMLCh* DOMProcessingInstructionImpl::getBaseURI() const +{ + return fBaseURI? fBaseURI : fNode.fOwnerNode->getBaseURI(); +} + // // Delegation stubs for inherited functions // @@ -208,7 +218,6 @@ void* DOMProcessingInstructionImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); }; void* DOMProcessingInstructionImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; - const XMLCh* DOMProcessingInstructionImpl::getBaseURI() const {return fNode.getBaseURI(); }; short DOMProcessingInstructionImpl::compareTreePosition(DOMNode* other) {return fNode.compareTreePosition(other); }; const XMLCh* DOMProcessingInstructionImpl::getTextContent() const {return fNode.getTextContent(); }; void DOMProcessingInstructionImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; 1.2 +5 -1 xml-xerces/c/src/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp Index: DOMProcessingInstructionImpl.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DOMProcessingInstructionImpl.hpp 21 May 2002 20:29:32 -0000 1.1 +++ DOMProcessingInstructionImpl.hpp 23 Sep 2002 19:41:07 -0000 1.2 @@ -85,6 +85,7 @@ XMLCh *fTarget; XMLCh *fData; + const XMLCh *fBaseURI; public: DOMProcessingInstructionImpl(DOMDocument *ownerDoc, @@ -100,6 +101,9 @@ virtual const XMLCh *getData() const; virtual const XMLCh *getTarget() const; virtual void setData(const XMLCh *arg); + + // NON-DOM: set base uri + virtual void setBaseURI(const XMLCh* baseURI); }; #endif
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]