В XML DTD, разрешенные значения атрибутов могут быть определены как общие строки, или могут быть различными способами ограничены (перечислением возможных значений, или указанием определенного типа данных). Выбор типа атрибута XML влияет на объем, в котором могут быть проведены проверки корректности с использованием DTD.
MathML DTD определяет формальные типы атрибутов XML для всех атрибутов MathML, включая в некоторых случаях перечисления допустимых значений. В общем, тем не менее, MathML DTD является относительно нестрогим, часто определяя значения атрибутов как строки; это сделано для совместимости с парсерами SGML, которые допускают, чтобы несколько атрибутов одного элемента MathML принимали одинаковые значения (такие как true и false), и для того, чтобы позволить расширять список предопределенных значений.
В то же время, даже если значение атрибута может быть определено как строка в DTD, только определенные значения являются допустимыми в MathML, как описано выше и в оставшейся части этой спецификации. Например, многие атрибуты требуют числовых значений. В следующем разделе описаны допустимые значения атрибутов для каждого элемента. Тем не менее, недостаток жесткости требований в DTD не подразумевает, что эти требования не являются частью MathML, или что они не могут быть усилены конкретной программой отображения MathML.
Более того, MathML DTD предоставляется для удобства; хотя и подразумевается полная совместимость с текстом спецификации, текст должен быть определяющим в случае возникновения противоречий.
Для того чтобы облегчить использование таких стилевых механизмов, как XSLT и CSS2, все элементы MathML имеют атрибуты class, style, и id в дополнение к атрибутам, описанным для каждого элемента. Программы отображения MathML, не поддерживающие CSS, могут игнорировать эти атрибуты. MathML определяет значения этих атрибутов как общие строки, даже если стилевые механизмы имеют для них более строгий синтаксис. Поэтому, любое значение для них является допустимым в MathML.
Для того чтобы обеспечить совместимость с механизмами связывания, все элементы MathML имеют атрибут xlink: href.
Все элементы MathML также имеют атрибут xref для использования в параллельной разметке. id также используется в этом контексте.
Каждый эдемент MathML, как наследство от MathML 1.0, также принимает осужденный атрибут other, который предполагался для передачи нестандартных атрибутов без нарушения MathML DTD. От программ отображения MathML требуется обработка этого атрибута только в том случае, если они реагируютя на все нестандартные атрибуты MathML. Тем не менн, использование атрибута other сильно осуждается, так как в MathML существуют другие способы передать специфическую информацию.
MathML игнорирует пробельные символы, встречающиеся вне токенов. Непробельные символы здесь запрещены. Пробельные символы, встречающиеся в содержании токенов, удаляются на концах, то есть удаляются все пробельные символы в начале и конце содержания. Пробельные символы, расположенные внутри содержания элементов MathML свертываются кононически, то есть каждая последовательность из 1 или более таких символов заменяется на 1 (иногда называемый пустым символом).
В MathML, как и в XML, под пробельными символами подразумеваются простой пробел, табуляция, новая строка или перевод строки, то есть символы с кодами Unicode U+0020, U+0009, U+000A, U+000D соответственно.
Например,
<mo> (</mo> эквивалентно <mo> (</mo>, и
<mtext>
Теорема
1:
</mtext>
эквивалентно <mtext>Теорема 1: </mtext>.
Авторы, желающие поместить пробельные символы в начале или конце содержания токена, или последовательность более чем из одного пробельного символа так, чтобы они не были проигнорированы, должны использовать или другие неотображаемые пробельные символы. Например, сравните
<mtext>
Теорема
1:
</mtext>
с
<mtext>
Теорема 1:
</mtext>
Когда отображается первый пример, перед словом 'Теорема' нет пробельных символов, один - между 'Теорема' и '1: ', и нет после '1: '. Во втором примере одиночный пробел будет отображен перед словом 'Теорема', два - перед '1: ', и ни одного после '1: '.
Отметим, что атрибут xml: space в данной ситуации неприменим, так как процессоры XML передают пробельные символы в токенах процессору MathML; удаление происходит по правилам обработки MathML.
Для пробельных символов, встречающихся вне содержания токенов mi, mn, mo, ms, mtext, ci, cn и annotation, должен использоваться элемент mspace, в противоположность элементу mtext содержащий только пробельные символы
В качестве тестового примера для демонстрации возможностей браузеров была создана простая XHTML-страница, содержащая примеры обоих разметок. Опишем основные требования к ней. Во-первых, это должны быть корректным XHTML-документом, то есть:
быть корректным xml-документом;
корневым элементом должен быть элемент html в пространстве имен XHTML, например:
<htmlxmlns="http://www.w3.org/1999/xhtml">
должен содержать декларацию типа документа. В нашем случае это:
<! DOCTYPEhtmlPUBLIC "- // W3C // DTDXHTML1.1 plusMathML 2.0 // EN"
"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f. dtd">
MathML-фрагменты должны принадлежать пространству имен MathML, например:
<math xmlns="http://www.w3.org/1998/Math/MathML">... </math>
Тестовый пример, который используется ниже: test. xhtml.
Используемая версия: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv: 1.7 5) Gecko/20041107 Firefox/1.0.
Mozilla и построенный на том же ядре Firefox имеют встроенные возможности отображения разметки MathML. Правда, до сих пор они ограничены лишь поддержкой разметки представления. Так в нашем тестовом примере фрагмент разметки представления отобразился правильно, чего нельзя сказать о разметке содержания.
Решением этой проблемы может служить использование специальных XSLT-стилей "XSLT stylesheets for MathML". Такой подход возможен, так как поддержка XSLT-трансформаций встроена в браузер. Для этого надо скачать набор XSLT-стилей и в первой строчке нашей страницы указать ссылку на заглавный файл mathml. xsl:
<? xml-stylesheet type="text/xsl" href="mathml. xsl"? >
По соображениям безопасности Mozilla позволяет использовать XSLT-стили расположенные в другом домене просмотра исходного кода MathML с подсветкой выделенного фрагмента. Правда, при использовании разметки содержания и XSLT-стилей мы увидим не исходный код, а результат преобразования.
Из других возможностей следует отметить интеграцию с поисковыми системами. При выделенном фрагменте формулы контекстное меню позволяет отправить запрос к поисковой системе.
Но пока это задел на будущее, так как пока подобный поиск результатов не дает.
Используемая версия: 6.0.2800.1106 (SP1; Q867801; Q823353; Q833989)
Браузер от Microsoft не имеет встроенной поддержки MathML. Для корректного отображения математических формул можно использовать свободно распространяемый плагин MathPlayer.
Помимо собственно отображения математической разметки он позволяет быстро копировать MathML-нотацию. Также можно при желании увеличить формулу для лучшей наглядности:
Из недостатков следует отметить отсутствие возможности выделить или скопировать фрагмент математического выражения. Также нет возможности (как и в Mozilla) корректно скопировать формулу с окружающим текстом.
Используемая версия: 7.54u1 (Build 3918; Platform Win32; System Windows 2000; Java not installed).
Этот браузер на данном своего развития этапе не имеет возможностей для корректного отображения разметки MathML.
1. Дорофеев А.В., Федотов А.М. Электронные публикации в среде Internet и множественность кодировок русского языка // Вычислительные технологии, 1997, т.2, N 3, c.31-44.
2. Олейник О.В., Толкачева Е.М., Федотов А.М. Электронные издания и представление математических текстов на WWW // Вычислительные технологии, 1997, т.2, N 3, c.60-67.
3. Шокин Ю.И., Федотов А.М., Знаменский С.В. Электронные публикации и проблемы множественности кодировок русского языка // Информационные технологии и вычислительные системы, 1997, N 2, c.90-101.
4. Знаменский С.В. Стандартизация русского TeX: утопия или неизбежность // Вычислительные технологии, 1997, т.2, N 3, c.51 - 59.
5. Галактионов В.В. Расширяемый язык разметки XML (Extensible Mark-up Language): промышленный стандарт, определяющий архитектуру программных средств Интернет следующего поколения. Сообщение ОИЯИ, Р10-2000-44, Дубна, 2000.
6. Митюнин В.А. Обзор средств публикации и просмотра математических документов в сети Интернет - http://mathmag. spbu.ru/article/4/
7. Math on the Web: A Status Report - http://www.dessci.com/ webmath /status/
8. Including Math Notation in Web Pages - http://mathforum.org/typeseting/
9. MathML 1.01 - http://www.w3.org/TR/REC-MathML/
10. MathML 2.0 - http://www.w3.org/TR/MathML2/