Navigáció: Főoldal / III. rész / III. rész (4. fejezet)
III. rész: Részletes összehasonlítás (folytatás III.)
4. Az interfész
4.1. A MathML HTML-be ágyazása
Mióta a MathML megszületett, egyre többen ismerik meg, és használják a matematikában. Számtalan felhasználása létezik, az egyszerű szerkesztőktől kezdve a különböző matematikai alkalmazásokig, de mégis használatának legelterjedtebb módja a HTML dokumentumokba való beágyazás.
A MathML HTML-be ágyazásának háromféle interfészét ismerjük.
Az első, mikor szemantikailag integráljuk a két nyelvet. Ez legtöbbször azt használja ki, hogy a MathML az XML “leszármazottja”, így az XML beágyazásának szabályai érvényesek itt is.
A másik módja, mikor az általunk használt böngésző fel van készítve a MathML szövegek felismerésére, így azokat a matematikai jelölés szabályainak megfelelően jeleníti meg.
Harmadik módszer, mikor olyan segédeszközöket használunk, melyek a MathML kódot kezelni tudják. Ezek az eszközök lehetnek speciális szövegszerkesztők, fordítók, kódgenerátorok számítógépes algebrai rendszerek és más tudományos szoftverek.
4.1.1. A <math> elem
A MathML-nek egyetlen interfész eleme van, a <math>, mely körbezár minden MathML nyelvű szövegrészt egy adott HTML dokumentumban. Mindig a legfelső szinten áll, ezért nem lehet egymásba ágyazni több ilyen elemet. Ez az elem jelzi a megjelenítőnek, hogy innentől ne HTML-ként, hanem MathML-ként kell értelmeznie a további szöveget.
A <math> elemnek korlátlan számú utóda lehet, és alapjában véve úgy viselkedik, mint egy <mrow> elem.
A <math> elemnek a következő attribútumai lehetnek: class, style (ezeket a stíluslapokkal való későbbi kompatibilitás miatt specifikálták), macros (külső makrók helyét határozhatjuk meg itt), mode (a megjelenítés módját határozza meg, hasonlít az <mstyle> displaystyle attribútumára). Ezeket belső interfész-attribútumoknak hívjuk.
Ahhoz, hogy böngészőnkben helyesen értelmezni és megjeleníteni tudjuk MathML kódjainkat, szükséges lehet még néhány attribútum beállítása. Ezeket szintén a <math> elem attribútumaiként adjuk meg, feladatuk a böngésző és a MathML megjelenítő közötti információátadás. Ezek az úgynevezett külső interfész-attribútumok: type (a tartalom MIME-típusát adhatjuk itt meg), name (a szövegrész neve), height, width, baseline (az elemek adott tulajdonságainak ideiglenes beállítására szolgálnak), overflow (ha egy kifejezés valamilyen okból – pl. túl hosszú – nem lenne megjeleníthető, itt adhatunk meg egy alternatív megjelenési módot; értékei: “scroll” – görgetést tesz lehetővé görgetősávok alkalmazásával egy új ablakban; “elide” – ahol tudja, lerövidíti a kifejezéseinket, pl. egy polinomnál a + ... + alkalmazásával; “truncate” – a jobboldali és alsó határon túl eső részeket egyszerűen levágja; “scale” – átállítja a betűtípusok méretét, vagy ha lehetséges, nagyobbra állítja az ablak méretét), altimg, alttext (ezeket akkor használjuk, ha a böngésző nem alkalmas beágyazott elemek megjelenítésére, így valamilyen más alternatív megoldást kell választanunk).
A fenti attribútumok beállítása a dokumentum első beolvasásakor lépnek érvénybe. Ekkor történnek meg az olyan beállítások, mint a betűméretek módosítása is, melyek a MathML szövegrészekre is hatással vannak.
Az olyan dokumentumaink fejrészébe, amelyek tartalmaznak MathML elemeket, célszerű elhelyezni a következő HTML <META> elemet:
<META content-math-type="text/mathml">
Ugyanígy a <math> elem type attribútumában is megadhatjuk a text/mathml MIME-típust. Ezeket a dokumentumokat a standard .mml kiterjesztéssel is megjelölhetjük.
Közvetlenül nincsen lehetőség arra, hogy MathML kódokhoz kapcsoljunk HTML dokumentumokat, mert a MathML specifikációja nem engedélyezi a MathML és HTML elemek egy adott szövegben való összevegyítését. Sajnos, ez a MathML hibája, a későbbi változatoknál meg kellene vizsgálni ennek a lehetőségét.
A fentiek miatt így nincs arra lehetőségünk, hogy MathML szövegben közvetlenül kapcsokat hozzunk létre más dokumentumokkal, mert nem használhatjuk a HTML <A> elemét. Szerencsénkre, mivel a MathML egy XML változat, azért van lehetőségünk erre, bár egy kicsit bonyolultabban. Az <malignmark/>, az <maligngroup/>, a <none/>, a <power/> és a <sep/> kivételével az összes többi elemnek lehet még két attribútuma, az XML-LINK és a HREF, mellyel a kapcsok készítése megoldható, a következő módon:
<mrow XML-LINK="simple" HREF="http://www.mypage.com">
...
</mrow>
Az XML-LINK a következő értékeket veheti fel: “simple”, “extended”, “locator”, “group”, “document”, melyek közül MathML kódunknál a “simple”-t érdemes használni (a többiről bővebb információt a W3C XML specifikációja ad). Az, hogy az így létrehozott kapocs hogyan jelenik meg, teljesen a böngészőtől függ.
A kapcsokhoz hasonlóan képeket sem tudunk megjeleníteni MathML kódban, erre áthidaló megoldás sincs. Legjobb módszer, ha ilyenkor a matematikai kifejezést és a megjelenítendő képet valamilyen módon egyesítjük, és ezt a képet jelenítjük meg normál HTML kódból.
4.1.2. Egy egyszerű MathML példa
Ebben a példában egy HTML kódot mutatok be, amely a keretben található szöveget jeleníti meg:
MathML példa
A másodfokú egyenletek megoldóképlete:
A HTML kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250">
<META Content-math-Type="text/mathml">
<TITLE>MathML példa</TITLE>
</HEAD>
<BODY>
<H1 align=”center”>MathML példa</H1>
<P>A másodfokú egyenletek megoldóképlete:
<math>
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mrow>
<mo>-</mo>
<mi>b</mi>
</mrow>
<mo>±</mo>
<msqrt>
<mrow>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>-</mo>
<mrow>
<mn>4</mn>
<mo>⁢</mo>
<mi>a</mi>
<mo>⁢</mo>
<mi>c</mi>
</mrow>
</mrow>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mo>⁢</mo>
<mi>a</mi>
</mrow>
</mfrac>
</mrow>
</math>
</P>
</BODY>
</HTML>
4.2. Az OpenMath HTML-be ágyazása
4.2.1. Az <OMOBJ> elem
Hasonlóan a MathML-hez, az OpenMath-nak is egyetlen interfész eleme van, az <OMOBJ> elem, mely körbezár minden OpenMath nyelvű szövegrészt az adott HTML dokumentumban, és jelzi a megjelenítőnek, hogy innentől kezdve OpenMath nyelvű leírás kezdődik. Mindig az OpenMath nyelvű szövegek legfelső szintjén áll, nem lehet egymásba ágyazni.
Az <OMOBJ> elemnek korlátlan argumentuma lehet, viszont nincsenek attribútumai, alapjában véve úgy viselkedik, mint egy <OMA> elem.
OpenMath nyelvű dokumentumoknál is tanácsos lehet beállítani a HTML dokumentumunk fejrészében egy <META> elemet, a következő módon:
<META content-math-type=”text/OpenMath”>
OpenMath-ban egyáltalán nincs lehetőségünk arra, hogy kapcsokat hozzunk létre más dokumentumokkal, ezt abból a HTML dokumentumból kell elvégeznünk, amibe beágyaztuk OpenMath nyelvű szövegünket.
4.2.2. Egy egyszerű OpenMath példa
A fenti, MathML-nél megadott példa OpenMath-os formája:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250">
<META Content-Type="text/OpenMath">
<TITLE>OpenMath példa</TITLE>
</HEAD>
<BODY>
<H1 align=”center”>OpenMath példa</H1>
<P>A másodfokú egyenletek megoldóképlete:
<OMOBJ>
<OMA>
<OMS cd = "relation" name="eq"/>
<OMV name="x"/>
<OMA>
<OMS cd="arith" name="divide"/>
<OMA>
<OMS cd=”arith” name=”plusminus”/>
<OMA>
<OMS cd = "arith" name="unary_minus"/>
<OMV name="b"/>
</OMA>
<OMA>
<OMS cd="arith" name="root"/>
<OMA>
<OMS cd = "arith" name="minus"/>
<OMA>
<OMS cd="arith" name="power"/>
<OMV name="b"/>
<OMI>2</OMI>
</OMA>
<OMA>
<OMS cd = "arith" name="times"/>
<OMA>
<OMS cd = "arith" name="times"/>
<OMI>4</OMI>
<OMV name="a"/>
</OMA>
<OMV name="c"/>
</OMA>
</OMA>
<OMA>
<OMI> 2 </OMI>
</OMA>
</OMA>
</OMA>
<OMA>
<OMS cd = "arith" name="times"/>
<OMI>2</OMI>
<OMV name="a"/>
</OMA>
</OMA>
</OMA>
</OMOBJ>
</P>
</BODY>
</HTML>
4.3. A TEX kapcsolatai
Napjainkban sajnos nincsen arra mód, hogy TEX-ben megírt szövegeinket megjeleníthessük az Interneten; jelenleg lehetőségeink kimerülnek abban, hogy a TEX kódot egyszerűen megjelenítsük.
Létezik ugyan néhány program, amely a TEX-ben írt szöveget átkonvertálja HTML-be, de a konvertálás során - a HTML hiányosságai miatt - rengeteg olyan információ elveszik, amely miatt az eredmény korántsem egyezik meg a kiindulási szöveggel. Ennek a módszernek egyetlen előnye az, hogy bármilyen standard böngészőben megjeleníthető, ami a MathML és OpenMath kódú dokumentumokról nem mondható el.