Смекни!
smekni.com

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

1.7.2 Пример синтаксиса XML

Так как MathML основан на XML, спецификация MathML использует терминологию XML. Данные XML состоят из символов Unicodes (которые включают в себя обычные ASCII-символы), ссылки на сущности (неформально называемые сущностями), такие как &lt;, которые обычно представляют расширенные символы, и элементы, такие как <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 (когда это разрешено синтаксисом) с использованием сущностей &quot;,&apos;,&amp; и &lt;, соответственно.

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 не могут заканчиваться десятичной точкой и могут начинаться со знака '+'.