virtual void attributeEvent(const XMLCh *prefix, const XMLCh *uri, const XMLCh *localname, const XMLCh *value, const XMLCh *typeURI, const XMLCh *typeName) { assert(node_ && node_->getNodeType() == DOMNode::ELEMENT_NODE); DOMNamedNodeMap *attrs = node_->getAttributes(); DOMAttr *at = (DOMAttr*)attrs->getNamedItemNS(uri, localname); // Add the attribute if(!at) { at = node_->getOwnerDocument()->createAttributeNS(uri, localname); if(prefix && *prefix) at->setPrefix(prefix); attrs->setNamedItemNS(at); } // Copy the schema normalized value at->setNodeValue(value); // Copy the attribute's type const XMLCh *oldTypeURI, *oldTypeName; XercesNodeImpl::typeUriAndName(at, oldTypeURI, oldTypeName); if(!XPath2Utils::equals(oldTypeName, typeName) || !XPath2Utils::equals(oldTypeURI, typeURI)) { XercesSequenceBuilder::setAttributeTypeInfo(at, typeURI, typeName); } }