Смекни!
smekni.com

MathML (Mathematical Markup Language) (стр. 6 из 9)

<mn>4</mn>

</mrow>

<mo>=</mo>

<mn>0</mn>

</mrow>

Обратите внимание на использование вложенных элементов mrow для обозначения термов. Например, левая часть уравнения является операндом для '='. Выделение термов значительно улучшает структуру для визуального отображения, воспроизведения с помощью голоса и переноса строк. Символ MathML InvisibleTimes применяется для того, чтобы сообщить программе отображения, что между 4 и x запрещен перенос строки. На самом деле, такое использование данного элемента, введенного еще в MathML 1.0, не рекомендуется. Все обычные текстовые данные задаются кодами Unicode. Тем не менее, хотя символ для замены &InvisibleTimes; ожидается в Unicode 3.2, и рассматриваются предложения по улучшению Unicode, в текущей версии Unicode 3.0 такого символа не используется. Мы можем использовать ожидаемую цифровую ссылку &#2062; но для понятности будем продолжать использовать в примерах элемент InvisibleTimes.

Разметка:

<mrow>

<mi>x</mi>

<mo>=</mo>

<mfrac>

<mrow>

<mrow>

<mo>-</mo>

<mi>b</mi>

</mrow>

<mo>&PlusMinus; </mo>

<msqrt>

<mrow>

<msup>

<mi>b</mi>

<mn>2</mn>

</msup>

<mo>-</mo>

<mrow>

<mn>4</mn>

<mo>&InvisibleTimes; </mo>

<mi>a</mi>

<mo>&InvisibleTimes; </mo>

<mi>c</mi>

</mrow>

</mrow>

</msqrt>

</mrow>

<mrow>

<mn>2</mn>

<mo>&InvisibleTimes; </mo>

<mi>a</mi>

</mrow>

</mfrac>

</mrow>

Элементы mfrac и msqrt используются для создания дроби и квадратного корня соответственно.

Обратите внимание, что знак 'плюс-минус' задается специальной сущностью &PlusMinus;, хотя в данном случае существует такой символ Unicode, как &#00B1;. MathML предоставляет обширный список имен элементов, задающих математические символы. В дополнение к математическим символам для вывода документа на экран и на печать, MathML предоставляет символы для воспроизведения документа с помощью речи. Для воспроизведения с помощью речи важно автоматически определять, как должен быть прочитан фрагмент

<mrow>

<mi>z</mi>

<mfenced>

<mrow>

<mi>x</mi>

<mo>+</mo>

<mi>y</mi>

</mrow>

</mfenced>

</mrow>

Как 'z умножить на величину x плюс y' or 'z умножить на x плюс y'. Символы &InvisibleTimes; (U+2062) и &ApplyFunction; (U+2061) предоставляют авторам способ напрямую кодировать такие различия для программ речевого воспроизведения. Например, в первом случае, символ &InvisibleTimes; (U+2062) должен быть вставлен после строки, содержащей z. MathML также содержит такие сущности как &dd; (U+2146), представляющая дифференциал. При печати она отображается с отличными от обычного символа 'd' интервалами, а произноситься может как 'd' или 'with respect to'. Пока для исключения двусмысленности используются теги содержания или любой другой механизм, авторы всегда должны использовать описанные выше символы как сущности для того, чтобы сделать документы более доступными.

Разметка:

<mrow>

<mi>A</mi>

<mo>=</mo>

<mfenced open=" [" close="] ">

<mtable>

<mtr>

<mtd><mi>x</mi></mtd>

<mtd><mi>y</mi></mtd>

</mtr>

<mtr>

<mtd><mi>z</mi></mtd>

<mtd><mi>w</mi></mtd>

</mtr>

</mtable>

</mfenced>

</mrow>

Элемент mtable указывает на начало таблицы в MathML. Элемент mtr определяет строку таблицы и элемент mtd содержит данные для элемента строки (ячейки). Большая часть элементов имеет атрибуты, определяющие свойства отображения на экране и на печати. Например, у элемента mfenced есть атрибуты, определяющие, какие символы должны использоваться в начале и в конце группируемого выражения. Атрибуты элементов-операторов устанавливаются в определенное справочником значение по умолчанию при помощи элемента <mo>.

1.6.2 Примеры разметки содержания

Нотация: x2 + 4x + 4 = 0.

<mrow>

<apply>

<eq/>

<apply>

<plus/>

<apply>

<power/>

<ci>x</ci>

<cn>2</cn>

</apply>

<apply>

<times/>

<cn>4</cn>

<ci>x</ci>

</apply>

<cn>4</cn>

</apply>

<cn>0</cn>

</apply>

</mrow>

Обратите внимание, что элемент apply используется для уравнений, операторов и функций.

Разметка содержания MathML не содержит элемента для отображения операции 'плюс-минус'. Поэтому мы используем элемент mo для объявления, что мы хотим применить разметку представления для этого оператора в качестве оператора содержания. Это простой пример того, как разметки представления и содержания могут быть объединены для расширения разметки содержания.

Нотация:

Разметка:

<mrow>

<apply>

<eq/>

<ci>A</ci>

<matrix>

<matrixrow>

<ci>x</ci>

