Смешанная разметка HTML5

Теоретически два вида разметки предназначены для двух совершенно разных типов задач визуального представления математической информации (Presentation MathML) и машинной обработки контента. В реальности часто требуются оба типа разметки (гораздо чаще, чем по отдельности) и объединение их — довольно распространенная практика. Реализовывать такою операцию можно путем непосредственного встраивания одной разметки в другую, но процедура эта требует аккуратности и соблюдения простых правил. Так, любые фрагменты разметки содержания, встроенной в презентационную разметку, должны быть семантически значимыми и не требовать дополнительных аргументов и квантификаторов для достаточного определения. Разметка представления, встроенная в разметку содержания, должна содержаться в токене разметки содержания как единый элемент, используемый в качестве имени переменной или функции.

Есть другой, более гибкий способ объединить оба типа разметки. Это можно сделать с использованием тега <semantics>, связывающего выражения MathML и различные типы примечаний. Идея состоит в том, чтобы присоединить разметку содержания к разметке непредставления в качестве семантического примечания. В общем случае контейнер <semantic> может быть использован для присоединения любых внешних аннотаций. Пример смешанной разметки с его применением показан ниже:

<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>

В данном примере тег msubsup применяется для задания нижних и верхних индексов для представления пределов интегрирования в определенном интеграле. Контейнер <semantics> принимает два аргумента — само комментируемое выражение, в данном случае представленное презентационной разметкой, и комментарий. Формат комментария теоретически может быть любым, он описывается атрибутом encoding тега <annotation-xml>. Нетрудно догадаться, что его значение «MathML-Content» соответствует выражению, сформированному с применением MathML-разметки содержания.

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

<semantics>

<apply>

<int/>

<bvar><ci>x</ci></bvar> <lowlimit><cn>1</cn></lowlimit> <u plim it><ci>t</ci></u plim it> <apply>

<divide/>

<cn>1</cn>

<ci>x</ci>

</apply>

</apply>

<annotation-xml encoding="MathML-Presentat ion"> <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>

(Оба последних примера взяты из спецификации MathML3 консорциума W3C).

На этом с MathML у нас все. Для более основательного изучения я бы рекомендовал замечательный источник спецификации консорциума W3C, который сделан практически в виде учебника. Тем же, кто уверен, что в своей дальнейшей деятельности в такой степени с математикой не столкнется, могу повторить слова своего вузовского преподавателя по математическому анализу, которыми он заканчивал каждую лекцию: «Я надеюсь, вам было интересно».

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *