void Name::split(const XMLString& qname, XMLString& prefix, XMLString& localName) { XMLString::size_type pos = qname.find(':'); if (pos != XMLString::npos) { prefix.assign(qname, 0, pos); localName.assign(qname, pos + 1, qname.size() - pos - 1); } else { prefix.clear(); localName.assign(qname); } }
bool NamespaceSupport::processName(const XMLString& qname, XMLString& namespaceURI, XMLString& localName, bool isAttribute) const { XMLString prefix; Name::split(qname, prefix, localName); if (prefix.empty() && isAttribute) { namespaceURI.clear(); return true; } else { namespaceURI = getURI(prefix); return !namespaceURI.empty() || prefix.empty(); } }
void XMLWriter::addAttributes(AttributeMap& attributeMap, const Attributes& attributes, const XMLString& elementNamespaceURI) { for (int i = 0; i < attributes.getLength(); i++) { XMLString namespaceURI = attributes.getURI(i); XMLString localName = attributes.getLocalName(i); XMLString qname = attributes.getQName(i); if (!localName.empty()) { XMLString prefix; if (namespaceURI != elementNamespaceURI) prefix = _namespaces.getPrefix(namespaceURI); if (!prefix.empty()) { qname = prefix; qname.append(toXMLString(MARKUP_COLON)); } else qname.clear(); qname.append(localName); } attributeMap[qname] = attributes.getValue(i); } }