7. Shared MLs Reference Material

From OOXML-Wiki

Jump to: navigation, search

Contents

[edit] 7.1 [all]

This is the specification of Office Open Math Markup Language, a specialized XML vocabulary for the describing the layout of mathematical equations. This solves the same problem as MathML, a long-established W3C standard and an ongoing activity in the W3C. Since the equation editing feature of Word was entirely rewritten in Word 2007, there doesn't not seem to be the argument that an additional equation language must be introduced for the sake of legacy documents.

Proposed change: It is recommended that this section be removed from OOXML and that the proposers of OOXML work within the W3C's MathML activity, where MathML 3.0 is currently being drafted, to produce a single standard for equations that can be used later referenced by a future version of OOXML.

[edit] 7.1

oMath stands out as being treated differently in the standard compared to the other topics. It is much lighter–there is less narrative, fewer examples. Some of the comments on the Primer also apply in this Part. In the following, usually one example is given to illustrate each point, but there are others.

Some of the issues stem from the fact that the xml alone is not sufficient to display a mathematical expression. Use is made of implicit semantic knowledge of the characters that form an expression, i.e. which are operators, which are special characters that need to be handled in specific ways and how they behave.

  1. In maths, an expression is not always an equation. If anything, an equation is a maths expression that includes an equal sign, for example. It would be better to use "expression" or "mathematical expression" throughout.
  2. There is no association between maths and the xml being used in oMath. For example, a maths expression is composed of subexpressions but there is no description of how to go from the mathematical structure to the xml (cf presentation markup in MathML).
  3. There is no description of what an operator is and how it is displayed differently to other objects. References are made to such things as "the alignment and manual break properties of operators" but these are not explained.
  4. Inside text, it appears that each character is examined to see which category it belongs to before deciding how it should be displayed. Some characters are recognised as operators or equal signs, for example. Reference is made to the "usual" ones. These need to be listed and defined. For example, "∫" is recognised as the integral sign, ∫, and so satisfies the default for the positioning of its limits. Although "=" is a binary operator, it behaves differently to other binary operators.
  5. How are line breaks determined? Is order of precedence considered when deciding?
  6. No mention is made of unary operators, for which conventionally, spacing is different to that for binary operators.
  7. No mention is made of invisible operators e.g. Unicode Invisible Times (x2062) and Function Application (x2061). How are they handled?
  8. The text mixes the use of "function" and "object". For example, eqArr (Equation-Array Function) "specifies the Equation-Array function, an object ..." whereas f (Fraction Function) "specifies the fraction object ...". The standard needs to be consistent. In fact, in both cases, the xml element is a constructor for an object comprised of the child elements e.g. f constructs a fraction from a numerator and a denominator. Maybe better names would be "Equation-Array Constructor" and "Fraction Constructor".
  9. Namespaces were designed to remove ambiguity and could have been used effectively for this purpose throughout this standard. For example, to distinguish m:r and w:r, m:ST_OnOff and w:ST_OnOff in lists of parents and children rather than relying on recognising that the section number reference was for a different part of the standard.
  10. Following from this, types, particularly simple types could have been defined the same. m:ST_OnOff is defined as "on" or "off" whereas w:ST_OnOff also allows "1", "0", "true", "false". This type of difference seems to indicate that the "standard" is simply a specification for the currently allowed values used within Office 2007.
  11. Some definitions are given in the Primer which is not normative, but are not in the Language Reference which is normative. These definitions should be included in the Language Reference. For example, the definition of column gap is given in the Primer along with a diagram which makes it precise. Topics in the Language Reference other than Math use diagrams.
  12. Some of the subclauses simply repeat what is in the schema with no other narrative. For example, the description of eqArrPr is one sentence repeating its name and naming two examples of its children. For the topics of the Language Reference other than Math, there is at least one paragraph, an example in the narrative and an example for each attribute in the attribute table.
  13. One of the problems that arises from the structure of this standard, is that elements are dealt with separately. But some elements are related and interact, for example, cGp and cSp which specify the gap between columns and the spacing for columns in an array. There is no infomation on how they should interact.
  14. In some cases the element names are badly chosen. For example, chr is called "Accent Character" whereas it is also used for specifying the character used to group items and for specifying the character used in an n-ary object. A better name would have been "Character".
  15. The n-ary Operator Function is not n-ary, it is ternary. The operator specified by a character such as an integral sign, takes three parameters: a subscript, a superscript and a base expression.
  16. The same description of the val attribute is copied throughout. This leads to some inappropriate examples, e.g. the example for chr shows begChr and EndChr but not chr. The description and example should depend on the context. Similarly for when val is of type ST_OnOff which usually just says "... specifies that the property shall be explicitly applied ...".
  17. The examples are sometimes repeated for the same element, first in the narrative and then again in the attributes table, e.g. for begChr.
  18. Some concepts need defining such as alignment points, linear form, professional form, twips, two-dimensional output. What is the syntax for linear form and where can it be used?
  19. Defaults are not always specified. Whenever something is optional, the standard should specify what happens when it is omitted. For example, naryPr is optional in nary, so it is not necessary to specify what the operator is. What happens when it is omitted?
  20. For completeness, an informative table of the Unicode characters used in the examples would be very helpful.
  21. The standard says that some restrictions are left to Office 2007 (sorry I can't remember where I saw that). For example, trying to have a sum from i=1 to n so that the limits come below and above the sigma, Σ, is acceptable to Word 2007 when it is in its own paragraph, but not when it is inline. When inline, Word 2007 forces them to be subscript and superscript, which isn't what was required. How is it possible to tell whether this is a bug in Word 2007 or part of the standard?
  22. Sometimes table headings are on their own at the bottom of a page and then repeated at the top of the next page. The headings at the bottom of a page need to be deleted.
  23. Unicode characters are given throughout as U+0302, for example. The character that this represents should be identified and displayed.

[edit] 7.1 [5]

Change end of paragraph starting "... or functions (such as" to:

"... or functions such as accents (acc) or fractions (f)."

[edit] 7.1.2.1

<m:accPr> can be omitted from the <m:acc> element. The text needs to specify what the default character will be when it is omitted.

[edit] 7.1.2.1 [38]

Delete the heading "Parent Elements" at the bottom of the page.

[edit] 7.1.2.2

The text needs to specify the defaults when <chr> and / or <ctrlPr> are omitted.

[edit] 7.1.2.2 [10]

Add the following after "[Example:": "The diacritical mark   ̃ (tilde) is:"

[edit] 7.1.2.3 [3]

Replace 'true' with '"on"': "... When "on", this operator emulator ..."

[edit] 7.1.2.3 [5]

Replace "point." with "point:"

[edit] 7.1.2.5 [24]

Delete heading "Parent Elements" from bottom of the page.

[edit] 7.1.2.6 [23]

Wrong end tag, it should be: </m:r>

[edit] 7.1.2.6 [27]

Delete heading for attributes table at bottom of the page.

[edit] 7.1.2.7 [6 on p4970]

Add a space between "a" with the bar above it and "and" at the end of the line.

[edit] 7.1.2.9 [26-27 on p4972]

The schema only allows <m:count> before <m:mcJc>: transpose lines 26 and 27.

[edit] 7.1.2.9 [after 39 on p4973]

Missing end tag for second row and missing start tag for third row of the matrix. Insert after line 39 (with correct indent):

</m:mr>

<m:mr>

[edit] 7.1.2.11 [13]

Need to specify the defaults when <borderBoxPr> is omitted.

[edit] 7.1.2.12 [20]

Insert "end example]" at the end of the line.

[edit] 7.1.2.13

Need to specify what the defaults are when <boxPr> is omitted.

[edit] 7.1.2.13 [19-20]

Move "[Example:" from line 20 to the start of line 19 where the example starts.

[edit] 7.1.2.15 [attribute table]

Need to specify what happens when alnAt attribute is omitted.

[edit] 7.1.2.16 [9]

The possible values for brkBin are before, after and repeat (not duplicate): replace "Duplicate" with "Repeat".

[edit] 7.1.2.18

Need to specify what happens when cGpRule is omitted.

[edit] 7.1.2.18 [9-12]

It isn't possible to set an additional spacing between columns of ".5 ems" unless 1 em is the normal spacing between columns, but normal spacing isn't specified. Even then, a 1.5 spacing gap would be set by cGpRule on its own and not cGp.

Also, the xml for this example sets a spacing of 6 lines between columns, so the example xml does not match the example matrix.

[edit] 7.1.2.18 [16-17]

The schema only allows <m:count> before <m:mcJc>: transpose lines 16 and 17.

[edit] 7.1.2.18 [attributes table]

It seems strange to define column spacing in terms of number of lines. Something like ems might be more appropriate.

[edit] 7.1.2.18 [attributes table line 1]

Insert "columns of " into the first sentence so it becomes: "Specifies the amount of space between columns of the parent element."

[edit] 7.1.2.19 [6]

Line 6 is garbled: delete "horizontal spacing between columns in a matrix. Type of" so that it reads

"This element specifies the type of gap (horizontal spacing) ..."

[edit] 7.1.2.19 [15-16]

The schema only allows <m:count> before <m:mcJc>: transpose lines 15 and 16.

[edit] 7.1.2.20 [5]

chr is used to specify any characters and not just accents.

Proposed change: call it "chr (Character)" not "chr (Accent Character)".

This will have a knock-effect wherever it is referenced.

[edit] 7.1.2.20 [7]

The default for chr depends on the parent element. The defaults need to be specified for each of the parents: accPr, groupChrPr and naryPr.

[edit] 7.1.2.20 [2 (attributes table)]

The description relates to <m:dPr> and not to <m:chr>.

Proposed change: Change the example to:

 [Example:
 <m:accPr>
   <m:chr m:val="&#771;"/>
 </m:accPr>
 end example]

[edit] 7.1.2.21 [9]

Change the first word of the line from "represents" to "specifies".

[edit] 7.1.2.21 [15-16]

The schema only allows <m:count> before <m:mcJc>: transpose lines 15 and 16.

[edit] 7.1.2.21 [22]

Delete the attribute table heading that is on its own at the bottom of the page.

[edit] 7.1.2.21 [attribute table, line 1]

Change "... to which a column attribute applies." to ".... to which a column property applies."

[edit] 7.1.2.21 [attribute table, line 2]

"Example" should be italic.

[edit] 7.1.2.21 [attribute table, line 2]

Replace "first" at the end of the line by "next" since the count applies to the next three columns and not always the first three.

[edit] 7.1.2.21 [attribute table, line 3]

"end example" should be italic.

[edit] 7.1.2.22

The description of cSp refers to the "setting of the rule of the parent element", but what rule this might be isn't specified. Should there be a cSpRule? The rule should be included in the example. Compare cGpRule where if it is omitted, the spacing is single spacing so the value of cGp would be ignored.

Need to say how cSp interacts with cGp if both are specified?

[edit] 7.1.2.22 [8-9]

Change the first sentence of the example to: "[Example: The following xml specifies that there should never be fewer than 6 pts between adjacent column edges of the matrix:"

[edit] 7.1.2.22 [attribute table]

The description given in the table doesn't match the example: the example doesn't have a rule for the parent element and a value of 120 suggests the units are twips and not points or lines.

[edit] 7.1.2.23 [20-22]

"Linear representation", "linear string" and "professional form" need to be defined.

The string ∫_0^1 is used as an example. (i) This needs to be explained. (ii) The syntax for it needs to be specified. (iii) Where can it be used? (iv) Does that mean "_" and "^" are special characters in text so can't be used as themselves? If so, how can we use them without their special meaning? (v) What other special characters are there?

[edit] 7.1.2.31

The use of "e" for the name of this element can cause confusion, as e also stands for the constant 2.718282... This makes it difficult to read descriptions like line 22, for example. A better name might be "b" or "base".

[edit] 7.1.2.31 [21]

This element is used in about 18 different ways, one of which is the base argument of a mathematical function. The description needs to describe its general use.

[edit] 7.1.2.32 [22]

Move the limit "n→∞" in the first occurrence below "lim".

[edit] 7.1.2.32 [36 on p5000]

Delete heading "Child Elements" that's on its own at the bottom of the page.

[edit] 7.1.2.32 [2-8 on p5002]

All the subelements of e can be omitted. Need to specify what the defaults are, especially when they are all omitted.

[edit] 7.1.2.33 [18]

Delete attributes table heading that is on its own at the bottom of the page.

[edit] 7.1.2.33 [attributes table]

Add "end example]" after last line of xml: "</m:dPr>"


[edit] 7.1.2.34 [7]

Insert "with" so the line starts: "vertically justified as a unit with respect to..."

[edit] 7.1.2.34 [10]

Delete "tens". The digits line up.

[edit] 7.1.2.34 [11]

A better example would be one where the operators lined up (as in line 9) and we could see how it all fitted together.

[edit] 7.1.2.34 [24]

Delete "Parents Elements" heading that's on a line on its own at the bottom of the page.

[edit] 7.1.2.34 [3-8 on p5004]

Need to specify the default when eqArrPr is omitted.

[edit] 7.1.2.36 [17]

Replace "Stacked" with "Bar" (the example has a bar).

[edit] 7.1.2.36 [20]

Make this consistent with usage elsewhere by changing the start of the line to: "No-Bar Fraction (Stack):"

[edit] 7.1.2.37 [13]

Move the limit "n→∞" in the first occurrence below "lim".

[edit] 7.1.2.38 [14]

Replace "Stacked" with "Bar" (the example has a bar).

[edit] 7.1.2.38 [17]

Make this consistent with usage elsewhere by changing the start of the line to: "No-Bar Fraction (Stack):"

[edit] 7.1.2.39 [4]

Move the limit "n→∞" in the first occurrence below "lim".

[edit] 7.1.2.41 [8]

The example at the bottom of the preceding page (p5011) shows a midline horizontal ellipsis (U+22EF), not a horizontal ellipsis or 3 dots. Change line 8 to: "<m:t>x+x+&#8943;</m:t>"

[edit] 7.1.2.42 [24]

Need to show what character U+23DF is (bottom curly bracket).

[edit] 7.1.2.43 [11]

Delete "at the document level". grow is a property of its parent and is not used in setting the document properties.

[edit] 7.1.2.51 [20]

Change "right" to "centerGroup" to match example: <m:jc m:val="centerGroup"/>

[edit] 7.1.2.52 [6]

Change the name to "Limit" instead of "Limit (Lower)". This element is used for both lower and upper limits.

[edit] 7.1.2.52 [9]

Add a comment about upper limit to the end of the sentence so it ends: "... limLow function and the upper limit of the limUpp function."

[edit] 7.1.2.52 [26]

Delete "Child Elements" table heading that is on its own at the bottom of the page.

[edit] 7.1.2.53 [14-18]

Need to show or explain which option the XML example is.

[edit] 7.1.2.58 [9-10]

The special characters referred to need to be identified, together with their expected behaviours.

[edit] 7.1.2.58 [12-21]

Need to show what the example generated by the xml looks like and compare it to how it would look without using lit.

[edit] 7.1.2.59 [3]

Replace "lmargin" by "lMargin".

[edit] 7.1.2.60 [25]

  1. Need to explain how to change matrix delimiters from parentheses to square brackets.
  2. Need to explain how the matrix delimiters can be left out completely.
  3. Need to explain how to leave gaps in a matrix as in the second example.
  4. Need to explain how d (Delimiter Function) interacts with matrices, if at all. For example, will a structure such as <m:d><m:e><m:m>... add a second lot of delimiters round the matrix?

[edit] 7.1.2.60 [26]

Replace "an" by "and".

[edit] 7.1.2.60 [6-7 on p5028]

The schema only allows <m:count> before <m:mcJc>: transpose lines 6 and 7.

[edit] 7.1.2.60 [15-20 on p5029]

Need to specify the default if mPr is omitted.

[edit] 7.1.2.62 [2-23 on p5031]

  1. Not all the defaults are specified under their respective elements. Need to specify what happens when the following are omitted: mathFont, lMargin, rMargin, defJc, preSp, postSp, interSp, intraSp.
  2. Need to specify what happens if both wrapIndent and wrapRight are omitted.
  3. Need to specify how the various settings interact with each other, e.g. lMargin and rMargin. What happens if rMargin gives a value to the left of the value for lMargin?

[edit] 7.1.2.63

Need to give diagrams to show how maxDist works, as in the Primer. Need to explain how it interacts with objDist.

[edit] 7.1.2.64 [12-13]

The schema only allows <m:count> before <m:mcJc>: transpose lines 12 and 13.

[edit] 7.1.2.65 [17-18]

The schema only allows <m:count> before <m:mcJc>: transpose lines 17 and 18.

[edit] 7.1.2.67 [6-7]

The schema only allows <m:count> before <m:mcJc>: transpose lines 6 and 7.

[edit] 7.1.2.69 [23-24]

The schema only allows <m:count> before <m:mcJc>: transpose lines 23 and 24.

[edit] 7.1.2.71 [3]

Replace "integral object" with "summation object".

[edit] 7.1.2.71 [attributes table]

Replace "limits on an integral." with "limits on an n-ary object that is not an integral."

[edit] 7.1.2.72 [26]

Need to specify what the "type of n-ary operator" means.

[edit] 7.1.2.72 [3-12 on p5044]

Need to specify the defaults, e.g. what is the chr if chr is omitted?

[edit] 7.1.2.78 [13]

Delete 'maxOccurs="1"' as this is the default and is not given in the schema.

[edit] 7.1.2.78 [14]

Delete 'minOccurs="1"' as this is the default and is not given in the schema.

[edit] 7.1.2.78 [15-22]

Need to explain what these lines are used for. m:annotation and m:context, m:content don't appear to be in the namespace.

[edit] 2.1.2.79 [7]

Delete 'maxOccurs="1"' as this is the default and is not given in the schema.

[edit] 7.1.2.80 [12]

Need to specify what the properties of an operator are. Two properties are given in the text as examples. What are the others?

[edit] 7.1.2.81

The use of phantoms needs to be explained better. The examples in the Primer need to be shown together with the xml that was used to produce them. Otherwise it's almost impossible to work out how they work if you don't know. The explanation needs to be in the normative part.

Need to explain some of the terms used: glyph, ascent, descent.

[edit] 7.1.2.83 [20]

The two matrices shown look identical. One should show placeholders and the other one shouldn't. Neither do.

[edit] 7.1.2.84

Change the name to "Position" as bar is used for groupChrPr as well as bar. The descriptive text needs changing to reflect its use.

[edit] 7.1.2.92

The example in line 22 with a spacing of 1.6 does not match the xml which gives a spacing of 3 lines. How do you get 1.6 and what are the units?

[edit] 7.1.2.94 [10]

Replace left curly quotes with straight quotes: <m:scr m:val="double-struck"/>

[edit] 7.1.2.97

The name "shape" is not a good choice. This element only affects the height and location of the delimiter, not its shape. Maybe "height" would be better.

[edit] 7.1.2.105 [9]

The description refers to sSub instead of sSup. Change the start of the line to: "This element specifies the superscript function sSup,..."

[edit] 7.4.2.4 [p5122, bstr]

The presence of non-XML characters, escaped, or not escaped in an OOXML document, is contrary to interoperability of XML and XML-based tools. The W3C's Internationalization Activity confirms this interpretation, saying “Control codes should be replaced with appropriate markup. Since XML provides a standard way of encoding structured data, representing control codes other than as markup would undo the actual advantages of using XML. Use of control codes in HTML and XHTML is never appropriate, since these markup languages are for representing text, not data.”

Proposed change: Remove the bstr type from OOXML

[edit] 7.4.2.4 [p5122, bstr escape mechanism]

This defines a new XML string type which allows the inclusion via an escape mechanism of Unicode characters which are otherwise impermissible in XML documents. However, any escape mechanism must also specify a mechanism for “escaping the escape”. So, how does one represent the literal example given in 7.4.2.4 in a bstr?

Proposed change: Complete the definition of the escape mechanism.

[edit] 7.4.2.5 [p5122]

It doesn't make sense for us to be specifying strings as null-terminated C-style strings and then to base-64 encode that. That is avoiding XML and will cause the markup to interoperate poorly with XML-based tools.

Proposed change: Ecma should rethink the entire Clipboard Data representation. It looks very much like it is mapping directly to the arbitrary internals of a single application. This clause should be rewritten to express this feature in an application and platform neutral way.

[edit] 7.4.2.5 [p5122, GUID and FMTID]

The value of -3 specifies a GUID that contains a format identifier (FMTID). The required format for neither a GUID nor a FMTID is specified.

Proposed change: Specify this so interoperability may be achieved.

[edit] 7.4.2.5 [p5122, platforms]

This element defines values for use on Windows and Macintosh platforms, but not for Linux or any other operating system.

Proposed change: Several options here, but the desire is to allow cross platform interoperability.

[edit] 7.4.2.5 [p5122, platform interoperability]

Even within a single platform, there is not enough information given to achieve interoperability. For example, what are the allowed values and meanings for a “built-in Windows clipboard format value”?

Proposed change: Specify adequate information so interoperability may be achieved.

Personal tools