Hello,
Since some projects, I heard some of my colleagues complaining about the difficulty to alter links displayed in the breadcrumb.
It comes from the fact the breadcrumb is built through the "menu_get_active_breadcrumb()" function that retrieves the breadcrumb and returns directly them as hyperlinks in the array that will be consumed as variable in the "theme_breadcrumb()" call of "template_process_page()".
In order to add an attribute a breadcrumb item, that obliges us either to parsing the string variable in order to inject it in the HTML or to regenerate each breadcrumb item in order to add it before render them as link.
In order to avoid this kind cumbersome process, IMO, "menu_get_active_breadcrumb()" should returns an array of keyed arrays. Each keyed array would contain data allowing creating the hyperlink displayed in the breadcrumb and could be "preprocessed" by any modules or themes if necessary.
It is what I propose in the attached patch.
In it, I also keep the old implementation in order to ensure the backward compatibility.