MathML Mathematical Markup Language

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати


Зміст

1. MathML (Mathematical Markup Language)

1.2 Витоки та цілі

1.2.1 Історія MathML

1.2.2 Обмеженість HTML

1.2.3 Вимоги до математичної розмітці

1.2.4 Цілі проекту MathML

1.3 Роль MathML в Мережі

1.3.1 Існуючі мови математичної розмітки

1.3.2 Механізм розширення HTML

1.3.3 Механізм розширення браузера

1.4 Огляд MathML

1.4.1 Таксономія елементів MathML

1.4.2 Розмітка подання

1.4.3 Розмітка змісту

1.4.4 Об'єднання подання та змісту

1.5 MathML в документах

1.6 Приклади MathML

1.6.1 Приклади розмітки подання

1.6.2 Приклади розмітки змісту

1.6.3 Приклади змішаної розмітки

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

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

1.7.2 Приклад синтаксису XML

1.7.3 Дочірні елементи проти аргументів

1.7.4 Значення атрибутів MathML

1.7.4.1 Синтаксичні нотації, використовувані в специфікації MathML

1.7.4.2 Атрибути з одиницями вимірювання

1.7.4.3 CSS-сумісні атрибути

1.7.4.4 Значення атрибутів за умовчанням

1.7.4.5 Значення атрибутів у MathML DTD

1.7.5 Атрибути, загальні для всіх елементів MathML

1.7.6 Згортання прогалин у введенні

2. Можливості сучасних браузерів при роботі з MathML

2.1 Mozilla & Firefox

2.2 Microsoft Internet Explorer

2.3 Opera

Список використаної літератури

1. MathML (Mathematical Markup Language)

MathML (Mathematical Markup Language) представляє собою мову розмітки математичних додатків, заснований на XML. Він був розроблений Консорціумом WWW (W3C) і прийнятий в якості Рекомендації. Поточною версією є Mathematical Markup Language (MathML) Version 2.0 (Second Edition), затвердженого 21 жовтня 2003 року.

MathML реалізує дві "точки зору" на математичну розмітку. Один з її видів - це розмітка подання (Presentation Markup), яка описує візуальну форму представлення математичної формули. Другий - розмітка змісту (Content Markup), що виражає семантичний зміст.

MathML розглядає не тільки уявлення, а й сенс елементів формули. Також розробляється система розмітки математичної семантики, покликана доповнити MathML. Вона називається OpenMath.

1.1 Математика і її система позначень

Характерною рисою математичної інформації є використання складною і високорозвиненою двовимірної символьної системи позначень. Однак, як писав JR Pierce у своїй книзі з теорії комунікації, математика та її нотація не повинні розглядатися як одне і те ж. Математичні ідеї існують незалежно від способу їх подачі. Тим не менш, взаємозв'язок між значенням і позначенням дуже тонка, і в можливості представляти і маніпулювати ідеями в символьній формі криється значна міць математичного апарату, як інструменту опису та аналізу. Основні труднощі при впровадженні математики в World Wide Web полягає в тому, щоб зафіксувати як уявлення, так і зміст (тобто значення) таким чином, щоб у документах максимально використовувати високорозвинену систему математичної нотації і потенціал взаємодії в електронних засобах інформації.

Математична система позначень постійно розвивається, тому що люди постійно удосконалюють способи представлення ідей. Навіть стандартна система позначення арифметичних дій пройшла через дивовижне розмаїття стилів, включаючи безліч нині неіснуючих, що підтримують математичні позначення свого часу. Сучасна математична система позначень є продуктом вікових удосконалень, і прийняті позначення для високоякісного друку досить складні. Наприклад, змінні і букви, що позначають числа, зараз зазвичай друкуються спеціальним математичним курсивом трохи відмінним від звичайного текстового курсиву. Прогалини, що оточують символи операцій такі як +, -, × і /, трохи відрізняються від таких у тексті, відображаючи угоди про старшинство оператора. Цілі книги присвячені правилам набору математичних текстів, від вирівнювання верхніх і нижніх індексів до правил для вибору розмірів круглих дужок і спеціальних нотаціонних угод для різних галузей математики.

Прийнята система позначень в математиці, і в друкованому тексті взагалі, спрямована на те, щоб візуально виділити і зробити надруковані вираження більш легкими для читання та розуміння. Хоча це і здається очевидним, але ми покладаємося на сотні угод таких як параграфи, заголовні букви, сімейства шрифтів, і навіть механізм десяткової нумерації розділів, подібний до того, що ми використовуємо в цьому документі (заслуга G. Peano, який ймовірно більш відомий своїми аксіомами для натуральних чисел). Таким чином, нотаціонние угоди, напевно, навіть більш важливі для електронних медіа, де потрібно боротися з труднощами читання з екрану.

Однак, впровадження математики в Мережу це не просто пошук способів відображення математичної інформації у вікні браузера. Мережа являє фундаментально новий підхід до зберігання знань, в якому взаємозв'язок відіграє центральну роль. Стає все більш і більш важливо знайти способи взаємозв'язку математичних документів, які полегшать автоматичну обробку, індексацію і повторне використання в інших математичних програмах і контекстах. Подібні удосконалення в технології комунікації дозволяють розширити наші можливості у поданні та кодування математичного матеріалу. Ми сподіваємося, що MathML є важливим кроком у цьому напрямку.

1.2 Витоки та цілі

1.2.1 Історія MathML

Завдання подання математичної інформації для комп'ютерної обробки та електронних засобів комунікації виникла задовго до появи Інтернету. Раніше загальною практикою для вчених був запис статей у якомусь вигляді, заснованому на ASCII-символах і подальша пересилання їх один одному по електронній пошті. Кілька мов математичної розмітки, зокрема T E X, вже широко використовувалися в 1992 році, ще до того, як Мережа зайняла таке значуще становище.

З самого початку Мережа зарекомендувала себе, як дуже ефективний спосіб зробити інформацію доступною великій кількості людей. Однак, навіть при тому, що World Wide Web була спочатку задумана і реалізована вченими для вчених, можливості для включення математичних виразів в HTML були вкрай обмежені. В даний час, велика частина математичної інформації в Мережі представлена ​​у вигляді тексту з графічними зображеннями наукових виразів (у форматі GIF або JPEG) або у вигляді цілих документів у форматі PDF.

Консорціум World Wide Web (W3C) розумів, що відсутність основ для наукової комунікації є серйозною проблемою. Вже в 1994 році Dave Raggett вніс пропозицію про включення HTML Math в прототип HTML 3.0. На конференції в Дармштадті в квітні 1995 року був проведений круглий стіл з математичної розмітці. У листопаді того ж року представники Wolfram Research висунули пропозицію команді W3C про реалізацію підтримки математики в рамках HTML. Важливу роль в об'єднанні багатьох зацікавлених сторін зіграла проведена в травні 1996 року зустріч Digital Library Initiative в Champaign-Urbana. Результатом цієї зустрічі стало формування редакційного наглядової ради з HTML Math. Згодом ця робоча група розрослася, і в березні 1997 року була формально повторно сформована як перша W3C Math Working Group. Друга W3C Math Working Group була сформована в липні 1998 року.

Проект MathML відображає інтереси і думки різних груп фахівців. Багато чого в розвитку MathML заслуговує спеціальної згадки. Наприклад, це стосується питання загальнодоступності, де були особливо відчутні труднощі. У цьому напрямку багато роботи виконав TV Raman. Neil Soiffer і Bruce Smith з Wolfram Research поділилися своїм досвідом у вирішенні проблем подання математичного матеріалу, накопиченим при роботі над проектом Mathematica 3.0. Їх ідеї мали важливий вплив на структуру елементів подання. Paul Topping з Design Science також вніс свій внесок у математичне форматування та редагування. Багато користі витягнув MathML з партнерства з низкою членів робочих груп, пов'язаних з іншими роботами з кодування математичної інформації в SGML і в громадах комп'ютерної алгебри. из Stilo Technologies , Nico Poppelier из Elsevier Science St é phane Dalmas из INRIA ( Sophia Antipolis ), Stan Devitt из Waterloo Maple , Angel Diaz и Robert S . Sutor из IBM , и Stephen M . Watt из University of Western Ontario . У їх числі Stephen Buswell з Stilo Technologies, Nico Poppelier з Elsevier Science St é phane Dalmas з INRIA (Sophia Antipolis), Stan Devitt з Waterloo Maple, Angel Diaz і Robert S. Sutor з IBM, і Stephen M. Watt з University of Western Ontario. Також, на MathML вплинув проект OpenMath, робота робочої групи ISO 12083 і робота Stilo Technologies над фрагментом DTD для 'семантичної' математики. Американське математичне товариство відігравало ключову роль у розвитку MathML. Крім іншого, головами обох W3C Math Working Group стали представники цієї організації. З травня 1996 по березень 1997 року групу вів Ron Whitney. Patrick Ion був співголовою групи з березня 1997 по червень 1998 разом з Robert Miner з The Geometry Center, а з липня 1998 разом з Angel Diaz з IBM.

