static void DeclareOneNamespace ( XMP_StringPtr nsPrefix, XMP_StringPtr nsURI, XMP_VarString & usedNS, // ! A catenation of the prefixes with colons. XMP_VarString & outputStr, XMP_StringPtr newline, XMP_StringPtr indentStr, XMP_Index indent ) { XMP_VarString boundedPrefix = ":"; boundedPrefix += nsPrefix; size_t nsPos = usedNS.find ( boundedPrefix ); if ( nsPos == XMP_VarString::npos ) { outputStr += newline; for ( ; indent > 0; --indent ) outputStr += indentStr; outputStr += "xmlns:"; outputStr += nsPrefix; if (outputStr[outputStr.size ( ) - 1] == ':') outputStr[outputStr.size ( ) - 1] = '='; // Change the colon to =. else outputStr += '='; outputStr += '"'; outputStr += nsURI; outputStr += '"'; usedNS += nsPrefix; } } // DeclareOneNamespace
static void DeclareElemNamespace ( const XMP_VarString & elemName, XMP_VarString & usedNS, XMP_VarString & outputStr, XMP_StringPtr newline, XMP_StringPtr indentStr, XMP_Index indent ) { size_t colonPos = elemName.find ( ':' ); if ( colonPos != XMP_VarString::npos ) { XMP_VarString nsPrefix ( elemName.substr ( 0, colonPos+1 ) ); XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( nsPrefix ); XMP_Enforce ( prefixPos != sNamespacePrefixToURIMap->end() ); DeclareOneNamespace ( nsPrefix, prefixPos->second, usedNS, outputStr, newline, indentStr, indent ); } } // DeclareElemNamespace
static void DeclareElemNamespace ( const XMP_VarString & elemName, XMP_VarString & usedNS, XMP_VarString & outputStr, XMP_StringPtr newline, XMP_StringPtr indentStr, XMP_Index indent ) { size_t colonPos = elemName.find ( ':' ); if ( colonPos != XMP_VarString::npos ) { XMP_VarString nsPrefix ( elemName.substr ( 0, colonPos+1 ) ); XMP_StringPtr nsURI; bool nsFound = sRegisteredNamespaces->GetURI ( nsPrefix.c_str(), &nsURI, 0 ); XMP_Enforce ( nsFound ); DeclareOneNamespace ( nsPrefix.c_str(), nsURI, usedNS, outputStr, newline, indentStr, indent ); } } // DeclareElemNamespace