<ci>y</ci>

</matrixrow>

<matrixrow>

<ci>z</ci>

<ci>w</ci>

</matrixrow>

</matrix>

</apply>

</mrow>

Здесь мы используем элементы matrix и matrixrow для помещения содержания в строку матрицы. Заметьте, что по умолчанию отображение элемента содержания matrix включает в себя ограничивающие круглые скобки, а, значит, нет необходимости кодировать их вручную. В этом состоит отличие от элемента представления mtable, который может и не относиться к матрице, и, следовательно, требует отдельного указания, что надо использовать скобки.

1.6.3 Примеры смешанной разметки

Нотация:

MathML (Mathematical Markup Language)

Разметка:

<mrow>

<semantics>

<mrow>

<msubsup>

<mo>&int; </mo>

<mn>1</mn>

<mi>t</mi>

</msubsup>

<mfrac>

<mrow>

<mo>&dd; </mo>

<mi>x</mi>

</mrow>

<mi>x</mi>

</mfrac>

</mrow>

<annotation-xml encoding="MathML-Content">

<apply>

<int/>

<bvar><ci>x</ci></bvar>

<lowlimit><cn>1</cn></lowlimit>

<uplimit><ci>t</ci></uplimit>

<apply>

<divide/>

<cn>1</cn>

<ci>x</ci>

</apply>

</apply>

</annotation-xml>

</semantics>

</mrow>

В этом примере мы используем элемент semantics для того, чтобы представить выражение разметки содержания MathML как семантическое примечание к выражению разметки представления. В представленной разметке элемент msubsup применяется для задания нижних и верхних индексов в выражении, в данном случае - пределов интегрирования в определенном интеграле. Также для описания символов интеграла и дифференциала используются сущности &int; и &dd;.

Элемент semantics содержит в качестве первого дочернего элемента комментируемое выражение, а в качестве второго - сам комментарий. На тип нотации, задаваемой элементом semantics, ограничений не существует. Например, можно задавать разметку TEX или компьютерной алгебры в качестве примечания. Тип аннотации задается атрибутом encoding и элементами annotation, annotation-xml.

Элемент semantics также часто применяется, когда надо задать предложения по представлению разметки содержания документа. В этом случае, в применении к вышеописанной формуле мы получим такую разметку:

<semantics>

<apply>

<int/>

<bvar><ci>x</ci></bvar>

<lowlimit><cn>1</cn></lowlimit>

<uplimit><ci>t</ci></uplimit>

<apply>

<divide/>

<cn>1</cn>

<ci>x</ci>

</apply>

</apply>

<annotation-xml encoding="MathML-Presentation">

<mrow>

<msubsup>

<mo>&int; </mo>

<mn>1</mn>

<mi>t</mi>

</msubsup>

<mfrac>

<mrow>

<mo>&dd; </mo>

<mi>x</mi>

</mrow>

<mi>x</mi>

</mfrac>

</mrow>

</annotation-xml>

</semantics>

Этот тип комментариев полезен, если требуется отображение разметки содержания, отличное от заданного по умолчанию. Например, по умолчанию, некоторые программы отображения могут выводить подинтегральное выражение в виде ' (1/x) dx'. С помощью комментария MathML-Presentation можно задать отображение в виде 'dx/x'. Будьте внимательны, так как программы отображения не обязаны принимать во внимание расположенную в комментариях информацию. Ее использование зависит от программы.

1.7 Синтаксис и грамматика MathML

1.7.1 Синтаксис и грамматика MathML

MathML основан на [XML] (Extensible Markup Language), а значит его синтаксис подчиняется правилам сиснтаксиса XML, и грамматика определяется DTD (Document Type Definition). Другими словами, детали использования тегов, атрибутов, сущностей и всего остального определены в спецификации языка XML, а детали, касающиеся элементов и атрибутов MathML, вложенности элементов и так далее, определены в MathML DTD.

W3C, стараясь увеличить легкость и гибкость использования XML в Сети и поддержать создание модульных XML-приложений, обнаружил, что основная форма DTD не является достаточно гибкой. Поэтому, была создана рабочая группа W3C для разработки XML Schemas, которые являются документами спецификации и должны заменить DTD. MathML 2.0 разработан так, что математики могли использовать все преимущества развивающихся Web-технологий. Таким образом, существует схема для MathML.

Также MathML определяет синтаксические и грамматические правила в дополнение к общим правилам, которые он наследует как приложение XML. Эти правила позволяют MathML представлять значительно больше информации, чем возможно представить с помощью чистого XML, без введения большого числа новых элементов и использовать значительно более сложные DTD или схемы. Конечно, недостатком введения специфических правил MathML является то, что созданные документы не могут обрабатываться процессорами и валидаторами XML.

Существует два основных типа дополнительных грамматических и синтаксических правил MathML. Первый тип включает в себя установку дополнительных критериев на значения атрибутов. Например, в чистом XML невозможно потребовать, чтобы значение атрибута было положительным целым числом. Второй тип правил определяет более детальные ограничения на дочерние элементы (например, на их порядок), чем даны в DTD или даже схемах. Например, в XML нельзя указать, что первый дочерний элемент должен обрабатываться иначе, чем остальные.