1.2.2 Обмеженість HTML

Попит на ефективні засоби обміну науковою інформацією залишається як і раніше високим. Все більше і більше дослідників, вчених, інженерів, вчителів, студентів, працюючи в різних місцях земної кулі, покладаються на електронні засоби комунікації. У теж час, методи поширення наукової нотації, засновані на графічному поданні, що переважають зараз в Мережі, примітивні і неадекватні. Якість документів залишає бажати кращого, створення - складно, а математична інформація, що міститься в картинках, не доступна для пошуку, індексації та повторного використання в інших додатках.

Існує дві основні проблеми з використанням HTML.

Проблема відображення. =10. Розглянемо рівняння 2 лютого x = 10. Розміри зображення підібрані так, щоб відповідати навколишнього тексту розміру 14 pt в системі, де воно було створено. Природно, що в інших системах або при іншому розмірі тексту рівняння буде виглядати не так, як задумував автор. Крім того, зображення з цим рівнянням створювалося в припущенні, що у документа буде білий фон. Таким чином, якщо читач або браузер встановить інший колір сторінки, то в результаті навколо тексту виникне білий "ореол".

Далі розглянемо рівняння

,

яке служить прикладом вирівнювання горизонтальної осі зображення по верху малих літер у навколишньому тексті. У цьому рівнянні присутній знаменник, і базисна лінія розташовується на відстані близько однієї третини від низу зображення. Це рівняння, наприклад, можна розмістити так:

,

тобто так, щоб горизонтальна вісь зображення і базисна лінія рівняння збігалися, але це призведе до проблем з міжстроковими інтервалами. У результаті цього текст стане важко читаються. Крім того, вертикальне вирівнювання по центру відрізняється в різних браузерах, роблячи неможливим гарантувати правильне розташування формул для різних користувачів.

Рівняння, оформлені у вигляді зображень, звичайно важче сприймати, ніж навколишнє текст. Більш того, ці проблеми тільки збільшуються, якщо документ надрукувати. Дозвіл зображень близько 70 точок на дюйм, тоді як навколишній текст зазвичай має 300, 600 або більше точок. Така різниця в якості неприйнятна для більшості людей.

Проблеми кодування. Спробуємо знайти в цьому документі фрагмент, наприклад, '= 10' першого рівняння вище. Або спробуємо скопіювати і вставити рівняння в іншу програму, більше того, спробуємо скопіювати і вставити тільки частина рівняння. При використанні методів, заснованих на графічному поданні, жодна з цих завдань не може бути вирішена. - документы должны предоставлять более продвинутый интерфейс между браузерами и математической информацией. І хоча використання атрибуту alt в документі може трохи допомогти, ясно, що інтерактивні web - документи повинні надавати більш просунутий інтерфейс між браузерами і математичної інформацією.

Інша проблема використання зображень для математичних об'єктів - необхідність високої пропускної спроможності каналу зв'язку. Представлення рівняння розміткою зазвичай менше за обсягом і краще стисливі в порівнянні з поданням у вигляді зображення. Крім того, при використанні розмітки для запису рівнянь велика частина роботи по відображенню перекладається на клієнтську машину.

1.2.3 Вимоги до математичної розмітці

Деякі проблеми, пов'язані з включенням математичних виразів в HTML-документ у вигляді зображень, можуть бути вирішені за допомогою поліпшення обробки останніх браузерами. Хоча, навіть якщо таке й станеться, залишиться проблема доступу до інформації, що міститься в математичних виразах з інших додатків. Тому, в майбутньому, поліпшення методів, заснованих на графічному поданні неперспективно. Для повної інтеграції математичного матеріалу в web-документ необхідно подання математичної нотації за допомогою мови розмітки.

При створенні будь-якої мови розмітки необхідно ретельно врахувати потреби його потенційних користувачів. У випадку з MathML область застосування простирається від сфери освіти до сфери досліджень і навіть бізнесу.

Сфера освіти є великою і важливою областю, в якій повинна бути забезпечена можливість розміщення в Мережі наукових матеріалів для занять. -документов. У той же час, викладачі обмежені в часі і обладнанні, і зазвичай зупиняються перед складністю створення технічних web-документів. Студенти і викладачі повинні мати можливість швидко і легко створювати математичні документи, використовуючи інтуїтивно зрозумілі, легкі для вивчення і "дешеві" інструменти.

Електронні підручники - інший спосіб використання Мережі, який потенційно дуже важливий для освіти. Відомий фахівець з управління Peter Drucker прогнозував кінець епохи побудови системи вищої освіти навколо великих університетських містечок і початок її розповсюдження через Мережу. Електронні підручники мають бути більш інтерактивними і дозволяти пов'язувати текст з науковим програмним забезпеченням.

Академічні та комерційні дослідницькі групи постійно випускають велику кількість наукового матеріалу. Все більше і більше наукових публікацій розміщується в базах даних, таких як досить відомий архів препринтів з фізики і математики Національної Лабораторії у Лос-Аламосі (Los Alamos). Особливо це відноситься до деяких областях фізики і математики, де ціни на академічні журнали вельми високі. До того ж, бази даних з інформацією про математичних дослідженнях, такі як Mathematical Reviews і Zentralblatt f ür Mathematik, пропонують величезну кількість посилань на що містяться в Мережі математичні документи.

Для відповідності вимогам дослідницького співтовариства, мова математичної розмітки має спростити обслуговування і роботу з великими обсягами документів, де вкрай важливі автоматичний пошук і індексація. З-за великої кількості вже існуючих математичних документів, особливо у форматі T E X, також важливо мати можливість конвертації між існуючими форматами і будь-яким новим. І нарешті, для наукових досліджень життєво необхідна можливість зберігати інформацію в архівах.

Багато вчених і інженери використовують у своїй роботі технічні документи для обміну та запису результатів експериментів, а також для комп'ютерного моделювання та перевірки проведених обчислень. Для такого роду використання методи розміщення математичної інформації в Мережі повинні надавати стандартний спосіб спільного її використання так, щоб можна було легко її прочитати, обробити і створювати з використанням доступних і простих інструментів.

Інша загальна вимога полягає в можливості відображення математичного матеріалу в інших інформаційних середовищах, таких як мова або шрифт Брайля, які є вкрай важливими для людей з порушенням зору.

Комерційні видавництва також зацікавлені в просуванні методів представлення математичної інформації в Мережі в різному вигляді від електронних версій звичайних книг до інтерактивних підручників і академічних журналів. Видавництвам потрібно такий спосіб розміщення математичних документів у Мережі, який би мав можливість для високоякісного виводу, був застосований для великомасштабного комерційного використання і, по можливості, сумісний зі старими системами, зокрема, на основі SGML.

1.2.4 Цілі проекту MathML

Для відповідності різним вимогам наукового співтовариства MathML розроблявся з урахуванням таких умов.

MathML повинен:

Представляти математичний матеріал так, щоб він підходив для навчання та наукової комунікації будь-якого типу.

Представляти як математичну нотацію, так і математичний зміст.

Забезпечувати можливість перетворення між ним та іншими математичним форматами, як презентаційними, так і семантичними. Формати виводу повинні включати:

графічне відображення

синтезатори мови

формати систем комп'ютерної алгебри

формати інших мов, таких як T E X

відображення у вигляді простого тексту, наприклад, емулятори VT100

пристрої для друку, включаючи працюючі зі шрифтом Брайля

Зрозуміло, що такі перетворення можуть привести до деякої втрати інформації.

Мати можливість включення інформації, необхідної для певних засобів відображення і інших додатків.

Підтримувати коректний перегляд довгих виразів.

Забезпечувати розширюваність.

Підтримувати шаблони та інші засоби редагування математичної інформації.

Бути зрозумілим людині і простим для програмної обробки.

У незалежності від того, наскільки вдалий MathML як мова розмітки, він буде корисний тільки у випадку грамотного його застосування. W3C Math Working Group визначила короткий список додаткових цілей його реалізації. У ньому коротко описана мінімальна функціональність, яку повинні забезпечувати програми відображення і обробки MathML.

Вирази MathML всередині сторінок HTML (і XHTML) повинні коректно відображатися в найбільш поширених браузерах відповідно до настанов читача і автора, при цьому повинне забезпечуватися якість, максимально досяжний на даній платформі.

Документи HTML (і XHTML), що містять висловлювання MathML, повинні коректно виводитися на друк з високою роздільною здатністю.

Вирази MathML, включені до web-сторінки, повинні реагувати на дії користувача, такі як робота з мишею, і здійснювати взаємодію з іншими додатками через браузер.

Редактори і конвертери математичних виразів повинні розроблятися з урахуванням можливості створювати web-сторінки, що містять висловлювання MathML.

