OPS Switch

Ik kreeg pas geleden een vraag over het switch element. De vraag ging erover wat dit nu precies was en of het veilig was. Deze vraag nopte mij ertoe dit artikel te schrijven en wat meer informatie over dit handige, maar onderbelichte, element.
Soms wil je in een ePUB bepaalde functionaliteit gebruiken dat niet altijd ondersteund wordt door de reader of leesapplicatie. Door gebruik te maken van het switch element kun je een terugval maken voor die readers en applicaties.
Enkele voorbeelden van dat soort functionaliteit is SVG (hoewel dat vrij goed ondersteund zou moeten zijn) en MathML voor vergelijkingen en formules. Er zijn natuurlijk meer voorbeelden te verzinnen.

MathML is een prima voorbeeld. Het is een erg krachtige markeertaal om wiskundige formules en vergelijkingen te beschrijven. Het werkelijke afbeelden wordt daarmee overgelaten aan de applicatie zoals je reader of leesapplicatie. Het zal er daardoor veel beter uitzien dan afbeeldingen en het schaalt mooi mee.
Helaas ondersteunen de meeste readers geen MathML (in ePUB2 tenminste). Echter, met het switch element kun je zowel de MathML voor readers die het ondersteunen en een alternatief voor de andere readers toevoegen.
Hier is een voorbeeld van de IDPF site:

<ops:switch id="mathmlSwitch">

   <ops:case required-namespace="http://www.w3.org/1998/Math/MathML">
      <math xmlns="http://www.w3.org/1998/Math/MathML">
         <mrow>
            <mn>2</mn>
            <mo>&InvisibleTimes;</mo>
            <mi>x</mi>
         </mrow>
         <mrow>
            <mo>+</mo>
            <mi>y</mi>
            <mo>-</mo>
            <mi>z</mi>
         </mrow>
      </math>
   </ops:case>

   <ops:default>
      <p>2x + y - z</p>
   </ops:default>

</ops:switch>

Wat je kunt zien, is dat er een namespace wordt bepaald wat gebruikt moet worden voor dit geval, in dit geval de MathML formule. In de echte case staat de MathML weergave van de formule. De standaard (default) is geeft aan wat het alternatief moet zijn als de reader de MathML niet aankan. In dit geval een simpele tekst representatie van de formule. Het is echter ook mogelijk om een afbeelding te gebruiken, zolang de code erbinnen maar valide XHTML is.

Een ander voorbeeld is was me toegestuurd was in combinatie met de orginele vraag:

<ops:switch xmlns:ops="http://www.idpf.org/2007/ops" id="svgswitch0">

  <ops:case required-namespace="http://www.w3.org/2000/svg">
    <svg xmlns="http://www.w3.org/2000/svg" height="100%" id="cover" viewBox="0 0 832 1280" width="100%">
      <image xmlns:xlink="http://www.w3.org/1999/xlink" height="1280" width="832" xlink:href="../Images/titelpagina.jpg"/>
    </svg>
  </ops:case>

  <ops:default>
    <img alt="generated image" src="../Images/titelpagina1.jpg"/>
  </ops:default>

  </ops:switch>

Zoals te zien is, is er een terugvalbescherming gemaakt voor het geval dat de SVG niet begrepen wordt. Echter, aangezien readers en applicaties verplicht SVG behoren te ondersteunen (althans de SVG functionaliteit hier gebruikt), is de zin hiervan twijfelachtig. Readers en applicaties die dit niet ondersteunen (en ik ken ze niet) zouden zichzelf geen ePUB readers mogen noemen vind ik… Het zou een ander verhaal zijn als erg complexe SVG wordt gebruikt.
Een ander nadeel van dit voorbeeld is dat het twee, waarschijnlijk grotendeels identieke, afbeeldingen in de ePUB plaatst waarmee deze groter wordt dan noodzakelijk is.

Updated: 30/08/16 — 11:59
Toxaris © 2015 Frontier Theme