Foi de stil XSLT pentru MathML

Informatii tehnice aditionale. Pentru un prim sumar al foii de stil consultati Pagina Sumar.

== Foile de stil au fost actualizate ultima oara: Joi 26 iunie 2003 15:52:02 CEST ==

Publicarea documentelor XHTML+MathML pe Web

La momentul curent putine browsere au suport "nativ" pentru MathML si nici unul nu are suport nativ pentru partea de Continut MathML. Totusi Mozilla si Amaya au suport bun pentru Prezentare MathML si pentru celelalte browsere exista un domeniu de extensii care vor interpreta MathML (in particular, WebEQ si MathPlayer de la Design Science si Techexplorer de la IBM).

Principalul dezavantaj al utilizarii unei extensii de la o a treia parte pentru interpretarea MathML intr-o pagina web este ca necesita marcaj specific pentru specificarea interpretarii extensiei (cum ar fi <applet> pentru appleturi Java, <embed> pentru module ai <object> pentru extensii Microsoft Behavior). Utilizarea unui asemenea marcaj leaga documentul de o platforma specifica, in timp ce idealul publicarii informatiei pe web este ca ea ar trebui sa fie accesibila tuturor utilizand un domeniu de unelte. Prezentam aici o propunere de mecanism pentru utilizarea limbajului de transformare XSLT pentru a evita aceste neajunsuri si a permite fisierelor XML care se conformeaza Recomandarilor XHTML si MathML sa fie interpretate pe un domeniu larg de browsere, fara a avea marcaj specific browserului in document. Documentul necesita doar o singura instructiune de procesare legand la foaia de stil descrisa aici. Foaia de stil transforma fisierul XML furnizat, adaugand orice marcaj este necesar pentru interpretarea MathML in browserul curent si transmite documentul rezultat browserului pentru interpretare. In mod clar aceasta necesita ca browserul sa suporte transformari XSLT, care inseamna ca este necesar un browser relativ now, totusi versiunile curente ale (cel putin) Internet Explorer, Netscape si Mozilla suporta toate XSLT, asa ca in timp ce suportul XSLT nu este universal el este, sau va fi in curand, disponibil pe majoritatea browserelor PC.

Legarea la foi de stil

Pentru a utiliza aceste foi de stil trebuie sa adaugati o linie cum ar fi urmatoarele la documentul dumneavoastra, inainte de elementul de top <html>.

<?xml-stylesheet type="text/xsl" href="mathml.xsl"?>
<?xml-stylesheet type="text/xsl" href="../XSL/mathml.xsl"?>
Foaia de stil mathml.xsl va interpreta documente continand orice parte a MathML, incluzand Elemente Continut. Daca documentul nu contine nici-un Continut MathML, atunci ca o alternativa se poate lega la o foaie de stil usor mai simpla:
<?xml-stylesheet type="text/xsl" href="pmathml.xsl"?>
<?xml-stylesheet type="text/xsl" href="../XSL/pmathml.xsl"?>

Aceasta evita incarcarea XSLT-ului necesar pentru transformarea Continutului MathML in favoarea Prezentarii MathML care este necesar pentru afisarea Continutului MathML in anumite platforme. Cele mai multe exemple prezentate aici vor utiliza aceasta a doua foaie de stil incat aceasta este suficienta pentru a demonstra capacitatile de interpretare ale unor sisteme variate.

Exemple

Specificarea preferintelor

In mod normal foaia de stil va transforma documentul de intrare pentru utilizarea unui interpretor MathML potrivit, depinzand de browserul utilizat si orice extensii ale browserului pe care le detecteaza. Ea incearca o lista de posibilitati si o selecteaza pe prima care apare a fi instalata.

Se poate controla acest comportament prin adaugarea unei posibilitati de interpretare la inceputul listei de interpretari de incercat. Aceasta se obtine prin adaugarea unui atribut din spatiul de nume al preferintelor MathML la elementul cel mai de sus de la inceputul documentului. De exemplu:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html pref:renderer="css">


</html>

din fisierul exemplu pmathml-css specifica ca interpretarea "css" este de preferat (in dauna lui Techexplorer sau MathPlayer care ar fi putut altfel sa fi fost alese in Internet Explorer).

Inca de facut....

Exista totusi imbunatatiri de facut pentru aceste foi de stil si documentatie...

In particular codul JavaScript in foaia de stil pmathml-css nu este foarte robust in prezent.

Suport pentru mai multe browsere este in particular important, incluzand portarea codului JavaScript/CSS din Internet Explorer la Netscape pentru a da o alternativa buildurilor Mozilla si Netscape care nu au suport MathML.

Current Browser support