Найближчим часом для вирішення проблеми відображення планується використовувати вбудовані елементи, такі як Java-аплети, плагіни і елементи управління ActiveX. Проте обсяг, в якому буде це реалізовано, залежить від співпраці і підтримки виробників браузерів та іншого програмного забезпечення. W3C Math Working Group продовжує роботу з робочими групами по Document Object Model (DOM) і Extensible Style Language (XSL), щоб гарантувати, що потреби наукового співтовариства будуть задоволені в майбутньому. Ясно, що MathML 2.0 є значним кроком вперед у порівнянні з MathML 1.0 Recommendation (Квітень 1998).

1.3 Роль MathML в Мережі

Цілі розробки MathML вимагають гнучкою і розширюваної системи запису математичного матеріалу, що дозволяє взаємодіяти із зовнішніми програмами та здійснювати високоякісне відображення в різних інформаційних середовищах. Але будь-яку мову розмітки, що задовольняє всім цим вимогам, досить складний.

-страницы. У той же час, для багатьох груп користувачів, наприклад, студентів, важливо мати простий шлях для включення математичних виразів у web-сторінки. -страницы разметки при помощи языка, подобного T E X. Аналогічно, для інших груп, наприклад, для користувачів системи T E X, кращим рішенням була б система, що дозволяє безпосереднє включення в web-сторінки розмітки за допомогою мови, подібного T E X. Загалом, різним групам користувачів потрібні різні форми введення і виведення інформації, найбільш відповідні їхнім потребам. Отже, в ідеалі система для розміщення математичних документів у Мережі повинна надавати як спеціалізовані сервіси для введення і виведення, так і загальні сервіси для обміну інформацією та відображення в різних інформаційних середовищах.

На практиці, огляд того, що повинен забезпечувати математичний стандарт в мережі для спеціалізованих і загальних потреб, призводить до ідеї багаторівневої архітектури. Перший рівень включає стандартні потужні засоби обміну, обробки і відображення математичних даних. Другий рівень включає спеціалізовані інструменти, призначені для конкретних груп користувачів, за допомогою яких можна легко кодувати математичну інформацію для її поширення серед обмеженого кола користувачів.

MathML створений для розмітки математичної інформації на нижньому більш загальному рівнем дворівневої архітектури. Це передбачає розмітку складної нотаціонной та семантичної структури у строгій, регулярної формі, простий для обробки засобами відображення, пошуку і індексації, а також іншими математичними додатками.

Внаслідок цього, розмітка MathML не передбачає безпосереднього використання авторами. MathML зрозумілий для людини, що сильно допомагає при налагодженні, але у всіх випадках, за винятком найпростіших, він занадто складний для ручного кодування. Натомість автори повинні будуть використовувати спеціальні редактори формул, конвертори та інші спеціалізовані програмні засоби для створення документів MathML. В якості альтернативи, деякі програми відображення та системи підтримки математичних документів можуть перетворювати інші вхідні формати в MathML "на льоту".

У певному сенсі MathML аналогічний іншим низькорівневим комунікативним форматам, таким як мова PostScript, розроблений Adobe. Ви можете створювати PostScript-файли різними способами, в залежності від ваших потреб: експерти створюють і правлять їх вручну, автори створюють їх за допомогою текстових процесорів, дизайнери - програмами-ілюстраторами і так далі. Якщо у вас є PostScript-файл, ви можете поширити його серед дуже великої аудиторії, так як пристрої відображення PostScript, такі як принтери і програми для перегляду на екрані, широко доступні.

Однією з причин розробки MathML як мови розмітки загального комунікативного рівня є стимулювання розробки математичного програмного забезпечення Мережі верхнього рівня. MathML представляє спосіб координування зусиль розробників модулів програм для створення і відображення математичного матеріалу. Спрощуючи розробку функціональних частин великої системи, MathML може стимулювати розробку програм, які будуть дуже корисні потенційним користувачам.

Автори можуть створювати MathML-документи, використовуючи інструменти, краще підходять для їхніх потреб. Студенти можуть віддавати перевагу візуальні редактори формул, з можливістю зберігати блоки розмітки MathML в XHTML-файлі. -страницы и обработать. Дослідники можуть використовувати пакунки комп'ютерної алгебри, автоматично кодують математичну інформацію так, щоб колеги могли її взяти з web-сторінки і обробити. Видавці академічних журналів можуть використовувати програму, яка конвертує розмітку T E X в HTML і MathML. Незалежно від способу створення web-сторінки, яка містить MathML, стають доступні всі переваги загального комунікативного шару. Різні програми, що працюють з MathML, можуть бути використані для одного і того ж документа, щоб вивести його в систему відтворення мови і на друк, а також для введення в систему комп'ютерної алгебри і для управління ним як частиною великого архіву web-документів. Для високоякісного друку математичних документів у форматі MathML часто проводиться зворотна конвертація в стандартні системи верстки, включаючи T E X, який спеціально створений для цих цілей. Нарешті, можна очікувати, що в кінцевому рахунку MathML буде інтегрований в інші області, де зустрічаються математичні формули, такі як електронні таблиці, пакети статистичної обробки даних і засоби інженерної розробки.

W3C Math Working Group співпрацює з різними софтверними компаніями для гарантії того, що скоро з'являться різні програми для роботи з MathML, включаючи як засобу створення документів, так і їх відображення. Поточний список програм, що працюють з MathML розташований на сторінці Math World Wide Web Consortium.

Початкова концепція HTML Math полягала в тому, щоб просто розширити набір тегів HTML і таким чином забезпечити безпосередню інтерпретацію в браузері. Однак ще до цього лавиноподібне зростання мережі зробив зрозумілим, що потрібно глобальний механізм розширень, а математична інформація є тільки одним з типів структурованих даних, які можуть бути інтегровані в Мережу за допомогою такого механізму.

-средой. За умови, що MathML має інтегруватися в Мережу як розширення, дуже важливо, щоб MathML і використовують його програми могли добре взаємодіяти з існуючою web-середовищем. Зокрема, MathML повинен розроблятися з урахуванням трьох типів взаємодії. По-перше, для створення математичного контенту важливо, щоб існуючі мови математичної розмітки могли бути перетворені в MathML, і щоб в існуючі редактори була додана можливість створення документів MathML. -приложений, которые сейчас работают с HTML. По-друге, повинно забезпечуватися можливість вставляти розмітку MathML в розмітку HTML, як її доповнення, в цьому випадку, в майбутньому, вона буде доступна для браузерів, пошукових систем і всіх типів web-додатків, які зараз працюють з HTML. І, нарешті, повинна забезпечуватися можливість відображення MathML, вбудованого в HTML, сучасними браузерами, навіть якщо результат буде далекий від ідеалу. З переходом від HTML до XHTML всі перераховані вище вимоги стануть ще більш необхідними.

World Wide Web повністю інтернаціональний. Математика - мова, що використовується у всьому світі. Математична нотація в науці і техніці тісно пов'язана з національними мовами. W3C прагне бути конструктивною силою у поширенні комунікативних можливостей у світі. Тому розробники MathML зіткнулися з проблемою інтернаціоналізації. Невідомо про несумісність цієї версії MathML з мовами з написанням зліва направо. Запис зліва направо є стандартною в MathML 2, і зрозуміло, що потреба в запису математичних формул в текстах на деяких національних мовах ще не виникала. Так звана "двунаправленная технологія" тільки розробляється, і краща підтримка формул в цьому контексті - завдання майбутніх розробок.

1.3.1 Існуючі мови математичної розмітки

Можливо, найбільш значущий вплив на мови математичної розмітки останніх двох десятиліть зробила система верстки T E X, розроблена Дональдом Кнутом (Donald Knuth). T E X є стандартом de facto в математичному співтоваристві, і взагалі широко поширений серед учених. T E X встановлює стандарт якості для візуалізації документів, і багато зусиль було докладено, щоб MathML міг забезпечити таку ж якість. Більше того, так як існує безліч документів у форматі T E X, і багато людей, які працюють з нею, основною при створенні MathML була можливість конвертації документів з формату T E X у формат MathML. Можливість такої конвертації була продемонстрована експериментальними програмами.

Велика робота з кодування математичного матеріалу була також виконана в співтоваристві SGML, і засновані на SGML схеми кодування широко використовуються комерційними видавцями. ISO 12083 - важлива мова розмітки, що містить фрагмент DTD спочатку призначений для опису візуального представлення математичної нотації. Так як математична нотація ISO 12083 та її похідні мають багато спільного з T E X, і так як SGML більш регулярний і структурований, ніж T E X, багато чого з того, що зроблено для сумісності MathML з T E X, також добре застосувати до ISO 12083.

MathML також приділяє велику увагу сумісності з іншими математичними програмами і, зокрема, з системами комп'ютерної алгебри. Багато елементів подання MathML частково засновані на механізмі друкованих боксів (typesetting boxes). Елементи змісту MathML багато в чому запозичені з проекту OpenMath і роботи Stilo Technologies зі створення математичного DTD. Проект OpenMath був тісно пов'язаний з спільнотами SGML та комп'ютерної алгебри. У цьому проекті були запропоновані SGML і XML-засновані способи взаємодії між пакетами математичних програм. Можливість створення та інтерпретації MathML в системах комп'ютерної алгебри була продемонстрована експериментальними програмами.

