animate some attribute

<!-- fill color  -->
    <animate attributeName="fill" values="blue;orange;purple;black;#CCCCCC"  
         begin="1s" dur="5s"  fill="freeze" />
<!-- opacity  -->
    <animate attributeName="opacity" values="0;1"  begin="0s" dur="5s"  fill="freeze" />
<!-- drawing  ... it's a cheat using the a dash to draw but it's a bit fiddly  -->
    <!--path d="M0,0 L100,0 100,100, 0,100 Z" fill="none" stroke="black" stroke-dasharray="400" /-->
    <animate attributeName="stroke-dashoffset" values="400;800;800" dur="2s" repeatCount="indefinite" />  

animateTransforms

<!-- translate  -->
   <animateTransform attributeName="transform" dur="2s" type="translate" values="0,-100;0,0" fill="freeze" additive="sum" />
<!-- rotate  ...probably easiest to always rotate around 0,0--this means translate your thing to the origin and the back after the rotation  -->
   <animateTransform attributeName="transform" dur="2s" type="rotate" values="0;90" fill="freeze" additive="sum"/>
<!-- scale  ...probably easiest to always scale around 0,0--this means translate your thing to the origin and the back after the scaling  -->
   <animateTransform attributeName="transform" dur="2s" type="scale" values="1,1;2,2" fill="freeze" additive="sum"/>
<!-- flip  ...probably easiest to always scale around 0,0--this means translate your thing to the origin and the back after the scaling  -->
   <animateTransform attributeName="transform" dur="2s" type="scale" values="1,1;-1,1" fill="freeze" additive="sum"/>
<!-- skewX  ...probably easiest to always skewX around 0,0--this means translate your thing to the origin and the back after the skewing  -->
   <animateTransform attributeName="transform" dur="2s" type="skewX" values="0;30" fill="freeze" additive="sum"/>

useful attributes of animations

repeatCount="10"  
repeat 10 times
repeatCount="indefinite"  
never stop
fill="freeze"  
keep the last value after the animation
additive="sum" 
use with animateTransform to not replace the transform
end="r2.end"
some times it useful to not have to calculate the durations so just use begin and end
keyTimes="0;0.1;0.4;0.9;1" 
this allows you to pace things better. It parallels the values (so there must be 5 five values)

simple combinations

Grouping forces the order that you want
<!-- translate in while spinning  -->
   <animateTransform attributeName="transform" dur="2s" type="translate" values="0,-100;0,0" fill="freeze" additive="sum" />
   <g transform="translate(50,50)"> 
         <animateTransform attributeName="transform" dur="2s" type="rotate" values="0;360" fill="freeze" additive="sum"/>
          <use xlink:href="#face" />
   </g>