private void addNamespaceDeclarations() {
    String prefix = null;
    String localpart = null;
    String rawname = null;
    String nsPrefix = null;
    String nsURI = null;

    final Iterator iter = fDeclaredPrefixes.iterator();
    while (iter.hasNext()) {
      nsPrefix = (String) iter.next();
      nsURI = fNamespaceContext.getURI(nsPrefix);
      if (nsPrefix.length() > 0) {
        prefix = XMLSymbols.PREFIX_XMLNS;
        localpart = nsPrefix;
        fStringBuffer.clear();
        fStringBuffer.append(prefix);
        fStringBuffer.append(':');
        fStringBuffer.append(localpart);
        rawname =
            fSymbolTable.addSymbol(fStringBuffer.ch, fStringBuffer.offset, fStringBuffer.length);
      } else {
        prefix = XMLSymbols.EMPTY_STRING;
        localpart = XMLSymbols.PREFIX_XMLNS;
        rawname = XMLSymbols.PREFIX_XMLNS;
      }
      fAttributeQName.setValues(prefix, localpart, rawname, NamespaceContext.XMLNS_URI);
      fAttributes.addAttribute(
          fAttributeQName,
          XMLSymbols.fCDATASymbol,
          (nsURI != null) ? nsURI : XMLSymbols.EMPTY_STRING);
    }
  }