1.3.2 Механізм розширення HTML

Як зазначено вище, успіх HTML привів до спроб інтеграції в Мережу різних типів даних та програм. Кожен новий формат або додаток потенційно накладав нові вимоги на HTML і виробників браузерів. Через деякий час стало зрозуміло, що необхідний загальний механізм для інтеграції нових розширень в HTML. Спочатку, робоча група почала роботу з ідеєю про простому розширенні HTML в дусі перших спроб реалізації підтримки математики в HTML 3.2 Але при найближчому розгляді, це виявилося не такою вже й гарною ідеєю. До моменту початку робіт над MathML, XML став домінуючим механізмом загальних розширень.

расшифровывается как eXtensible Markup Language . XML розшифровується як eXtensible Markup Language. Він створений як спрощена версія SGML, метамови, використовуваного для визначення граматики та синтаксису HTML. Одна з цілей XML - можливість застосування в Мережі, і в даному випадку він може бути розглянуто як загальний механізм розширень HTML. Як випливає з його назви, розширюваність - основна риса XML. Автори отримали можливість оголошувати і використовувати нові елементи й атрибути. У той же час, правила граматики та синтаксису XML вимагають забезпечення регулярної структури документа для реалізації автоматичної обробки та супроводу великих об'ємів документів. Строго кажучи, XML є зручним способом опису деревовидних структур і, таким чином, може використовуватися в якості мови розмітки.

До моменту утворення першого W3C Math Working Group XML вже мав широку підтримку серед фірм-розробників, включаючи основних виробників браузерів. Глобальний перехід від HTML до XML важливий для W3C. Проміжним результатом роботи в цьому напрямку стала поява рекомендації XHTML, яка визначає нову модульну форму HTML. MathML може розглядатися як один з модулів, який дуже добре відповідає нового формату XHTML.

Крім того, інші XML-додатки для всіх видів публікації та обробки документів обіцяють стати все більш і більш поширеними. Отже, як з теоретичної так і з практичної точки зору, було б логічно визначити MathML як XML-додаток.

1.3.3 Механізм розширення браузера

До теперішнього часу деталі загальної моделі для відображення та обробки XML-розширень в HTML в основному ясні, на відміну від ситуації, коли була прийнята MathML 1.0 Recommendation. Передбачається, що властивості форматування (Formatting Properties), розроблені Cascading Style Sheets і Formatting Properties Working Group для CSS і доступні через Document Object Model (DOM), будуть застосовуватися для елементів MathML, щоб отримати стилістичний контроль над поданням MathML. Подальша розробка властивостей форматування проводиться всередині робочих груп CSS & FP і XSL.

На даний момент механізми таблиць стилів не здатні забезпечити безпосереднє відображення MathML браузером, тому необхідно розширити можливості браузерів, використовуючи вбудовані об'єкти (embedded elements) для відображення MathML. Вже можливо використовувати в браузері вбудований обмежений механізм відображення для обробки вбудованої XML-розмітки, такий як MathML, і забезпечувати взаємодію її з навколишнім web-сторінкою, проте, результати поки не повністю відповідають побажанням.

Для спеціалізованої обробки, такий як зв'язок з системами комп'ютерної алгебри, можливість зовнішнього виклику інших програм залишиться особливо необхідною. Для того щоб складну взаємодію між браузерами і вбудованими об'єктами було задовільним, необхідно визначити досить багату об'єктну модель документа. За цієї тесно причини W3C Math Working Group тісно співпрацює з Document Object Model (DOM) Working Group.

Для обробки вбудованих елементів і для багатостороннього зв'язку між науковим програмним забезпеченням модель таблиць стилів в деяких випадках далека від ідеалу. Це може накласти додаткові складності реалізації в системі, коли можна отримати деякі переваги, і це накладає вимоги до реалізації взаємодії між браузерами і вбудованими механізмами відображення, що, ймовірно, буде недоступне в найближчому майбутньому.

З цих причин специфікація MathML визначає атрибут-орієнтовану модель, яка показала себе в кількох незалежних додатках, як дуже ефективна для високоякісного відображення складних математичних виразів. Атрибути подання MathML, де це можливо, використовують властивості форматування W3C. Також, елементи MathML допускають атрибути class, style і id для забезпечення сумісності з традиційними таблицями стилів CSS. Однак, в даний час, є трохи реалізацій, де технологія CSS використовується при відображенні MathML.

Використання механізму стильових таблиць CSS вже згадувалося вище. Механізми XSL також нещодавно стали доступні для перетворення XML-документів у формат відображення. Дійсно, альтернативні варіанти цієї рекомендації, включаючи визначальну HTML-версію, були отримані з XML-джерела, використовуючи засоби мови трансформацій XSL. Оскільки розробки в цьому напрямі доступні для MathML, очікується, що їх використання стане домінуючим методом стилістичного контролю поданням MathML, який пропонується для використання в відображають середовищах, які підтримують ці механізми.

1.4 Огляд MathML

Головною проблемою створення математичної мови розмітки для застосування в Мережі є необхідність задавати одночасно подання математичної нотації і зміст експонованих математичних ідеї або об'єкта.

Ставлення математичної нотації і математичної ідеї - тонка річ. Формально, математична логіка піднімає питання про відповідність між системами символьної логіки і явищами, які вони моделюють. На інтуїтивному рівні, кожен, хто використовував математичну нотацію, знає як важливий правильний вибір нотації; символічна структура нотації пропонує структуру логічну. Наприклад, нотація Лейбніца для похідних пропонує ланцюг правил обчислення через символічні дробу.

Математики і вчителі дуже добре інтуїтивно відчувають це, частина їх роботи якраз і полягає у виборі нотації, яка підкреслює ключові аспекти проблеми і приховує або зменшує несуттєві. У математиці дуже часто пишуть що-небудь, хоча суворе значення цього є зовсім іншим, тому що досвід показує, що це значно краще передає ідею на високому рівні, чим строгі деталі.

В інших випадках, математична нотація використовується для запису повного, точного значення властивостей математичного об'єкта. Математична нотація може бути приголомшливо суворої і при акуратному використанні повністю вільною від неоднозначності. Більш того, це відсутність неоднозначності робить можливим описати математичні об'єкти так, що вони можуть бути використані в комп'ютерних програмах, таких як системи комп'ютерної алгебри та системи відтворення мови. У ситуації, коли головним є взаємодія між додатками, деталі візуального представлення грають мінімальну роль.

MathML дозволяє авторам записувати як нотацію, що представляє математичний об'єкт, і саму математичну структуру об'єкта. Більше того, автори можуть змішувати обидва типи запису для визначення подання та змісту математичної ідеї. Частина, що залишилася цього розділу дає основне уявлення про те, як MathML може бути використаний для кожної з цих цілей.

1.4.1 Таксономія елементів MathML

Всі елементи MathML діляться на три групи: елементи уявлення, елементи змісту та інтерфейсні елементи.

Елементи подання описують візуально орієнтовану двомірну структуру математичної нотації. Типовим прикладом є елемент mrow, який зазвичай застосовується для позначення горизонтального ряду частин висловлювання, і елемент msup, який відзначає верхній індекс. Як правило, кожен елемент подання відповідає одному типу нотаціонной схеми, такий як ряд, верхній індекс, нижній індекс і так далі. Будь-яка формула складається з частин, які можуть складатися з найпростіших елементів таких як цифри, букви або інші символи.

Хоча попередній абзац пов'язаний з аспектом відображення математичної нотації, і, отже, розміткою подання, ті ж самі міркування про декомпозиції застосовні до абстрактних математичних об'єктів, а значить і розмітці змісту. Наприклад, в контексті розмітки змісту верхній індекс зазвичай позначає операцію потенціювання, що вимагає двох операндів: 'підстави' і 'показника'. Це ніяким чином не є збігом, оскільки зазвичай математична нотація тісно пов'язана з логічною структурою розглянутих математичних об'єктів.

Рекурсивна природа математичних об'єктів і нотації відображена в розмітці MathML. Більшість елементів подання та змісту містять в собі інші елементи MathML, що відповідають за частини, з яких рекурсивно побудований вихідний об'єкт. Первісна схема зазвичай називається батьківської, а частини - дочірніми. Загалом, вираження MathML можна представити у вигляді дерев, де кожен вузол відповідає елементу MathML, гілку під 'батьківським' вузлом відповідає 'дочірнім' вузлам, і листя дерева відповідають атомарним елементам нотації або змісту, таким як числа, символи і т.д.

Більшість елементів-листя в дереві вираження MathML або канонічні порожні елементи без тіла, або токени. Канонічні порожні елементи відображають символи в MathML, наприклад, це робить елемент змісту <plus/>. Токени - єдині елементи MathML, які можуть містити текстові дані. Текстові дані в MathML містять символи Unicode і спеціальні символьні конструкції, зроблені за допомогою елемента mglyph. Третім типом елементів-листя в MathML є коментарі, які використовуються для зберігання даних, формат яких відмінний від формату MathML.

