46579 (607869), страница 5
Текст из файла (страница 5)
Некоторые элементы имеют другие требования на число или тип аргументов. Эти дополнительные требования описываются для каждого конкретного элемента.
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 и со знаком %. Например, ( эквивалентно ()
Как исключение (тоже для совместимости с CSS), числовые значения равные нулю не требуют указания идентификатора единицы измерения даже если этого требует синтаксис. В этом случае наличие или отсутствие идентификатора единицы измерения не играет роли, так как любое число умноженное на 0 есть 0.
Для большинства атрибутов в данной спецификации в качестве стандартных единиц измерения выбраны единицы, используемые в типографском наборе; когда не указано конкретное значение величины, то стандартные единицы измерения обычно указаны в таблице или в описании атрибута. Чаще всего используются такие единицы измерения как em или ex. Однако, могут использоваться любые единицы, если в описании конкретного атрибута не указано обратное.
Отметим, что некоторые атрибуты, например framespacing в , могут содержать более одного числового значения, после каждого из которых следует своя единица измерения.
Принято использовать единицы измерения 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.