One more idea. How about using some reserved word for wicket:id. Like this:
<span wicket:id="$somereservedword$" value="message:key1" alt="message:key2"/>
This would create an automatic component (with a behaviour) that scans all attributes and does its magic. This could be easily extended to other scenarios too.
/arto