Add microdata to breadcrumbs - Some trouble with hooks
Your implementation of hook_page_alter() doesn't work because the parameter passed to the hook ($page) doesn't contain $page['breadcrumb'].

I used the following code to verify the content of the parameter passed as argument.

$path = 'node/14';

if ($router_item = menu_get_item($path)) {
  if ($router_item['access']) {
    if ($router_item['include_file']) {
      require_once DRUPAL_ROOT . '/' . $router_item['include_file'];
    }
    $page_callback_result = call_user_func_array($router_item['page_callback'], $router_item['page_arguments']);
  }
}

$main_content_display = &amp;drupal_static('system_main_content_added', FALSE);

if (is_string($page_callback_result) || (is_array($page_callback_result) &amp;&amp; (!isset($page_callback_result['#type']) || ($page_callback_result['#type'] != 'page')))) {
  drupal_set_page_content($page_callback_result);
  $page_callback_result = element_info('page');
}

foreach (module_implements('page_build') as $module) {
  $function = $module . '_page_build';
  $function($page_callback_result);
}

drupal_alter('page', $page_callback_result);

if (!$main_content_display) {
  $page_callback_result['content']['system_main'] = drupal_set_page_content();
}

dsm($page_callback_result);


"node/14" is the path for an "Article" node I have on my test site.
The code has been created looking at the code of different Drupal functions: drupal_deliver_html_page(), drupal_deliver_page(), and menu_execute_active_handler(). It requires the Devel module, as it uses one of its functions.

This is the output given by dsm().



You can override the theme function used for the breadcrumb, implementing hook_theme_registry_alter().

function mymodule_theme_registry_alter(&amp;$theme_registry) {
  if (isset($theme_registry['breadcrumb'])) {
    $theme_registry['breadcrumb']['function'] = 'theme_mymodule_breadcrumb';
  }
}


theme_mymodule_breadcrumb() is the function that replaces theme_breadcrumb(), and it gets the same parameters.


  $variables: An associative array containing:
  
  
  breadcrumb: An array containing the breadcrumb links.
  


The theme function should be overridden if you want to alter its output. If you want to alter the value of the variables passed to theme_breadcrumb(), with Drupal 7 you can implement a preprocess function.

function mymodule_preprocess_breadcrumb(&amp;$variables) {
  // Your code.
}