Descrizione sommaria: Linguaggio di
Marcatura Matematica (MathML) Versione 2.0
Precedente: 7 L'interfaccia del MathML
Successivo: A Analisi del MathML
8 Modello a oggetti dei documenti
per il MathML
8.1 Introduzione
8.1.1 Estensioni
DOM al MathML
Questo documento estende l'API di base del DOM di Livello 1 per descrivere oggetti e metodi specifici degli elementi MathML nei documenti. Nel documento base si trova la funzionalità necessaria per manipolare le strutture gerarchiche fondamentali dei documenti, gli elementi e gli attributi; le funzionalità che dipendono dagli elementi specifici definiti nel MathML si trovano in questo documento.
Le specifiche DOM vere e proprie appaiono nell'Appendice E [Modello a oggetti dei documenti per il MathML].
Gli obiettivi dell'API DOM specifica del MathML sono:
Questo documento comprende le seguenti specializzazioni per il MathML:
MathMLElement
derivata dall'interfaccia
di base Element
. L'interfaccia MathMLElement specifica le
operazioni e le interrogazioni che si possono fare su ogni elemento
MathML. I metodi su MathMLElement
comprendono quelli per
il recupero e la modifica di attributi che si applicano a tutti gli
elementi del MathML.
MathMLElement
per
codificare restrizioni sintattiche imposte dal MathML.
MathMLElement
che rappresentano
tutti gli elementi del MathML con attributi che si estendono oltre
quelli specificati nell'interfaccia MathMLElement
. Per
tutti questi attributi, l'interfaccia derivata per l'elemento contiene
metodi espliciti per impostare ed ottenere i valori.
Node
ed Element
debbano
chiaramente restare disponibili, ciò in molti casi può
essere fuorviante. Così, per esempio, l'interfaccia
MathMLFractionElement
fornisce metodi per l'accesso agli
attributi numerator
e denominator
; una
chiamata a setDenominator(newNode)
è meno ambigua
dal punto di vista dell'applicazione chiamante di una chiamata a
Node::replaceNode(newNode, Node::childNodes().item(2))
.
Il MathML specifica regole che sono invisibili ai generici elaboratori e validatori XML. Il fatto che gli oggetti DOM del MathML debbano rispettare queste regole, e lanciare eccezioni quando queste regole sono violate, è una ragione importante per fornire un'estensione DOM specifica per il MathML.
Ci sono fondamentalmente due tipi di regole aggiuntive di grammatica e sintassi del MathML. Un tipo riguarda mettere criteri aggiuntivi sui valori degli attributi. Per esempio, non è possibile in XML puro richiedere che il valore di un attributo sia un intero positivo. Il secondo tipo di regola specifica restrizioni più dettagliate sull'elemento figlio (per esempio sull'ordinamento) di quelle date nella DTD. Per esempio, non è possibile in XML specificare che il primo figlio sia interpretato in un modo e il secondo in un altro. Gli oggetti DOM del MathML devono fornire questa interpretazione.
Il MathML ignora gli spazi bianchi che occorrono fuori dagli elementi token. I caratteri che non sono spazi bianchi non sono permessi in tale contesto. Gli spazi bianchi che occorrono nel contenuto di elementi token sono `eliminati' ai lati (ovvero tutti gli spazi bianchi all'inizio e alla fine del contenuto sono rimossi), e `collassati' all'interno (ovvero ogni sequenza di uno o più spazi bianchi è sostituita da uno spazio). Gli elementi DOM del MathML eseguono questa eliminazione degli spazi bianchi quando è necessario. Nel MathML, come nell'XML, `spazio bianco' vuol dire spazio, tabulazione, fine riga o ritorno del carrello, ovvero i caratteri con codici Unicode esadecimali rispettivamente U+0020, U+0009, U+000a, o U+000d.
Ci si aspetta che una futura versione del DOM per il MathML possa trattare problemi non trattati qui. Alcuni di essi sono descritti in seguito.
Le interfacce descritte per rappresentare gli elementi del MathML
comprendono l'accesso ad un numero di attributi (nel senso dell'XML)
che appartengono a questi elementi. L'intenzione di questi metodi
nelle interfacce di base del MathML (le coppie `get'/`set') è
solo di accedere ad attributi esplicitamente specificati degli
elementi, e di non accedere specificamente a valori impliciti
che possono essere specifici dell'applicazione, Chiamate a queste
interfacce per ottenere attributi che non sono stati esplicitamente
specificati non dovrebbero restituire niente (una
DOMString
vuota).
Sembra importante dilungarsi su questa distinzione alla luce della
natura degli elementi MathML e dei loro attributi; tutti gli attributi
definiti per gli elementi di presentazione del MathML sono dichiarati
nella DTD con un valore predefinito di #IMPLIED
, ad
esempio. Questo e` particolarmente rilevante per l'interfaccia
dell'elemento mo
, dove l'attributo form
può essere inferito dal contesto se non dato esplicitamente, ma
altri attributi sono normalmente raccolti da un dizionario degli
operatori disponibile ad un interprete. La varietà delle
applicazioni che possono aver bisogno di implementare il DOM del
MathML può a volte essere legata alla convalida, al calcolo o
ad altri aspetti del documento ad esclusione della riproduzione e
della modifica; tali applicazioni non hanno bisogno di risolvere molti
attributi #IMPLIED
, e perciò non c'è
accesso a tale risoluzione implicita in questa versione del DOM del
MathML.
D'altra parte, sono desiderabili metodi per ottenere i valori attuali ereditati e calcolati di certi attributi di stile, a causa del bisogno di fare frequenti chiamate per scoprire informazioni di stile, l'attuale livello di script e lo stile di visualizzazione. La matematica è caratterizzata dall'annidamento ricorsivo di oggetti, spesso con implicazioni per il calcolo di parametri di stile come la dimensione del font. Come sa chiunque abbia implementato riproduttori matematici, c'è un bisogno costante di queste informazioni, e devono essere ottenute molto velocemente. Di conseguenza, sarebbe saggio fornire un modulo opzionale nel DOM del MathML che rendesse i valori di stile o gli attributi impliciti (es. i valori del dizionario degli operatori) noti all'applicazione che li elabora, in modo da essere `allegati' ad un'istanza DOM e interrogati in seguito.
Comunque, secondo noi introdurre ora metodi per trattare questi problemi sarebbe prematuro. Il supporto CSS e XSL per la matematica è ancora in evoluzione, e il meccanismo per gestire i problemi di stile nei documenti MathML potrebbe bene evolversi con essi. In più, questi problemi si applicano anche al DOM dell'XML di base. Finora (DOM dell'XML di Livello 2), problemi come la privacy rispetto ai fogli di stile dal lato utente sono risultate in nessun metodo del DOM di base definito per ottenere i valori di stile ereditati, calcolati o reali per uno specifico elemento, con l'accesso DOM limitato a fornire le dichiarazioni di stile che sono efficaci. Se un'iterazione futura del DOM dell'XML espandesse questo accesso, i metodi usati qui si applicherebbero anche al DOM del MathML, e questo renderebbe ogni specifica che potremmo fare ora obsoleta.
Inoltre, è probabile che diventerà ovvio un bisogno di specializzazioni specifiche del MathML di interfacce che appartengono ai moduli di attraversamento e di gamma del DOM dell'XML di livello 2. L'ordine di attraversamento di variabili associate, condizioni e dichiarazioni - o se dovrebbero essere omesse da un dato attraversamento - offre un esempio di un'utilità potenziale per tali specializzazioni. Ancora, comunque, secondo noi sarebbe prematuro specificare una qualunque di queste interfacce in questo momento. Sarà necessaria un'esperienza di implementazione per scoprire le interfacce appropriate che dovrebbero essere specificate.
Descrizione Sommaria: Linguaggio di
Marcatura Matematica (MathML) Versione 2.0
Precedente: 7 L'interfaccia del MathML
Successivo: A Analisi del MathML