Найбільш важливими токенами подання є mi, mn і mo, використовувані для представлення ідентифікаторів, чисел і операторів відповідно. Зазвичай ці елементи відображаються різними стилями: числа - прямим шрифтом, ідентифікатори - похилим, навколо операторів залишається додатковий вільний простір. У розмітці змісту міститься тільки три токена, ci, cn і csymbol, для ідентифікаторів, чисел і нових введених в документ символів відповідно. У розмітці змісту існують різні елементи для часто використовуваних функцій і операторів. Елемент apply застосовується для користувальницького розширення стандартного набору.

У термінах розмітки, більшість елементів MathML визначаються відкриває і закриває тегами, які обмежують вміст елемента. У разі токенів вміст є текстовими даними, в більшості інших випадків - розміткою дочірніх елементів. Елементи третьої категорії, звані канонічними порожніми елементами, що не потребують ніякого змісту і визначаються одиночним тегом виду <name/>. Прикладом може служити елемент <plus/> в розмітці змісту.

Давайте візьмемо для прикладу вираз (a + b) 2 і розглянемо на практиці описані вище принципи. Одним з варіантів розмітки подання для цього виразу буде такою:

<mrow>

<msup>

<mfenced>

<mrow>

<mi> a </ mi>

<mo> + </ mo>

<mi> b </ mi>

</ Mrow>

</ Mfenced>

<mn> 2 </ mn>

</ Msup>

</ Mrow>

Цей приклад демонструє використання різних елементів подання. Перший елемент, дуже широко використовуваний, це елемент mrow. Він використовується для позначення ряду даних з вирівнюванням по горизонталі. Дані, що містяться між тегами <mrow> і </ mrow> розглядаються як аргумент елемента mrow. Таким чином, в елементі mrow міститься цілий вираз. Як було відмічено раніше, більшість математичних виразів складаються з подвираженія. Ці подвираженія, у свою чергу, також містяться в елементі mrow. Наприклад, a + b також міститься в mrow.

Елемент mfenced використовується для обмеження формул різними типами дужок. За замовчуванням використовуються круглі дужки.

Зверніть увагу на використання елемента mi для відображення змінних a і b та елементу mo для виділення оператора +.

Елемент msup застосовується у виразах з верхніми індексами і має два аргументи: підстава (в нашому випадку (a + b)) і показник (у нашому випадку 2).

Розмітка утримання для того ж прикладу буде мати вигляд:

<mrow>

<apply>

<power/>

<apply>

<plus/>

<ci> a </ ci>

<ci> b </ ci>

</ Apply>

<cn> 2 </ cn>

</ Apply>

</ Mrow>

Елемент apply позначає застосування операції до вираження. У нашому прикладі застосовуються пустий елемент power (для зведення в ступінь) і аналогічний елемент plus (для додавання). Зверніть увагу, що обидва оператори мають два аргументи. Але якщо у разі зведення в ступінь їх порядок важливий лише частково, то у випадку застосування apply він має ключове значення, так як перший дочірній елемент є оператором, приймаючим інші в якості аргументу.

Зверніть увагу на використання елемента ci для виділення змінних a і b, і елемента cn для виділення числа 2.

1.4.2 Розмітка подання

Розмітка подання MathML складається з приблизно 30 елементів, які мають більше 50 атрибутів. Більшість елементів являють собою схеми форматування, які містять в собі інші елементи уявлення. Кожна схема відповідає двовимірному фрагменту нотації, такому як верхній або нижній індекс, дріб або таблиця. Крім того, у розмітці подання є описані вище токени mi, mo і mn і кілька інших, які використовуються не так часто. Кілька елементів, що залишилися уявлення - це порожні елементи, пов'язані, в основному, з вирівнюванням.

Всі схеми форматування діляться на декілька класів. Одна група елементів відповідає за індекси і містить такі елементи, як msub munder, і mmultiscripts. Інша відповідає за більш загальне форматування і включає елементи mrow, mstyle і mfrac. Третя група реалізує роботу з таблицями. Елемент maction утворює ще одну категорію і дозволяє кодувати різні типи дій над нотацією, що зустрічаються у виразах, які toggles between two pieces of notation.

Схеми форматування володіють важливою властивістю: важливий порядок їх дочірніх елементів. Наприклад, перший дочірній елемент схеми mfrac є чисельником дробу, а другий - знаменником. Оскільки порядок дочірніх елементів не задається на рівні XML за допомогою MathML DTD, інформація про порядок доступна тільки препроцесора MathML, на відміну від загального препроцесора XML. Коли ми хочемо підкреслити, що елементи MathML, такі як mfrac, вимагають вказівки дочірніх елементів у певному порядку, ми розглядаємо їх як аргументи, а mfrac - як 'конструктор' нотації.

1.4.3 Розмітка змісту

Розмітка змісту містить близько 120 елементів, що приймають близько дюжини атрибутів. Більшість цих елементів - порожні, відповідні різним математичним операторам, залежностям і функцій. Як приклад можна навести partialdiff, leq і tan. Інші, такі як matrix і set, використовуються для представлення різних типів математичних даних. Третя важлива категорія елементів розмітки змісту, така як apply, використовується для застосування до виразів операцій та створення нових математичних об'єктів.

Можливо, одним з найбільш важливих елементів змісту є apply. Він використовується для застосування функції або операції до набору аргументів. Тут також важливо положення дочірніх елементів: перший дочірній елемент вказує застосовувану функцію, решта - аргументи у відповідному порядку. Треба відзначити, що конструкція apply завжди використовує префіксной нотацію, як мова програмування LISP. Зокрема, навіть бінарні оператори, такі як віднімання, описуються застосуванням префіксного оператора вирахування до двох аргументів. - b будет описано так: Наприклад, a - b буде описано так:

> <Mrow>

> <Apply>

/> <Minus />

> a </ ci > <Ci> a </ ci>

<ci> b </ ci>

</ Apply>

</ Mrow>

Багато функцій і операції, для того щоб чітко визначеними, вимагають одного або кількох кванторів. Наприклад, крім підінтегральна вираження у певного інтеграла повинні бути задані межі інтегрування і мінлива, за якою відбувається інтегрування. З цієї причини існує кілька схем-специфікатором начебто bvar і lowlimit. Вони використовуються з операторами diff і int.

Конструкція declare особливо важлива для розмітки змісту, яка може оброблятися системами комп'ютерної алгебри. Елемент declare реалізує основний механізм привласнення, коли може бути оголошена змінна певного типу з певним значенням.

І в прикладах розмітки подання, і в прикладах розмітки змісту математичні вирази рекурсивно розкладаються на вкладені, більш прості елементи MathML, визначають стадію декомпозиції. У наступному розділі це проілюстровано на більш складних прикладах.

1.4.4 Об'єднання подання та змісту

Для різних типів завдань різні типи розмітки можуть бути найбільш підходящими. Документи, створені до широкого розповсюдження Мережі, дуже часто призначені тільки для візуального обміну інформацією і найкращим чином перетворюються в чисту розмітку уявлення, так як семантична інформація, яку мав на увазі автор, може бути відновлена ​​тільки евристично. Навпаки, деякі математичні програми та засоби навчання засновані на утриманні. Більшість же додатків перебувають посередині між цими крайнощами. Для них найбільш підходящим варіантом є об'єднання розмітки подання та змісту.

Правила об'єднання розмітки подання та змісту слідують із загального принципу, що змішана розмітка може бути тільки в тих місцях, де вона дійсно необхідна. Для розмітки змісту, вбудованої в розмітку вистави, це означає, що будь-які фрагменти змісту повинні бути семантично значущими і не вимагати додаткових аргументів чи кванторів для того, щоб бути чітко визначеними. Для розмітки подання, вбудованої в розмітку змісту, це означає, що розмітка подання повинна міститися в токені розмітки змісту як неподільний елемент, що використовується в якості імені змінної або функції.

Інший спосіб полягає у використанні елемента semantics. Він використовується для зв'язування виразів MathML і різних типів приміток. Найчастіше елемент semantics використовується для того, щоб приєднати фрагмент розмітки змісту до розмітки уявлення як семантичне примітка. Таким чином, автор може визначити нестандартну нотацію, яка буде використовуватися при відображенні конкретного вираження. Іншим застосуванням елемента semantics є включення інших семантичних специфікацій, таких як OpenMath вираження, у вирази MathML. У цьому випадку, елемент semantics може бути використаний для розширення розмітки змісту MathML.

1.5 MathML в документах

Все вищесказане відноситься до окремих формулами поза контекстом документа. Давайте детально розглянемо приклад, відповідний приклад "Hello, World!", Разбираемому при вивченні мов програмування. Ми представимо повний код документа XHTML 1.0, що містить розглянутий вище квадрат суми двох змінних:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml: lang="en">

<head>

<title> MathML's Hello Square </ title>

</ Head>

