As we finish up ODF 1.2 we should pay particular attention to how the
conformance clauses of each relate. This is especially important as
conformance in ODF 1.2 is more finely structured than it was with ODF 1.1.
Along with different conformance "targets" (Documents, Producers,
Consumers) we also have conformance "levels" in OpenFormula (large, medium
and small) and conformance "classes" in Parts I and III (normal versus
Extended conformance). We need to ensure that it is clear how the
conformance of the parts relate to each other.
The structure of conformance in ODF 1.2, Part I looks like this:
We have three top-level conformance targets:
Conforming OpenDocument Documents
Conforming OpenDocument Producers
Conforming OpenDocument Consumer
The document conformance defines the requirements that are statically
testable, such as RNG validity and other structural constraints. And the
Producer/Consumer targets state the dynamic, runtime or behavioral
requirements.
This structure is echoed in Part II, although it is not as explicit as it
needs to be in the latest draft. But there is an intent to express static
as well as dynamic conformance, which we can call conformance targets:
OpenFormula Expression
OpenFormula Evaluator
There are also conformance levels of "small", "medium" and "large" apply
to each of these conformance targets. For example, the "medium" level
permits a larger range of functions than the "small" level.
And Part III defines conformance for:
Conforming OpenDocument Packages
Conforming OpenDocument Package Producer
Conforming OpenDocument Package Consumer
This also partitions the static and the dynamic requirements.
There are other conformance targets, dealing with "extended" documents and
specialized document types like spreadsheets", but let's make sure we have
things hooked up properly for these core conformance targets first. In
particular we want to make sure that this static/dynamic or
structural/behavioral distinction is respected as we define how
conformance relates among the parts.
For example, in Part I, 1.4.2.1 we say:
"(D1.1)If the document is an OpenDocument package, then
(D1.1.1)it shall be a conforming ODF package as defined by the
OpenDocument specification part 3: Packages,"
This is good, since the draft of Part III defines the requirements of a
"conforming OpenDocument package". We probably want to put "conforming
OpenDocument package" in italics as a conformance target name. Since this
is a normative reference, we should also make sure that Part I formally
references Parts II and III.
However, "Conforming OpenDocument Package Producer" does not reference
"Conforming OpenDocument Package Producer" at all, so it does not trigger
those requirements. This seems like an error.
Similarly "Conforming OpenDocument Consumer" does not refer to "Conforming
OpenDocument Package Consumer".
So in those two cases we have Part III conformance targets that are
orphaned. Nothing refers to them.
Would it help if we deprecated or removed the single-XML file option from
ODF 1.0/1.1? Does anyone actually support that today? It would be a lot
simpler to be able to say that a conforming ODF document is always a
conforming Package, etc.
Part I also defines specialized document conformance targets for each of
the major ODF document types:
Conforming OpenDocument Text Document
Conforming OpenDocument Spreadsheet Document
Conforming OpenDocument Drawing Document
Conforming OpenDocument Presentation Document
Conforming OpenDocument Chart Document
Conforming OpenDocument Image Document
Each of these conformance targets inherits the requirements of "Conforming
OpenDocument Documents" and adds requirements that the document be
harmoniously typed according to the target, specifically:
1. office:mimetype must match the document type
2. mimetype file in the package must match the document type
3. The child element of