try {
// build sets of namespace uris and prefixes
IXMLWriter writer = ictx.getXmlWriter();
int curcnt = writer.getNamespaceCount();
StringIntSizedMap uriindexes = new StringIntSizedMap(curcnt);
int defcnt = m_namespaces.size() / 2;
StringSizedSet prefixes = new StringSizedSet(curcnt + defcnt);
for (int i = 0; i < curcnt; i++) {
uriindexes.add(writer.getNamespaceUri(i), i);
String prefix = writer.getNamespacePrefix(i);
if (prefix != null && prefix.length() > 0) {
prefixes.add(prefix);
}
}
// check namespace declarations on this element against writer state
List uris = new ArrayList();
GrowableIntArray indexes = new GrowableIntArray();
GrowableStringArray prefs = new GrowableStringArray();
int base = writer.getNamespaceCount();
for (int i = 0; i < defcnt; i++) {
String pref = (String)m_namespaces.get(i * 2);
String uri = (String)m_namespaces.get(i * 2 + 1);
int index = uriindexes.get(uri);
if (index >= 0) {
if (writer.getNamespacePrefix(index) == null) {
indexes.add(index);
prefs.add(makeUniquePrefix(pref, prefixes));
}