DNS rewrite does NOT work on zone transfers, only on DNS replies.
I'm a little confused about who you're currently doing the rewriting for (internal or external users), sounds like your rewriting it for external users. What most people do is put the global address (o.o.o.11) into their DNS server, and remove any DNS rewriting for them, so outside users will be able to get to it fine no matter which DNS server they use.
If the DNS server is on the DMZ and the internal users are on an inside interface, then you can use destination-NAT'ing for them specifically. This means that when they do a DNS query for the DMZ web server, they'll get a o.o.o.11 (external) address. Their PC will then try and access that, and you can set up the PIX to change any packets that it receives on the inside int destined for o.o.o.11 to actually go to the DMZ at p.p.p.11. The command to do this is as follows:
static (dmz,inside) o.o.o.11 p.p.p.11 netmask 255.255.255.255
Note how the interfaces are swapped around from the normal static. This command says if you see a packet on the inside destined for o.o.o.11, send it to p.p.p.11 on the DMZ int instead. That should be what you need.