OS Browser XSLT MathML Renderer
Native Presentation MathPlayer Behaviour Techexplorer Behaviour Techexplorer Plugin CSS/Java Script
Windows IE x, x < 5.0 no no no no no no
IE 5.0 wd-xsl no no no yes no
IE 5.5 wd-xsl no yes yes yes no
IE 5.0/MSXML3 yes no no no yes no
IE 5.5/MSXML3 yes no yes yes yes yes
IE 6 yes no yes yes yes yes
Netscape x, x <= 6.0 no no no no no no
Netscape 6.1 yes no no no yes no
Netscape 7.0 yes yes no no no no
Mozilla 0.9.4 yes no no no no no
Mozilla 0.9.4/MathML yes yes no no no no
Mozilla 0.9.5+ yes yes no no no no
Amaya no yes no no no no
Opera no no no no no no
Lynx no no no no no no
Macintosh IE 5.0 wd-xsl no no no yes no
Netscape x, x <= 6.0 no no no no no no
Netscape 6.1 yes no no no yes no
Mozilla yes no no no no no
Opera no no no no no no
Lynx no no no no no no
Linux / Unix Netscape x, x <= 6.0 no no no no no no
Netscape 6.1 yes no no no yes no
Netscape 7.0 yes yes no no no no
Mozilla 0.9.4 yes no no no no no
Mozilla 0.9.4/MathML yes yes no no no no
Mozilla 0.9.5+ yes yes no no no no
Amaya no yes no no no no
Opera no no no no no no
Lynx no no no no no no

Fisiere in distributie

Foi de stil XSLT

pmathml.xsl
Principala foaie de stil pentru Prezentare MathML. Detecteaza posibilitatile de interpretare disponibile pentru browserul curent si orice preferinte specificate in document si seteaza o transformare corespunzatoare.
mathml.xsl
Foaia de stil principala pentru Continut sau Prezentare MathML. La momentul curent aceasta este in principal o copie a lui pmathml.xsl, este posibil ca ca versiuni viitoare ale acestei distributii sa fie capabile in unirea acestor fisiere. Ea actioneaza identic cu pmathml.xsl in afara de cazul in care se executa cu transformiix (mozilla sau netscape) in care caz o pre-transformare a Continutului MathML la Prezentare MathML este efectuata inaintea interpretarii Prezentarii MathML.
ctop.xsl
Implementeaza o transformare de la Continut MathML la Prezentare MathML. La momentul curent aceasta este utilizata numai pentru Mozilla (care nu are capacitati native pentru Continut MathML) Totusi ea poate fi oferita ca o optiune chiar daca sistemul poate interpreta nativ Continut MathML pentru ca este probabil mai usor sa se modifice o asemenea foaie de stil pentru preferinte locale decat sa se modifice o regula de interpretare construita intr-un interpretor MathML
pmathmlcss.xsl
Aceasta foaie de stil transforma Prezentare MathML in XHTML + CSS + Javascript, asa interpretandu-se MathML (cu o calitate oarecum variabila) intr-un browser standard HTML fara nici un modul extra. In plus fata de utilizarea ei ca o optiune de rezerva in aceste transformari la client, aceasta foaie de stil ar putea fi utilizata ca o transformare localizata la server pentru a produce ceva acceptabil pentru browserele fara nici un suport XSLT sau MathML. (La momentul curent javascript are o inclinare spre Microsoft, dar aceasta ar putea fi, sa speram, eliminata in versiuni viitoare.)
svg.xsl
O versiune simplificata a lui pmathml.xsl, extinsa sa lucreze cu SVG precum si MathML, sub Internet Explorer ea utilizeaza Comportament Adobe SVG.
xsldoc.xsl
O foaie de stil pentru afisarea foilor de stil XSLT ca HTML.

Fisiere exemplu si documentatie

Overview.html
Acest fisier.
pmathml.xml
Un fisier cu un exemplu mic de Prezentare MathML,
pmathml-css.xml
Ca mai sus dar dand preferinta pentru interpretarea "CSS".
pmathml-mathplayer.xml
Ca mai sus dar dand preferinta interpretarii "MathPlayer".
pmathml-mathplayer-dl.xml
Ca mai sus dar dand preferinta interpretarii "MathPlayer", dupa ce s-a cerut utilizatorului sa instaleze MathPlayer daca este necesar.
pmathml-techexplorer-plugin.xml
Ca mai sus dar dand preferinta interpretarii "Techexplorer Plugin".
pmathml-techexplorer.xml
Ca mai sus dar dand preferinta interpretarii "Techexplorer Behaviour".
csmall.xml
Un fisier cu un exemplu mic de Continut MathML.
cmathml.xml
Un fisier cu un exemplu mai mare de Continut MathML
cmathml-css.xml
Ca mai sus dar preferand interpretarea CSS
cmathml-mathplayer.xml
Ca mai sus dar preferand interpretarea MathPlayer
cmathml-techexplorer.xml
Ca mai sus dar preferand interpretarea Techexplorer
mml2002-01.xml ... mml2002-16.xml
Prezentare tinuta la a-2-a Conferinta Internationala MathML.
pmathml-self-style.xml
Un fisier cu un mic exemplu Prezentare MathML, care nu utilizeaza foaia de stil standard dar utilizeaza o forma alternativa, care evita nevoia de legare la fisiere externe. Vedeti mai jos pentru detalii.

