Beyond the basics
It's interesting to see the varying emotions people have had in reaction to the standardization of the Office Open XML formats. It was obviously an immense amount of work, and it resulted in a 6,000 page standard. As you all know by now, the reason there was so much information in the specification was that we absolutely had to ensure that all the information people currently had in their existing set of Office binary documents could be ported over into the new format (with no loss).
In addition to that, we wanted to make sure we did our best to ensure that anyone coming trying to build support for the OpenXML formats in their solution had all the information they would need for consuming and producing those documents. This meant we had to go beyond the basics, and document all the pieces of the format we could. This is where you start to see the differences between the approach taken with the ODF standard and the OpenXML standard. In the ODF standard, the decision was made to leave a lot of the pieces out of the standard and to instead have them be application defined. This means you have a simpler standard, but it also means that interoperability is much more difficult to achieve. Let me explain:
As you start to document a specific feature in a file format, you have a few choices:
- Fully document – This means you define the syntax for representing the feature, and all the information people would need to interpret it.
- Pros: Everyone can build support for the feature using the specification.
- Cons: None really (other than it makes the spec bigger)
- Partially document – This means you define the syntax for representing the feature, but don't provide all the details for implementation.
- Pros: If two application already have the behavior, it means they have a prescribed method for persisting that in the file format. So while the spec doesn't tell you how to implement the behavior, it does help you interoperate with others who already know the behavior.
- Cons: It's not as interoperable as when you fully document something, but it still allows for more interoperability than the next approach.
- Application defined – This means you allow the specification to be extended by an implementer to represent the feature as they choose. Usually you provide a way in which they can use their own namespace for identifying it as not being part of the standard but instead an extension.
- Pros: This is the only option to account for things not yet in use when the standard was written.
- Cons: There is no way to interoperate using the spec. You need to look at the implementation for any applications you will be interacting with and see how they extended the spec.
One of the sections people have been wondering about in the Open XML spec is section 2.15 in part 4 (Markup Language Reference). That section defines a couple hundred document level settings. Some of for application behaviors like "don't check spelling." Others are for display behaviors like "show gridlines on tables." And others are for layout behaviors like "align tables row by row."
The important thing for people to realize is that many of these settings are common in a number of Wordprocessing applications. KOffice, OpenOffice, and Microsoft Office all have a similar set of document settings. In ODF, they took the "application defined" approach for the settings, rather than either partially or fully documenting (similar to the original approach with spreadsheet formulas). So, if you save out a blank text document or spreadsheet from OpenOffice you'll get the following set of extended properties, and not a single one of these appear in the ODF standard (many of these directly impact the interoperability of the document in terms of layout and display):
OpenOffice extensions to ODF standard using the https://openoffice.org/2004/office namespace
Name | Type | Primary Use | Interoperability | Section in Spec |
ActiveTable | string | App Behavior | Application Defined | N/A |
AddExternalLeading | boolean | View | Application Defined | N/A |
AddFrameOffsets | boolean | View | Application Defined | N/A |
AddParaSpacingToTableCells | boolean | View | Application Defined | N/A |
AddParaTableSpacing | boolean | Layout | Application Defined | N/A |
AddParaTableSpacingAtStart | boolean | Layout | Application Defined | N/A |
AlignTabStopPosition | boolean | Layout | Application Defined | N/A |
AllowPrintJobCancel | boolean | App Behavior | Application Defined | N/A |
ApplyUserData | boolean | View | Application Defined | N/A |
AutoCalculate | boolean | Display | Application Defined | N/A |
CharacterCompressionType | short | Layout | Application Defined | N/A |
ChartAutoUpdate | boolean | Display | Application Defined | N/A |
ClipAsCharacterAnchoredWriterFlyFrames | boolean | ??? | Application Defined | N/A |
ConsiderTextWrapOnObjPos | boolean | Layout | Application Defined | N/A |
CurrentDatabaseCommand | string | Data | Application Defined | N/A |
CurrentDatabaseCommandType | int | Data | Application Defined | N/A |
CurrentDatabaseDataSource | string | Data | Application Defined | N/A |
DoNotCaptureDrawObjsOnPage | boolean | Display | Application Defined | N/A |
DoNotJustifyLinesWithManualBreak | boolean | View | Application Defined | N/A |
DoNotResetParaAttrsForNumFont | boolean | Display | Application Defined | N/A |
FieldAutoUpdate | boolean | Display | Application Defined | N/A |
GridColor | long | Display | Application Defined | N/A |
HasColumnRowHeaders | boolean | Display | Application Defined | N/A |
HasSheetTabs | boolean | App Behavior | Application Defined | N/A |
HorizontalScrollbarWidth | int | App Behavior | Application Defined | N/A |
IgnoreFirstLineIndentInNumbering | boolean | Display | Application Defined | N/A |
IgnoreTabsAndBlanksForLineCalculation | boolean | Display | Application Defined | N/A |
InBrowseMode | boolean | App Behavior | Application Defined | N/A |
IsKernAsianPunctuation | boolean | Display | Application Defined | N/A |
IsLabelDocument | boolean | App Behavior | Application Defined | N/A |
IsOutlineSymbolsSet | boolean | Display | Application Defined | N/A |
IsRasterAxisSynchronized | boolean | Display | Application Defined | N/A |
IsSelectedFrame | boolean | App Behavior | Application Defined | N/A |
IsSnapToRaster | boolean | Display | Application Defined | N/A |
LinkUpdateMode | short | App Behavior | Application Defined | N/A |
LoadReadonly | boolean | App Behavior | Application Defined | N/A |
OutlineLevelYieldsNumbering | boolean | Display | Application Defined | N/A |
PageViewZoomValue | int | View | Application Defined | N/A |
PrintAnnotationMode | short | Printing | Application Defined | N/A |
PrintBlackFonts | boolean | Printing | Application Defined | N/A |
PrintControls | boolean | Printing | Application Defined | N/A |
PrintDrawings | boolean | Printing | Application Defined | N/A |
PrintEmptyPages | boolean | Printing | Application Defined | N/A |
PrinterIndependentLayout | string | Printing | Application Defined | N/A |
PrinterName | string | Printing | Application Defined | N/A |
PrinterSetup | base64Binary | Printing | Application Defined | N/A |
PrintFaxName | string | Printing | Application Defined | N/A |
PrintGraphics | boolean | Printing | Application Defined | N/A |
PrintLeftPages | boolean | Printing | Application Defined | N/A |
PrintPageBackground | boolean | Printing | Application Defined | N/A |
PrintPaperFromSetup | boolean | Printing | Application Defined | N/A |
PrintProspect | boolean | Printing | Application Defined | N/A |
PrintReversed | boolean | Printing | Application Defined | N/A |
PrintRightPages | boolean | Printing | Application Defined | N/A |
PrintSingleJobs | boolean | Printing | Application Defined | N/A |
PrintTables | boolean | Printing | Application Defined | N/A |
RasterIsVisible | boolean | Display | Application Defined | N/A |
RasterResolutionX | int | Display | Application Defined | N/A |
RasterResolutionY | int | Display | Application Defined | N/A |
RasterSubdivisionX | int | Display | Application Defined | N/A |
RasterSubdivisionY | int | Display | Application Defined | N/A |
RedlineProtectionKey | base64Binary | ??? | Application Defined | N/A |
SaveGlobalDocumentLinks | boolean | Data | Application Defined | N/A |
SaveVersionOnClose | boolean | Data | Application Defined | N/A |
ShowGrid | boolean | Display | Application Defined | N/A |
ShowNotes | boolean | Display | Application Defined | N/A |
ShowPageBreakPreview | boolean | Display | Application Defined | N/A |
ShowPageBreaks | boolean | Display | Application Defined | N/A |
ShowRedlineChanges | boolean | Display | Application Defined | N/A |
ShowZeroValues | boolean | Display | Application Defined | N/A |
TableRowKeep | boolean | Display | Application Defined | N/A |
UpdateFromTemplate | boolean | App Behavior | Application Defined | N/A |
UseFormerLineSpacing | boolean | Display | Application Defined | N/A |
UseFormerObjectPositioning | boolean | Display | Application Defined | N/A |
UseFormerTextWrapping | boolean | Display | Application Defined | N/A |
UseOldNumbering | boolean | Display | Application Defined | N/A |
ViewAreaHeight | int | View | Application Defined | N/A |
ViewAreaLeft | int | View | Application Defined | N/A |
ViewAreaTop | int | View | Application Defined | N/A |
ViewAreaWidth | int | View | Application Defined | N/A |
ViewId | string | View | Application Defined | N/A |
ViewLeft | int | View | Application Defined | N/A |
ViewTop | int | View | Application Defined | N/A |
VisibleAreaHeight | int | View | Application Defined | N/A |
VisibleAreaLeft | int | View | Application Defined | N/A |
VisibleAreaTop | int | View | Application Defined | N/A |
VisibleAreaWidth | int | View | Application Defined | N/A |
VisibleBottom | int | View | Application Defined | N/A |
VisibleLeft | int | View | Application Defined | N/A |
VisibleRight | int | View | Application Defined | N/A |
VisibleTop | int | View | Application Defined | N/A |
ZoomFactor | short | View | Application Defined | N/A |
ZoomType | short | View | Application Defined | N/A |
ZoomValue | int | View | Application Defined | N/A |
If you were to use KOffice to open the document, it wouldn't understand any of these settings as they are all in the https://openoffice.org/2004/office namespace and not defined in the ODF standard. The OpenOffice folks most likely document many of these on their own site so KOffice could use that material when trying for interoperability, but at that point they've had to go beyond the ISO standard and start to rely on application specific information that OASIS and ISO have no say over.
In KOffice they also have document settings (although it doesn't appear to be nearly as much as OpenOffic) So with KOffice, you would get a different set of properties (here are a few I found):
KOffice extensions to ODF standard using empty namespace
Name | Type | Primary Use | Interoperability | Section in Spec |
unit | string | App Behavior | Application Defined | N/A |
SpellCheckerIgnoreList | string | App Behavior | Application Defined | N/A |
displaylink | boolean | View | Application Defined | N/A |
underlinelink | boolean | View | Application Defined | N/A |
displaycomment | boolean | View | Application Defined | N/A |
displayfieldcode | boolean | View | Application Defined | N/A |
lastPrintingDate | string | Data | Application Defined | N/A |
creationDate | string | Data | Application Defined | N/A |
modificationDate | string | Data | Application Defined | N/A |
Settings in OpenXML
Let's compare that with the OpenXML specification where the large majority are fully documented, and only a few are partially documented (none are application defined). Also note that all of these are completely optional for implementation, and even within Microsoft Office we try to move our customers toward turning many of them off (especially the application specific legacy behaviors). Obviously there may be more settings out there in other applications than what we've specified, and the spec is fully extensible to allow for those as well. We wanted to try to cover all of those currently in use, and as we find new ones we can add them to the spec if needed:
Name | Type | Primary Use | Interoperability | Section in Spec |
activeWritingStyle | complex type | App Behavior | Fully Documented | 2.15.1.01 |
adjustLineHeightInTable | Boolean | Layout | Fully Documented | 2.15.3.01 |
alignBordersAndEdges | Boolean | Display | Fully Documented | 2.15.1.02 |
alignTablesRowByRow | Boolean | Layout | Fully Documented | 2.15.3.02 |
allowSpaceOfSameStyleInTable | Boolean | Layout | Fully Documented | 2.15.3.03 |
alwaysMergeEmptyNamespace | Boolean | App Behavior | Fully Documented | 2.15.1.03 |
alwaysShowPlaceholderText | Boolean | Display | Fully Documented | 2.15.1.04 |
applyBreakingRules | Boolean | Layout | Fully Documented | 2.15.3.04 |
attachedSchema | String | Data | Fully Documented | 2.15.1.05 |
attachedTemplate | relationship | App Behavior | Fully Documented | 2.15.1.06 |
autofitToFirstFixedWidthCell | Boolean | Layout | Fully Documented | 2.15.3.05 |
autoFormatOverride | Boolean | App Behavior | Fully Documented | 2.15.1.09 |
autoHyphenation | Boolean | Display | Fully Documented | 2.15.1.10 |
autoSpaceLikeWord95 | Boolean | Layout | Partially Documented | 2.15.3.06 |
balanceSingleByteDoubleByteWidth | Boolean | Layout | Fully Documented | 2.15.3.07 |
bookFoldPrinting | Boolean | Printing | Fully Documented | 2.15.1.11 |
bookFoldPrintingSheets | Integer | Printing | Fully Documented | 2.15.1.12 |
bookFoldRevPrinting | Boolean | Printing | Fully Documented | 2.15.1.13 |
bordersDoNotSurroundFooter | Boolean | Display | Fully Documented | 2.15.1.14 |
bordersDoNotSurroundHeader | Boolean | Display | Fully Documented | 2.15.1.15 |
cachedColBalance | Boolean | Layout | Fully Documented | 2.15.3.08 |
captions | CT_Captions | Display | Fully Documented | 2.15.1.17 |
characterSpacingControl | CT_CharacterSpacing | Layout | Fully Documented | 2.15.1.18 |
clickAndTypeStyle | String | App Behavior | Fully Documented | 2.15.1.19 |
clrSchemeMapping | complex type | Display | Fully Documented | 2.15.1.20 |
consecutiveHyphenLimit | Integer | Display | Fully Documented | 2.15.1.21 |
convMailMergeEsc | Boolean | Display | Fully Documented | 2.15.3.10 |
decimalSymbol | String | Data | Fully Documented | 2.15.1.22 |
defaultTableStyle | String | Display | Fully Documented | 2.15.1.23 |
defaultTabStop | Integer | Display | Fully Documented | 2.15.1.24 |
displayBackgroundShape | Boolean | Display | Fully Documented | 2.15.1.25 |
displayHangulFixedWidth | Boolean | Layout | Fully Documented | 2.15.3.11 |
displayHorizontalDrawingGridEvery | Integer | Display | Fully Documented | 2.15.1.26 |
displayVerticalDrawingGridEvery | Integer | Display | Fully Documented | 2.15.1.27 |
documentProtection | CT_DocProtect | App Behavior | Fully Documented | 2.15.1.28 |
documentType | CT_DocType | App Behavior | Fully Documented | 2.15.1.29 |
docVars | CT_DocVars | App Behavior | Fully Documented | 2.15.1.31 |
doNotAutoCompressPictures | Boolean | App Behavior | Fully Documented | 2.15.1.32 |
doNotAutofitConstrainedTables | Boolean | Layout | Fully Documented | 2.15.3.12 |
doNotBreakConstrainedForcedTable | Boolean | Layout | Fully Documented | 2.15.3.13 |
doNotBreakWrappedTables | Boolean | Layout | Fully Documented | 2.15.3.14 |
doNotDemarcateInvalidXml | Boolean | App Behavior | Fully Documented | 2.15.1.33 |
doNotDisplayPageBoundaries | Boolean | Display | Fully Documented | 2.15.1.34 |
doNotEmbedSmartTags | Boolean | App Behavior | Fully Documented | 2.15.1.35 |
doNotExpandShiftReturn | Boolean | Layout | Fully Documented | 2.15.3.15 |
doNotHyphenateCaps | Boolean | Display | Fully Documented | 2.15.1.36 |
doNotIncludeSubdocsInStats | Boolean | App Behavior | Fully Documented | 2.15.1.37 |
doNotLeaveBackslashAlone | Boolean | Display | Fully Documented | 2.15.3.16 |
doNotShadeFormData | Boolean | App Behavior | Fully Documented | 2.15.1.38 |
doNotSnapToGridInCell | Boolean | Layout | Fully Documented | 2.15.3.17 |
doNotSuppressIndentation | Boolean | Layout | Fully Documented | 2.15.3.18 |
doNotSuppressParagraphBorders | Boolean | Display | Fully Documented | 2.15.3.19 |
doNotTrackFormatting | Boolean | App Behavior | Fully Documented | 2.15.1.39 |
doNotTrackMoves | Boolean | App Behavior | Fully Documented | 2.15.1.40 |
doNotUseEastAsianBreakRules | Boolean | Layout | Fully Documented | 2.15.3.20 |
doNotUseHTMLParagraphAutoSpacing | Boolean | Layout | Fully Documented | 2.15.3.21 |
doNotUseIndentAsNumberingTabStop | Boolean | Layout | Fully Documented | 2.15.3.22 |
doNotUseMarginsForDrawingGridOrigin | Boolean | Layout | Fully Documented | 2.15.1.41 |
doNotValidateAgainstSchema | Boolean | App Behavior | Fully Documented | 2.15.1.42 |
doNotVertAlignCellWithSp | Boolean | Layout | Fully Documented | 2.15.3.23 |
doNotVertAlignInTxbx | Boolean | Layout | Fully Documented | 2.15.3.24 |
doNotWrapTextWithPunct | Boolean | Layout | Fully Documented | 2.15.3.25 |
drawingGridHorizontalOrigin | Integer | Layout | Fully Documented | 2.15.1.43 |
drawingGridHorizontalSpacing | Integer | Layout | Fully Documented | 2.15.1.44 |
drawingGridVerticalOrigin | Integer | Layout | Fully Documented | 2.15.1.45 |
drawingGridVerticalSpacing | Integer | Layout | Fully Documented | 2.15.1.46 |
footnoteLayoutLikeWW8 | Boolean | Layout | Partially Documented | 2.15.3.26 |
forceUpgrade | CT_Empty | App Behavior | Fully Documented | 2.15.1.47 |
forgetLastTabAlignment | Boolean | Layout | Fully Documented | 2.15.3.27 |
formsDesign | Boolean | App Behavior | Fully Documented | 2.15.1.48 |
growAutofit | Boolean | Layout | Fully Documented | 2.15.3.28 |
gutterAtTop | Boolean | Layout | Fully Documented | 2.15.1.49 |
hdrShapeDefaults | complex type | Layout | Fully Documented | 2.15.1.50 |
hideGrammaticalErrors | Boolean | App Behavior | Fully Documented | 2.15.1.51 |
hideSpellingErrors | Boolean | App Behavior | Fully Documented | 2.15.1.52 |
hyphenationZone | Integer | Layout | Fully Documented | 2.15.1.53 |
ignoreMixedContent | Boolean | App Behavior | Fully Documented | 2.15.1.54 |
layoutRawTableWidth | Boolean | Layout | Fully Documented | 2.15.3.29 |
layoutTableRowsApart | Boolean | Layout | Fully Documented | 2.15.3.30 |
lineWrapLikeWord6 | Boolean | Layout | Partially Documented | 2.15.3.31 |
linkStyles | Boolean | App Behavior | Fully Documented | 2.15.1.55 |
listSeparator | String | Data | Fully Documented | 2.15.1.56 |
mirrorMargins | Boolean | Layout | Fully Documented | 2.15.1.57 |
mwSmallCaps | Boolean | Layout | Partially Documented | 2.15.3.32 |
noColumnBalance | Boolean | Layout | Fully Documented | 2.15.3.33 |
noExtraLineSpacing | Boolean | Layout | Fully Documented | 2.15.3.34 |
noLeading | Boolean | Layout | Fully Documented | 2.15.3.35 |
noLineBreaksAfter | CT_Kinsoku | Layout | Fully Documented | 2.15.1.58 |
noLineBreaksBefore | CT_Kinsoku | Layout | Fully Documented | 2.15.1.59 |
noPunctuationKerning | Boolean | Layout | Fully Documented | 2.15.1.60 |
noSpaceRaiseLower | Boolean | Layout | Fully Documented | 2.15.3.36 |
noTabHangInd | Boolean | Layout | Fully Documented | 2.15.3.37 |
printBodyTextBeforeHeader | Boolean | Printing | Fully Documented | 2.15.3.38 |
printColBlack | Boolean | Printing | Fully Documented | 2.15.3.39 |
printFormsData | Boolean | Printing | Fully Documented | 2.15.1.61 |
printFractionalCharacterWidth | Boolean | Printing | Fully Documented | 2.15.1.62 |
printPostScriptOverText | Boolean | Printing | Fully Documented | 2.15.1.63 |
printTwoOnOne | Boolean | Printing | Fully Documented | 2.15.1.64 |
proofState | String | App Behavior | Fully Documented | 2.15.1.65 |
readModeInkLockDown | complex type | App Behavior | Fully Documented | 2.15.1.66 |
removeDateAndTime | Boolean | App Behavior | Fully Documented | 2.15.1.67 |
removePersonalInformation | Boolean | App Behavior | Fully Documented | 2.15.1.68 |
revisionView | complex type | Display | Fully Documented | 2.15.1.69 |
rsids | CT_DocRsids | Data | Fully Documented | 2.15.1.72 |
saveFormsData | Boolean | App Behavior | Fully Documented | 2.15.1.73 |
saveInvalidXml | Boolean | App Behavior | Fully Documented | 2.15.1.74 |
savePreviewPicture | Boolean | App Behavior | Fully Documented | 2.15.1.75 |
saveSubsetFonts | Boolean | App Behavior | Fully Documented | 2.15.1.76 |
saveThroughXslt | complex type | App Behavior | Fully Documented | 2.15.1.77 |
saveXmlDataOnly | Boolean | App Behavior | Fully Documented | 2.15.1.78 |
selectFldWithFirstOrLastChar | Boolean | App Behavior | Fully Documented | 2.15.3.40 |
shapeDefaults | complex type | Data | Fully Documented | 2.15.1.79 |
shapeLayoutLikeWW8 | Boolean | Layout | Partially Documented | 2.15.3.41 |
showBreaksInFrames | Boolean | Display | Fully Documented | 2.15.3.42 |
showEnvelope | Boolean | App Behavior | Fully Documented | 2.15.1.80 |
showXMLTags | Boolean | App Behavior | Fully Documented | 2.15.1.81 |
smartTagType | complex type | App Behavior | Fully Documented | 2.15.1.82 |
spaceForUL | Boolean | Layout | Fully Documented | 2.15.3.43 |
spacingInWholePoints | Boolean | Layout | Fully Documented | 2.15.3.44 |
splitPgBreakAndParaMark | Boolean | Layout | Fully Documented | 2.15.3.45 |
strictFirstAndLastChars | Boolean | Layout | Fully Documented | 2.15.1.83 |
styleLockQFSet | Boolean | App Behavior | Fully Documented | 2.15.1.84 |
styleLockTheme | Boolean | App Behavior | Fully Documented | 2.15.1.85 |
stylePaneFormatFilter | complex type | App Behavior | Fully Documented | 2.15.1.86 |
stylePaneSortMethod | complex type | App Behavior | Fully Documented | 2.15.1.87 |
subFontBySize | Boolean | Layout | Fully Documented | 2.15.3.46 |
summaryLength | Integer | App Behavior | Fully Documented | 2.15.1.88 |
suppressBottomSpacing | Boolean | Layout | Fully Documented | 2.15.3.47 |
suppressSpacingAtTopOfPage | Boolean | Layout | Fully Documented | 2.15.3.48 |
suppressSpBfAfterPgBrk | Boolean | Layout | Fully Documented | 2.15.3.49 |
suppressTopSpacing | Boolean | Layout | Fully Documented | 2.15.3.50 |
suppressTopSpacingWP | Boolean | Layout | Partially Documented | 2.15.3.51 |
swapBordersFacingPages | Boolean | Display | Fully Documented | 2.15.3.52 |
themeFontLang | CT_Language | Data | Fully Documented | 2.15.1.89 |
trackRevisions | Boolean | App Behavior | Fully Documented | 2.15.1.90 |
truncateFontHeightsLikeWP6 | Boolean | Layout | Partially Documented | 2.15.3.53 |
uiCompat97To2003 | Boolean | App Behavior | Partially Documented | 2.15.3.54 |
ulTrailSpace | Boolean | Display | Fully Documented | 2.15.3.55 |
underlineTabInNumList | Boolean | Display | Fully Documented | 2.15.3.56 |
updateFields | Boolean | Display | Fully Documented | 2.15.1.91 |
useAltKinsokuLineBreakRules | Boolean | Layout | Fully Documented | 2.15.3.57 |
useAnsiKerningPairs | Boolean | Layout | Fully Documented | 2.15.3.58 |
useFELayout | Boolean | Layout | Fully Documented | 2.15.3.59 |
useNormalStyleForList | Boolean | Display | Fully Documented | 2.15.3.60 |
usePrinterMetrics | Boolean | Display | Fully Documented | 2.15.3.61 |
useSingleBorderforContiguousCells | Boolean | Display | Fully Documented | 2.15.3.62 |
useWord2002TableStyleRules | Boolean | Display | Partially Documented | 2.15.3.63 |
useWord97LineBreakRules | Boolean | Layout | Partially Documented | 2.15.3.64 |
useXSLTWhenSaving | Boolean | App Behavior | Fully Documented | 2.15.1.92 |
view | complex type | Display | Fully Documented | 2.15.1.93 |
wpJustification | Boolean | Layout | Partially Documented | 2.15.3.65 |
wpSpaceWidth | Boolean | Layout | Partially Documented | 2.15.3.66 |
wrapTrailSpaces | Boolean | Layout | Fully Documented | 2.15.3.67 |
writeProtection | complex type | App Behavior | Fully Documented | 2.15.1.94 |
zoom | complex type | Display | Fully Documented | 2.15.1.95 |
-Brian
Comments
Anonymous
February 20, 2007
You have done what appears to be some thoughtful research on the issue, will you be sending this back to the ODF team ? This would have been valuable feedback during the development of ODF 1.0 and might still be. The ODF team seems to be open to external input and I am sure they would at least pay attention to your input.Anonymous
February 20, 2007
I also noticed this recent blog article that covers the same subject a bit more opinionated: http://ooxmlhoaxes.blogspot.com/2007/02/ooxml-hoax-3-standard-requires-cloning.html @Scot I think the Ecma would have wished for some the input that was given to their final draft and the standardized version a in a bit earlier sstage as well earlier as well. Especially a lot of the minor or non-issues found by Groklaw that could have been dealt with with minor changes or a better explanation in the spec.Anonymous
February 20, 2007
It seems that the OOXML spec might have suggested that these tags next to trying to emulate rendering can alternativly be used to inform a user that a converted document might be created using a application that used an alternative rendering for <fill in item description>. That is a much easier to implement and will suffice for virtually all implementaions and converted documents.Anonymous
February 21, 2007
It's nice to see how Microsoft changed since the time (no so long ago) when they did all they could to AVOID interoperability (remember Java, IE behaviour, ActiveX... ?). Now Microsoft has become the champion of interoperabity, and decided to create OOXML because they were deceived by the poor interoperability offered by ODF. Thank you, Microsoft.Anonymous
February 21, 2007
The comment has been removedAnonymous
February 21, 2007
@Ben How much comments did you see before the 1.4 final draft was released. Strangly the 1.3 draft (which was released to ISO in may 2006) or even the earlier versions was much less commented on. Especially IBM seemed to have a 'small' team working on looking at possible issues in the specs and blogging about it (or Rob is really good). Simular to I guess Brian probalby has some people that researched this article But those issues were mostly mentioned after the release of the final draft and I do think that the Office release was indeed a mayby to important date to strive for to make any more changes after that because it would have delayed the spec for a minimum of 6 months.Anonymous
February 21, 2007
Dans la guerre des formats entre ODF et Open XML, il est dur de trouver de l'information fiable et surtoutAnonymous
February 27, 2007
I just noticed that Rob Weir has reacted to this post. He asks himself how an application can define it's own application defined settings that are not part of section 2.15 of the OOXML specs. A good point. I think he must have missed that in OOXML you can add custom tags simular to ODF office settings. However in OOXML custom tags require a custom schemaname. That at least provides a source for the custom tags and makes them unique. The custum config items in ODF's office settings do not have a source so you cannot see what they do nor can you see which application added them to the ODF file nor are config items unique. application can create duplicate office settings names in ODF. This makes them inoperable by design. It does leave a question for Brian why OOXML did not put the 2.15 section tags into it's custom tags together with adding a custom MS Office schema for the items ?Anonymous
February 28, 2007
Unfortunately I haven't had the time lately to catch up on any of Rob Wier's posts. He seems to like have gone further and further into the theoretical arena, while I like to stay more practical. Otherwise it just becomes a huge waste of time. I have limited cycles in the day to focus on file formats, and I'd much rather spend that time discussing the goals behind real world scenarios. Let's look at those goals and then determine whether or not the technologies in question can meet them. We aren't philosophers; we're geeks who build software to solve people's problems… In response to your question though, there are a number of ways in which applications can extend the schema, and they are all very well documented between parts 4 and 5 of the standard. The extensions are there not just for other folks implementing the standard, but also to allow future versions of the standard to stay compliant with version 1.0. That way we won't break any existing solutions when version 2.0 is released. -BrianAnonymous
May 22, 2007
Hi, Maybe you have read about projects for supporting UOF . Similar approach to the ODF support. YouAnonymous
July 21, 2007
For those of you not only reading my blog, but also the other content provided by the Info Support blog