I learned many moons ago (back in the day when ALL white from head to toe, top, pants, stockings, shoes, sweater were the norm) that peroxide is your friend!! I saved countless tops and pants with peroxide. An older nurse taught me this (she went to nursing school in the late 30's).
If you happen to have peroxide handy when the spill/stain happens, grab the peroxide. Put it directly on the stain. When you get home you can either wash it right away or wait. I usually just throw it in the wash. If you don't have peroxide handy, make sure to keep some at home. Do it as soon as you get home and launder.
I've taken out blood, oil from a gerichair, feces, chocolate, ink, dirt..the list goes on.
Oh, my daughter was Baptised at an older age (5). She was playing with a black ink pen and somehow dragged it accross her Christening dress that was hanging. It was that silky material. I grabbed the peroxide, dabbed the ink with it and voila' stain was gone. Didn't even have to wash it for the stain to disappear.
You could also carry one of those Tide to Go pens. I've heard they work well too. (peroxide is cheaper