Arhiva

xsl.zip
Arhiva zip pentru intreaga distributie

Copyright si Conditii de distribuire

Majoritatea codului in aceste foi de stil a fost scrisa de David Carlisle. Contributiile altora sunt recunoscute in locurile corespunzatoare din interiorul surselor.

Codul este facut disponibil cu urmatoarele conditii:

Copyright ? David Carlisle 2001, 2002.

Utilizarea si distribuirea acestui cod sunt permise conform termenilor W3C Software Notice and License.

Alternative

Foaie de stil cu autoreferentiere

Cateodata este inconvenient sa se aranjeze ca un document sa fie generat intotdeauna cu un link relativ la foaia de stil corect si restrictiile de securitate ale Internet Explorer genereaza probleme la utilizarea unui URI absolut la (de exemplu) copia de pe siteul W3C.

Este posibil sa se utilizeze sintaxa XSLT "elementul literal rezultat ca foaie de stil", si utilizarea documentului insusi ca o foaie de stil. Aceasta forma nu poate face transformarea Continut in Prezentareceruta de Mozilla, asa ca ar trebui sa fie utilizata numai pentru documente utilizand prezentare MathML, deasemenea ea genereaza la momentul curent o atentionare despre elemente XSLT nesuportate in Amaya. Totusi pentru Internet Explorer, Mozilla si Netscape, se poate urma exemplul pmathml-self-style.xml, ale carui parti principale sunt aratate mai jos.

<?xml-stylesheet type="text/xsl" href="pmathml-self-style.xml"?>
<html
  xmlns:m="http://www.w3.org/1998/Math/MathML"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"
  xmlns="http://www.w3.org/1999/xhtml" >
<head><title>Presentation MathML</title>

<object id="mmlFactory" 
        classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987">
</object>

<xsl:processing-instruction name="import"
>namespace="m" implementation="#mmlFactory"</xsl:processing-instruction>

</head>
<body>
<h1>Presentation MathML</h1>
....
<m:math mode="display">
<m:mrow>
  <m:msqrt>
.....
</m:mrow>
</m:math>

</body>
</html>

Pentru a utiliza acest mecanism:

  1. Instructiunea href de procesare a foii de stil trebuie sa se refere la fisierul insusi.
  2. Declaratia spatiului numelor XSLT si atributul xsl:version trebuie sa fie plasate pe elementul html.
  3. Un obiect referind un comportament pentru Internet Explorer ar trebui sa fie adaugat in capul documentului. Cel aratat ar trebui sa functioneze pentru MathPlayer; schimband id-ul la classid="clsid:0E76D59A-C088-11D4-9920-002035EFB1A4" ar trebui sa functioneze pentru Techexplorer. (Aceasta versiune de foaie de stil nu poate suporta optiunile diferite simultan.).
  4. Un element xsl:processing-instruction ar trebui adaugat dupa cum s-a aratat, pentru a genera o instructiune de procesare pentru functionarea cu Microsoft Behaviors.
  5. Elementelor MathML trebuie sa li se adauge un prefix in mod explicit cu prefixul declarat in capul documentului, pentru ca aceasta foaie de stil simplificata nu poate converi elemente fara prefix la prefixul necesar lui Internet Explorer.

Comutari ale tipurilor Mime

Pentru Continut MathML, Mozilla necesita o transformare la Prezentare, dar in toate celelalte cazurile ale interpretarii MathML utilizand foaie de stil, exista foarte putina "transformare" care are loc; principalul proces este o transformare identitate, cu cateva optiuni aditionale, in principal pentru a activa mecanisme Internet Explorer Behavior.

Daca aveti acces la configurarea serverului atunci o alternativa la utilizarea foii de stil este sa se produca fisierul in XHTML, cu obiectul aditional si instructiunile de procesare necesare lui Internet Explorer. Totusi se serveste fisierul ca tip de continut text/html daca clientul cerand pagina este Internet Explorer (si text/xml in caz contrar). Prin servirea fisierului ca HTML, Internet Explorer va utiliza interpretorul sau HTML si astfel declanseaza mecanismul behavior. Fara a necesita o foaie de stil pentru a executa o transformare XHTML la HTML.

Daca se incearca acest mecanism trebuie avute in vedere ghidurile de compatibilitate din Recomandarea XHTML 1.0 care dau indrumari despre cum sa se evite optiunile XHTML care pot cauza probleme in browserele HTML.


Grupul de lucru Math W3C. Trimiteti comentarii, intrebari si corectii (in engleza) la www-math@w3.org

$Id: Overview-tech.html,v 1.9 2003/06/26 13:55:31 mf Exp $


Aceasta este o traducere din limba engleza; versiunea originala: http://www.w3.org/Math/XSL/Overview-tech.html Versiunea in limba romana poate contine erori. Versiunea engleza este singura versiune normativa.

Traducator