<body>

<p> This is a perfect square: </ p>

<math xmlns="http://www.w3.org/1998/Math/MathML">

<mrow>

<msup>

<mfenced>

<mrow>

<mi> a </ mi>

<mo> + </ mo>

<mi> b </ mi>

</ Mrow>

</ Mfenced>

<mn> 2 </ mn>

</ Msup>

</ Mrow>

</ Math>

</ Body>

</ Html>

Це стандартна структура документа XHTML. Він починається відкриває тегом <html>, що містить декларацію простору імен XML і оголошення мови. Елемент head как містить, як заголовок . Открывающий зазвичай, заголовок. Відкриваючий тег Затем идет обычный параграф. <body> beginning also has a namespace declaration of an abbreviative prefix letter m to be used for the standard MathML namespace. Потім йде звичайний параграф. І, нарешті, йде елемент math, який також має декларацію простору імен. Усередині елемента math знаходиться розмітка MathML.

1.6 Приклади MathML

Далі ми будемо наводити приклади у формі фрагментів розмітки MathML, які в реальному документі розташовані в елементі math.

1.6.1 Приклади розмітки подання

Нотація: x 2 + 4 x + 4 = 0.

Розмітка:

> <Mrow>

> <Mrow>

> <Msup>

> x </ mi > <Mi> x </ mi>

<mn> 2 </ mn>

</ Msup>

<mo> + </ mo>

<mrow>

<mn> 4 </ mn>

<mo> & InvisibleTimes; </ mo>

<mi> x </ mi>

</ Mrow>

<mo> + </ mo>

<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 такого символу не використовується. Ми можемо використовувати очікувану цифрову посилання ࠎ але для зрозумілості будемо продовжувати використовувати в прикладах елемент 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 Приклади розмітки змісту

Нотація: x 2 + 4 x + 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 Приклади змішаної розмітки

Нотація:

Розмітка:

<mrow>

<semantics>

<mrow>

<msubsup>

<mo> ∫ </ 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 застосовується для завдання нижніх і верхніх індексів у вираженні, у даному випадку - меж інтегрування у визначеному інтегралі. Також для опису символів інтеграла і диференціала використовуються сутності і &dd;.

Елемент semantics містить в якості першого дочірнього елемента коментований вираз, а в якості другого - сам коментар. На тип нотації, що задається елементом semantics, обмежень не існує. Наприклад, можна задавати розмітку T E X або комп'ютерної алгебри в якості примітки. Тип анотації задається атрибутом 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> ∫ </ 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) d x'. За допомогою коментарю MathML-Presentation можна задати відображення у вигляді 'd x / 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 не можна вказати, що перший дочірній елемент повинен оброблятися інакше, ніж інші.

1.7.2 Приклад синтаксису XML

Так як MathML заснований на XML, специфікація MathML використовує термінологію XML. Дані XML складаються із символів Unicodes (які включають в себе звичайні ASCII-символи), посилання на сутності (неформально звані сутностями), такі як <, які зазвичай представляють розширені символи, і елементи, такі як <mi fontstyle="normal"> x </ mi>.

Елементи часто містять в собі інші XML-дані, звані їх 'вмістом' або 'тілом', між 'відкриває' і 'закриває' тегами, також як в HTML. Існують також 'порожні елементи ", такі як <plus/>, у яких відкриває тег закінчується символом />, щоб показати, що елемент не має змісту або закриває тега. Відкриває тег повинен містити іменовані параметри, звані атрибутами, наприклад, fontstyle = "normal" у наведеному вище прикладі.

Так як великі і маленькі букви розрізняються в XML, то й імена елементів і атрибутів MathML є чутливими до регістру. Для зручності читання в специфікації MathML більшість із них визначені в нижньому регістрі.

У формальному обговоренні розмітки XML робиться відмінність між елементом, таким як mrow і задають його тегами <mrow> і </ mrow>. Те, що знаходиться між тегами <mrow> і </ mrow>, називається змістом або тілом елемента mrow. 'Порожній елемент', наприклад none, не має тіла і визначається одним тегом виду <none/>. У цій специфікації не буде робитися упору на це розходження між тегами та елементами. Наприклад, ми іноді будемо посилатися на елементи <mrow> і <none/>, маючи на увазі елемент, якому належать ці теги. Це робиться для того, щоб посилання на елементи відрізнялися від посилань на атрибути. Тим не менш, терміни 'елемент' and 'тег' будуть використовуватися в суворій відповідності з термінологією XML.

1.7.3 Дочірні елементи проти аргументів

Багато елементів MathML вимагають певного числа дочірніх елементів або привласнюють додатковий сенс дочірнім елементам, що стоять у певній позиції. Як було зазначено вище, цей тип обмежень є специфічним для MathML і не може бути заданий за допомогою синтаксису і граматики XML. Коли дочірній елемент даного елемента MathML задовольняє цим додатковим умовам, ми будемо говорити про нього як про аргумент, а не про дочірньому елементі, щоб підкреслити специфічність його використання. Зауважте, що термін "аргумент 'застосовується саме в цьому технічному сенсі, якщо не вказано інше.

Деякі елементи мають інші вимоги на число або тип аргументів. Ці додаткові вимоги описуються для кожного конкретного елемента.

1.7.4 Значення атрибутів MathML

У відповідності зі специфікацією мови XML, атрибути елементів повинні бути задані в одній з наступних форм:

attribute-name = "value"

or

attribute-name = 'value'

де прогалини навколо знаку '=' необов'язкові.

Імена атрибутів виділені в тексті специфікації моноширінним шрифтом, так само як і приклади.

