Lokai's idea will work and it will be pretty stable (especially if you name each Xmlspawner and reference the name, instead of the Serial to trigger the spawners).
We all know there are many different ways to skin a cat, so I'm just offering another way.
Two Xmlspawners needed for this.
On the first spawner, the first entry should be:
TAKE,1,*,fork/Mysterious Dagger
and then create an entry for the 10% spawn (but don't do anything "special" just add the mob like any other), but make it its own subgroup.
Set it's proximity range so that it covers the same area as your second spawner (you can stack Xmlspawners pretty high without issue).
Set the TrigOnCarried to "Mysterious Dagger" (or whatever you want, it's not "real" loot anyway).
Add an entry in a different subgroup for SETONTHIS/DoReset/True/Running/True
RESET the first Xmlspawner and leave it alone.
On the second spawner, add an entry for your 90% spawn, BUT do something like this:
Orc/Name/Buggy/ADD,0.1/<fork/Name/Mysterious Dagger/Hue/51>
That means that when Buggy spawns, 10% of the time, he will have the Mysterious Dagger as loot.
Depending on if you want the 90% spawn to continue spawning while the 10% is spawned or not, you could add another entry in another subgroup on the second spawner to SETONTHIS/DoReset/True/Running/False.
If you want them to continue spawning, don't do anything more to the second spawner and turn the second spawner on.
As soon as a player loots the Mysterious Dagger, the first spawner will spawn your 10% mob.
There are other, more complicated solutions involving CONDITIONs and some other keywords as well, but I've found that they usually work once and then break.