8 Modello a oggetti dei documenti per il MathML

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

8.1 Introduzione

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:

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.

8.1.1 Estensioni DOM al MathML

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.

8.1.1.1 Problemi di stile e valori impliciti degli attributi

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.

8.1.1.2 Interfacce di attraversamento e di gamma

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