Значення атрибутів, які в MathML можуть бути рядком довільних символів, повинні бути поміщені в подвійні (") або одинарні (') лапки. Значення атрибута може містити той тип лапок, який не використовується для укладання всього значення.

MathML використовує більш складний синтаксис для значень атрибутів, ніж загальний синтаксис XML, що задається MathML DTD. Ці додаткові правила призначені для додатків MathML, і їх порушення є помилкою MathML, проте вони не можуть бути відслідковані процесорами XML. Синтаксис значень елементів MathML визначений у таблиці атрибутів і супроводжений описом кожного елемента, використовуючи описану нижче нотацію. Коли додаток MathML обробляє значення атрибутів, всі прогалини, за винятком поділяють окремі слова або числа, ігноруються. Символьні дані можуть бути включені в значення атрибутів безпосередньо або з використанням документів, які сутностей.

Зокрема, символи ", ', & і <можуть бути включені в значення атрибутів MathML (коли це дозволено синтаксисом) з використанням сутностей",', & і <, відповідно.

MathML DTD, оголошує типи більшості значень атрибутів як рядок CDATA. Це дозволяє збільшити сумісність з існуючим програмним забезпеченням на основі SGML і XML і розширювати список зумовлених значень. Подібні ж міркування застосовні до схем XML.

1.7.4.1 Синтаксичні нотації, використовувані в специфікації MathML

Для опису MathML-специфічного синтаксису допустимих значень атрибутів, в цьому документі використовуються наступні угоди і нотації.

Нотація

Що означає

number

десяткове ціле або раціональне число (рядок цифр з одного десятковою крапкою), можливо, що починається зі знака '-'

unsigned-number

десяткове ціле або дійсне число, без знака

integer

десяткове ціле число, можливо, що починається зі знака '-'

positive-integer

десяткове ціле число, без знака, не 0

string

довільна рядок (завжди повне значення атрибута)

character

одиночний непробельний символ або ссилочая сутність MathML; можливий поділ пробілами

# Rrggbb

колір у форматі RGB; три пари шістнадцяткових цифр у прикладі # 5599dd визначають пропорцію червоного, зеленого і синього за шкалою від x00 до xFF, яка дає яскравий блакитний колір.

h-unit

одиниця вимірювання горизонтальної довжини (допустимі одиниці виміру перераховані нижче)

v-unit

одиниця виміру вертикальної довжини (допустимі одиниці виміру перераховані нижче)

css-fontfamily

пояснюється нижче, в підрозділі про CSS

css-color-name

пояснюється нижче, в підрозділі про CSS

інші слова, виділені курсивом

пояснюються в тексті, окремо для кожного атрибута

form +

один або більше примірників 'form'

form *

нуль або більше примірників 'form'

f1 f2 ... fn

один примірник кожної форми, послідовно, можливо розділені пробільними символами

f1 | f2 | ... | Fn

будь-яка із вказаних форм

[Form]

необов'язковий примірник 'form'

(Form)

те ж саме, що й просто form

невиділені слова

слова, включення до значеннями атрибута дослівно (есді це не частина пояснюватиме фрази)

символи в лапках

символи, дослівно включені в значення атрибуту (наприклад, "+" or '+')

Пріоритет операція, від найвищого до найнижчими:

form + або form *

f1 f2 ... fn (послідовність форм)

f1 | f2 | ... | Fn (одна з форм)

Тип string може містити довільні символи, які визначені у значеннях атрибуту XML CDATA. У MathML немає синтаксичних правил, за якими string може бути частиною значення атрибуту, а не всім значенням.

Сусідні ключові слова і числа в значеннях атрибутів повинні розділятися пробільними символами, за винятком наступних за числами ідентифікаторів одиниць виміру (що зазначено у синтаксисі символів h-unit і v-unit). Пробільні символи не потрібні, але дозволені між будь-якими перерахованими вище токенами, за винятком (для сумісності з CSS) безпосередньо перед ідентифікаторами одиниць виміру, між знаком '-' і числами, між # та rrggbb або rgb.

Значення числових атрибутів, які задають розміри і повинні залежати від поточного шрифту, можуть задаватися в пов'язаних зі шрифтом одиницях виміру або у зазначених абсолютних одиницях (описаних нижче). Горизонтальні розміри звичайно задаються в em, а вертикальні - у ex. Ідентифікатори em або ex йдуть безпосередньо за числом. Наприклад, горизонтальні відступи від оператора '+' зазвичай задаються в em, хоча можуть використовуватися і інші одиниці виміру. Використання пов'язаних зі шрифтом одиниць вимірювання краще, ніж абсолютних, так як вони дозволяють збільшувати або зменшувати розмір відображуваного елемента в залежності від поточного розміру шрифту.

Для більшості числових атрибутів можливі значення обмежені деякими підмножиною, інші значення помилкою не є (якщо не вказано протилежне), а округлюються програмою відображення вгору або вниз до найближчого допустимого. Безліч допустимих значень може залежати від програми відображення і не визначається MathML.

Якщо числове значення у відповідності з синтаксисом атрибута може містити знак мінус ('-'), наприклад number або integer, то його використання у випадку, коли негативні значення не істотні, помилкою не є. Замість цього, значення має оброблятися додатком так, як описано в попередньому параграфі. Явна вказівка ​​знака плюс ('+') як частини числового значення заборонено за винятком тих випадків, коли це спеціально зазначено в синтаксисі (у вигляді "+" чи "+"), і його присутність може змінити сенс значення атрибуту (як описано в кожному з таких атрибутів).

Символи h-unit, v-unit, css-fontfamily, і css-color-name розглядаються в наступних підрозділах.

1.7.4.2 Атрибути з одиницями вимірювання

Деякі атрибути приймають горизонтальні та вертикальні розміри як числа, за якими слід 'ідентифікатор одиниці вимірювання "(часто званий' одиницею вимірювання"). Синтаксичні символи h-unit і v-unit відносяться до горизонтальних і вертикальних розмірів відповідно. Можливі одиниці вимірювання та розміри, до яких вони належать, наведено в таблиці, розташованої далі; вони збігаються для горизонтальних і вертикальних розмірів, але синтаксичні символи відрізняються (як нагадування використовуваного в них напряму).

Ідентифікатори одиниць вимірювання і їх смислове значення взяті з. Тим не менш, синтаксис числа з наступним ідентифікатором у MathML не ідентичний синтаксису в CSS, так як числа у CSS не можуть закінчуватися десятковою крапкою і можуть починатися зі знаку '+'.

Допустимі горизонтальні і вертикальні одиниці вимірювання в MathML:

Ідентифікатор

Опис

em

em (одиниця виміру, що залежить від розміру шрифту і зазвичай застосовується для горизонтальних розмірів)

ex

ex (одиниця виміру, що залежить від розміру шрифту і зазвичай застосовується для вертикальних розмірів)

px

піксель

in

дюйм (1 дюйм = 2.54 сантиметри)

cm

сантиметр

mm

міліметр

pt

пункт (1 пункт = 1 / 72 дюйма)

pc

picas (1 pica = 12 пунктів)

%

відсоток від величини

Друкарські одиниці виміру em і ex обговорюються далі в пункті 'Додаткові зауваження'.

% Є 'відносної одиницею вимірювання "; коли значення атрибуту поставлено як n% (для будь-якого числового значення n), значення визначається як значення за замовчуванням, помножене на n і поділене на 100. Значення за замовчуванням (або спосіб, яким його можна отримати, якщо воно не є константою) описано в таблиці атрибутів для кожного елемента, а його зміст описаний у подальшій документації по атрибуту. (Елемент mpadded має свій синтаксис для% і не дозволяє використовувати його як ідентифікатор одиниці виміру)

Для узгодженості з CSS, одиниці вимірювання довжини в MathML можуть бути необов'язковими. Коли це так, символ одиниці вимірювання в синтаксисі атрибуту полягає у квадратні дужки, наприклад, число [h-unit]. Сенс значення атрибуту без одиниць вимірювання описаний в документації для кожного атрибута; зазвичай вказане число множиться на значення за замовчуванням. (У цьому випадку число nnn без одиниці вимірювання еквівалентно числу nnn помноженому на 100 і зі знаком%. Наприклад, <mo maxsize="2"> (</ mo> еквівалентно <mo maxsize="200 %"> (</ mo> )

Як виняток (теж для сумісності з CSS), числові значення рівні нулю не вимагають вказівки ідентифікатора одиниці вимірювання навіть якщо цього вимагає синтаксис. У цьому випадку наявність або відсутність ідентифікатора одиниці виміру не грає ролі, так як будь-яке число помножене на 0 є 0.

Для більшості атрибутів в даній специфікації в якості стандартних одиниць вимірювання вибрані одиниці, що використовуються в друкарському наборі, коли не зазначено конкретне значення величини, то стандартні одиниці вимірювання зазвичай вказані в таблиці або в описі атрибута. Найчастіше використовуються такі одиниці виміру як em або ex. Однак, можуть використовуватися будь-які одиниці, якщо в описі конкретного атрибута не вказано інше.

Відзначимо, що деякі атрибути, наприклад framespacing в <mtable>, можуть містити більше одного числового значення, після кожного з яких слід своя одиниця вимірювання.

Прийнято використовувати одиниці вимірювання ex в основному для завдання вертикальних розмірів, а em - для горизонтальних, хоча це не є обов'язковою вимогою. Ці одиниці вимірювання залежать від шрифту, використовуваного для відображення елемента, в атрибутах якого вони застосовуються, і його розміру. А значить, вони повинні інтерпретуватися після таких атрибутів, як fontfamily і fontsize, якщо вони зустрічаються в одному елементі, так як зміна поточного шрифту або його розміру може призвести до зміни розміру одиниць виміру.

Визначення довжини кожної одиниці виміру (але не синтаксис MathML для значень довжини) таке ж як в CSS, за винятком тих випадків, коли шрифт встановлює спеціальні значення для em і ex, що відрізняються від значень, визначених у CSS (font size і 'x'- height відповідно).

1.7.4.3 CSS-сумісні атрибути

Деякі атрибути MathML, перераховані нижче, відповідають властивостям відображення тексту, визначеним у CSS1. Це зроблено для того, щоб програми відображення могли запросити CSS-оточення про відповідні властивості при визначенні значень атрибутів за умовчанням.

Можливість визначення стильових властивостей через атрибути MathML і CSS має і недоліки. Як мінімум, це заплутує, а в гіршому випадку, це призводить до випадкового зміни сенсу рівнянь при зміні CSS для всього документа. Тому, ці атрибути засуджуються. У свою чергу, MathML 2.0 вводить чотири нових математичних стильових атрибута. Ці атрибути використовують логічні значення для того, щоб краще передати абстрактні категорії використовуються в математиці символів, і надають чіткий поділ між MathML і CSS.

Наступна таблиця показує відповідність засуджуваних стильових атрибутів MathML 1.01 і їх CSS-аналогів:

Атрибут MathML

Властивість CSS

синтаксичний символ

Елемент MathML

fontsize

font-size

-

токени подання; mstyle

fontweight

font-weight

-

токени подання; mstyle

fontstyle

font-style

-

токени подання; mstyle

fontfamily

font-family

css-fontfamily

токени подання; mstyle

color

color

css-color-name

токени подання; mstyle

background

background

css-color-name

mstyle

Порядок обробки атрибутів і стильових таблиць.

CSS або аналогічні стильові таблиці можуть задавати зміни властивостей відображення елементів MathML. Так як властивості відображення можуть змінюватися як атрибутами елемента, так і програмою відображення, необхідно визначити порядок, у якому відбуваються зміни з різних джерел. Прикладом автоматичного узгодження є ситуація з fontsize. У випадку 'абсолютних' змін, наприклад, установки нового значення властивості, незалежного від старого значення (на відміну від 'відносних' змін, таких як інкремент чи множення на число), діють лише останні абсолютні зміни, тому джерело змін з найвищим пріоритетом повинен оброблятися останнім.

У разі CSS, порядок обробки змін, що діють на властивості відображення елемента MathML, з різних джерел повинен бути наступним: (змінюється першим; найнижчий пріоритет)

Автоматичні зміни властивостей або атрибутів, заснованих на типі батьківського елементу і положенні елемента в батьківському (як згадується вище про зміни fontsize відповідно до scriptlevel; такі зміни зазвичай застосовуються самим батьківським елементом перед передачею властивостей відображення поточного елементу

З стильових таблиць читача: стилі, які не оголошені 'важливими'

Явно задані атрибути поточного елемента MathML

З стильових таблиць автора: стилі, які не оголошені 'важливими'

З стильових таблиць автора: стилі, які оголошені 'важливими'

З стильових таблиць читача: стилі, які оголошені 'важливими' (змінюється останнім; найвищий пріоритет).

Зазначимо, що порядок змін, вироблених стильовими таблицями CSS, визначений у самих CSS (це порядок, який визначається CSS2). Наступне пояснення відноситься тільки до випадку, коли в цьому порядку відбуваються зміни, викликані точним завданням атрибутів MathML.

Пояснення: Атрибути відображення в MathML аналогічні атрибутам відображення в HTML (таким як align), які, згідно з визначеним в CSS порядку, повинні оброблятися з однаковим пріоритетом. Більш того, такий вибір черговості дозволяє читачам вирішити, визначаючи стилі CSS 'важливими', які з їхніх установок повинні перевизначати явні установки MathML. Так як вираження MathML, що складаються з елементів змісту або подання, в першу чергу призначені для передачі сенсу, а 'графічне представлення' (якщо таке є) повинно допомагати цьому (але не є важливим саме по собі), ймовірно, що читачі захочуть, щоб їх стильові уподобання мали пріоритети. Основним виключенням є ситуація, коли атрибути відображення передбачають зміну сенсу виразу.

1.7.4.4 Значення атрибутів за умовчанням

Значення за замовчуванням для атрибутів MathML як правило даються разом з докладним описом відповідного елемента. Значення за замовчуванням, зазначені в таблицях атрибутів звичайним шрифтом, є точними (якщо вони не є очевидними поясненнями), виділені курсивом фрагменти описують, як значення за умовчанням можуть бути обчислені.

Значення за замовчуванням, описані як inherited, беруться з середовища відображення, як описано для mstyle, або, в деяких окремо описаних випадках, зі значень інших атрибутів навколишніх елементів, або з певної частини цих значень. Завжди використовується значення, яке може бути задано точно, якщо воно відоме, воно ніколи не залежить від змісту або атрибутів даного елемента, тільки від його оточення. (Його сенс при використанні може, тим не менш, залежатиме від цих атрибутів або змісту)

Значення за замовчуванням, описані як automatic, повинні обчислюватись програмою відображення таким чином, щоб отримати високоякісне зображення. Спосіб, як цього домогтися, звичайно не зазначений у специфікації MathML. Завжди використовується значення, яке може бути задано точно, якщо воно відоме, але воно зазвичай залежить від змісту елемента і, можливо, від середовища відображення.

Інші виділені курсивом опису значень за замовчуванням, які зустрічаються в таблицях атрибутів, пояснюються окремо для кожного атрибута.

Одинарні або подвійні лапки, в які повинні бути укладені значення атрибуту, розташованого в відкриваючому теге XML, не показані в синтаксисі значень в таблиці атрибутів, але показані в тексті прикладів.

Відзначимо, що, як правило, не існує значень, які точно можуть бути присвоєні атрибутам MathML і імітують ефект їх відсутності для атрибутів, що є inherited або automatic. Вказівка ​​'inherited' або 'automatic "точно не буде працювати, і взагалі заборонено. Більш того, навіть для атрибутів подання (для яких тут наведені конкретні значення за замовчуванням), повинен використовуватися елемент mstyle для зміни містяться в ньому елементів. Тому, MathML DTD визначає більшість значень за замовчуванням для атрибутів уявлення як # IMPLIED, що не дозволяє обробникам XML додавати до цих атрибутів будь-які спеціальні значення за замовчуванням. MathML schema працює за тими ж правилами.

1.7.4.5 Значення атрибутів у MathML DTD

У XML DTD, дозволені значення атрибутів можуть бути визначені як загальні рядка, або можуть бути різними способами обмежені (перерахуванням можливих значень, або вказівкою певного типу даних). Вибір типу атрибуту XML впливає на обсяг, в якому можуть бути проведені перевірки коректності з використанням DTD.

MathML DTD визначає формальні типи атрибутів XML для всіх атрибутів MathML, включаючи в деяких випадках перерахування допустимих значень. Загалом, тим не менш, MathML DTD є відносно нестрогим, часто визначаючи значення атрибутів як рядки; це зроблено для сумісності з парсерах SGML, які допускають, щоб декілька атрибутів одного елемента MathML брали однакові значення (такі як true і false), і для того, щоб дозволити розширювати список зумовлених значень.

У той же час, навіть якщо значення атрибута може бути визначено як рядок в DTD, тільки певні значення є допустимими в MathML, як описано вище і в частині цієї специфікації. Наприклад, багато атрибутів вимагають числових значень. У наступному розділі описані допустимі значення атрибутів для кожного елемента. Тим не менше, недолік жорсткості вимог в DTD не має на увазі, що ці вимоги не є частиною MathML, або що вони не можуть бути посилені конкретною програмою відображення MathML.

Більш того, MathML DTD надається для зручності; хоча і мається на увазі повна сумісність з текстом специфікації, текст повинен бути визначальним у випадку виникнення протиріч.

1.7.5 Атрибути, загальні для всіх елементів MathML

Для того щоб полегшити використання таких стильових механізмів, як 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 існують інші способи передати специфічну інформацію.

1.7.6 Згортання прогалин у введенні

MathML ігнорує пробільні символи, що зустрічаються поза токенів. Непробельний символи тут заборонені. Пробільні символи, що зустрічаються у змісті токенів, видаляються на кінцях, тобто віддаляються все пробільні символи на початку і кінці змісту. Пробільні символи, розташовані всередині змісту елементів MathML згортаються кононіческі, тобто кожна послідовність з 1 або більше таких символів замінюється на 1 (іноді званий порожнім символом).

У MathML, як і в XML, під пробільними символами маються на увазі простий пробіл, табуляція, новий рядок або новий рядок, тобто символи з кодами Unicode U +0020, U +0009, U +000 A, U +000 D відповідно.

Наприклад,

<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 містить лише пробільні символи

2. Можливості сучасних браузерів при роботі з MathML

В якості тестового прикладу для демонстрації можливостей браузерів була створена проста XHTML-сторінка, що містить приклади обох розміток. Опишемо основні вимоги до неї. По-перше, це мають бути коректним XHTML-документом, тобто:

бути коректним xml-документом;

кореневим елементом повинен бути елемент html в просторі імен XHTML, наприклад:

=" http :// www . w 3. org /1999/ xhtml "> <Html xmlns = "http: / / www. W 3. Org / 1999 / xhtml">

повинен містити декларацію типу документа. У нашому випадку це:

"- // W 3 C // DTD XHTML 1.1 plus MathML 2.0 // EN " <! DOCTYPE html PUBLIC "- / / W 3 C / / DTD XHTML 1.1 plus MathML 2.0 / / EN"

:// www . w 3. org / TR / MathML 2/ dtd / xhtml - math 11- f . dtd "> "Http: / / www. W 3. Org / TR / MathML 2 / dtd / xhtml - math 11 - f. Dtd">

MathML-фрагменти повинні належати простору імен MathML, наприклад:

</ math > <math xmlns="http://www.w3.org/1998/Math/MathML"> ... </ math>

Тестовий приклад, який використовується нижче: test. xhtml.

2.1 Mozilla & Firefox

Використовувана версія: 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-стилів ми побачимо не вихідний код, а результат перетворення.

З інших можливостей слід відзначити інтеграцію з пошуковими системами. При виділеному фрагменті формули контекстне меню дозволяє відправити запит до пошукової системи.

Але поки це заділ на майбутнє, так як поки подібний пошук результатів не дає.

2.2 Microsoft Internet Explorer

1; Q 867801; Q 823353; Q 833989) Використовувана версія: 6.0.2800.1106 (SP 1, Q 867801; Q 823353; Q 833989)

Браузер від Microsoft не має вбудованої підтримки MathML. Для коректного відображення математичних формул можна використовувати вільно розповсюджуваний плагін MathPlayer.

Крім власне відображення математичної розмітки він дозволяє швидко копіювати MathML-нотацію. Також можна за бажання збільшити формулу для кращої наочності:

З недоліків слід відзначити відсутність можливості виділити або скопіювати фрагмент математичного виразу. Також немає можливості (як і в Mozilla) коректно скопіювати формулу з навколишнім текстом.

2.3 Opera

Використовувана версія: 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/


Посилання (links):
  • http://mathmag.spbu.ru/article/4/
  • 1.1 Математика і її система позначень

    Додати в блог або на сайт

    Цей текст може містити помилки.

    Програмування, комп'ютери, інформатика і кібернетика | Курсова
    209.6кб. | скачати


    Схожі роботи:
    English language for technical colleges
    Структура мови SQL Structured Query Language
    Системи керовані потоком даних Мова Dataflow Graph Language
    © Усі права захищені
    написати до нас