OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

office-collab message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Prototyping


It would be optimal if we would be able to finish our specification end of this year, to allow all major ODF application vendors sufficient time to implement change-tracking in their upcoming major releases. Especially for MSO16 this would be desirable as in all previous office versions all ODF change-tracking information gets lost after loading & saving an ODF document.

Therefore I would like to suggest to initiate a common start of prototyping.
At least from Camilla (Calligra) and Oliver (Apache OpenOffice) I have heard that they were interested in prototyping, Jos should be curious as he created once WebODF and perhaps John might interested to test and improve compatibility to OOXML as soon as possible.
In addition I do believe it would be very helpful to have face2face meetings to discuss problems on a white board and therefore I would recommend to meet informally at an ODF plugfest, other suggestions are welcome.

When start prototyping I would like to drop the complexity of saving the operations and all related design decisions for the beginning.
Instead I would like to focus on the design of the operations themselves and the analysis of the properties they are changing. (Sometimes an abstraction from the ODF XML is helpful as later shown for ODF lists).

As discussed on our call most important for users is the insertion of text.
A method signature might look like:
    addText(List<Integer> startPosition, String text)

NOTE: I am using Java method syntax to draft the signature of an operation, but a signature as above might be easily serialized to an explicit invocation of
adding the text "Hello world!" to
    <add type="text" s="/1/1">Hello World!</add>

Text can not stand alone in an ODF document. In general text is contained in a paragraph, so we need an operation to add one:
    addParagraph(List<Integer> start)
for instance
    <add type="paragraph" s="/1"/>
or for convenience in one
    <add type="paragraph" s="/1">Hello World!</add>

A first step, might be to create such operations with your ODF application, while loading the document (some further details) and using the same operations to be applied on an empty document to create the original. Some kind of round-trip through the operation domain.
And when doing so, some further operations are close to obvious:
A heading is only a paragraph with an outline level. The outline level just a property on the paragraph.
For instance,
    <text:h text:outline-level="1">MyHeading</text:h>
would become
    <add type="paragraph" s="/1" outlineLevel="1">MyHeading</add>
or as signature
    addParagraph(List<Integer> startPosition, String text, Map properties)
(NOTE: For ease of use, I simply add a map to the paragraph with the XML local name in camel case as key and the attribute value as map value.)

Usually styles would now follow (like a nested map containing text and paragraph properties as maps), but lists are currently being discussed on the ODF TC list, I would like to ask you about lists.
Lists - as discussed on our last call - can be seen as paragraphs. The question is what additional list properties are required on a paragraph to represent a list?
Remember the idea is that there are only paragraphs with properties to allow an efficient transformation between heading, list-item-paragraphs and paragraphs.

The mapping is not easy, quite impossible without trying it on a living document without a prototype and therefore I need your cooperation on this.
As initial draft of test documents, I may offer

https://dl.dropbox.com/u/49473263/ListStyleResolution.odt
https://dl.dropbox.com/u/49473263/ContinueListTest.odt
https://dl.dropbox.com/u/49473263/ListStyleResolution-PreliminaryDraft.odt

All valid ODF 1.2, manual edited and ContinueListTest.odt uses as well some @text:continue-list from within a list to see if some application response to it.

PS: Dennis already pointed me to the OIC TC Subversion test suite repository, I will switch to that but for now the copy/paste of URLs from my local PC is far easer. But  in the future the OIC TC repository would be an appropriate place to store common test documents (Perhaps we can switch to Github, but this should be not of concern now ;) )

Best regards,
Svante




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]