How are offers matched up on Ripple trades? I'm trying to better understand how buy and sell offers work on the Ripple network.  

Let's say Alice creates a new Ripple currency, calls it XYZ, and describes it to her friends Bob and Carol.

Bob loves the new XYZ currency.  He submits an offer to buy 1 XYZ for 3 XRP.

Carol merely likes XYZ.  She offers to buy 1 XYZ for just 1 XRP.

That's the set up.  I'm wondering what happens in the following cases...

What if Alice offers to sell 2 XYZ for 4 XRP?  Will the ripple network transfer 1 XYZ each to Bob and Carol?  Or, must Alice wait until someone offers to buy exactly the number of XYZ she is selling?

What if instead Alice offers to sell just 1 XYZ for 2 XRP?  Only Bob's offer of 3 XRP meets the price. But will Bob spend just 2 XRP (what Alice asked) or 3 XRP (what he offered)?

Finally, what if Alice offers to sell just 1 XYZ for 1 XRP? Will she end up with 3 XRP from Bob, 1 XRP from Bob, or 1 XRP from Carol?
Offers are always filled best first. Among tying offers, the one placed first is taken first.

Once they're placed, offers are always taken at the rate they were placed. Offers are always placed at their original rate, regardless of what crossing offers they take.

When an offer is placed, any crossing offers (existing offers in the other direction that can satisfy all or part of the new offer) are taken. It is up to the person who placed the offer whether counter-offers that tie their rate are taken.

The difference between a "buy" offer and a "sell" offer is only how the offer is placed after crossing offers are taken. For example:

If there are no crossing offers, there is no difference between an offer to buy 1 XYZ for 1 XRP and an offer to sell 1 XRP for 1 XYZ. But ...

If you place an offer to buy 1 XYZ for 1 XRP and crossing offers allow you to buy .5 XYZ for .1 XRP, the remaining offer will be to buy .5 XYZ for .5 XRP. (So, when/if your offer is fully consumed, you will buy 1 XYZ for .6 XRP.)

If you place an offer to sell 1 XRP for 1 XYZ and crossing offers allow you to sell .1 XRP for .5 XYZ, the remaining offer will be to sell .9 XRP for .9 XYZ. (So when/if your offer is fully consumed, you will sell 1 XRP for 1.4 XYZ.)