The upside of the granularity SSML markup provides should be clear now, though: you can overcome any problem no matter how small (or big) with greater precision than PLS files offer. The downside, of course, is having to work at the markup level to correct each instance that has to be overridden.
To hark back to the discussion of PLS files for a moment, though, we could further simplify the correction process by moving the more common pronunciation to our PLS lexicon and only fix the differing heteronym:
<lexicon
version="1.0"
alphabet="x-sampa"
xml:lang="en"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon">
<lexeme>
<grapheme>bass</grapheme>
<phoneme>beIs</phoneme>
</lexeme>
</lexicon>
<p>
The guitarist was playing a bass that was shaped like a
<span ssml:alphabet="x-sampa" ssml:ph="b&s">bass</span>.
</p>
It’s also not necessary to define the ssml:alphabet
attribute every time. If we were only using a single alphabet throughout the
document, which would be typical of most ebooks, we could instead define the
alphabet once on the root html element:
<html … ssml:alphabet="x-sampa">
So long as the alphabet is defined on an ancestor of the element carrying the
ssml:ph attribute, a rendering engine will
interpret it correctly (and your document will be valid). (The root element is
the ancestor of all the elements in the document, which is why these kinds of
declarations are invariably found on it, in case you’ve ever wondered but were
afraid to ask.)
Our markup can now be reduced to the much more legible and easily maintained:
<p>
The guitarist was playing a bass that was shaped like a
<span ssml:ph="b&s">bass</span>.
</p>
But heteronyms are far from the only case for SSML. Any language construct that can be voiced differently depending on the context in which it is used is a candidate for SSML. Numbers are always problematic, as are weights and measures:
<p>
There are <span
ssml:ph="w"Vn T"aUz@n t_hw"En4i f"O:r">1024</span> bits
in a byte, not <span ssml:ph="t_h"En t_hw"En4i f"O:r">1024</span>,
as the year is pronounced.
</p>
<p>
It reached a high of <span
ssml:ph="'T3rti s"Ev@n 'sEntI"greId">37C</span> in the sun as I stood
outside <span ssml:ph="'T3rti s"Ev@n si">37C</span> waiting for someone
to answer my knocks and let me in.
</p>
<p>
You'll be an <span ssml:ph="Ekstr@ lArdZ">XL</span> by the end of Super Bowl
<span ssml:ph="'fOrti">XL</span> at the rate you're eating.
</p>