incubator-odf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From robw...@apache.org
Subject svn commit: r1161761 [1/2] - in /incubator/odf/site/trunk/content/odftoolkit: GSoC/ odfdom/ simple/
Date Thu, 25 Aug 2011 21:23:20 GMT
Author: robweir
Date: Thu Aug 25 21:23:19 2011
New Revision: 1161761

URL: http://svn.apache.org/viewvc?rev=1161761&view=rev
Log:
Added remaining Wiki files.  Note these have not been converted to mdtext yet.  They are in mediawiki text format.

Added:
    incubator/odf/site/trunk/content/odftoolkit/GSoC/
    incubator/odf/site/trunk/content/odftoolkit/GSoC/2010soclogo.jpg   (with props)
    incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ApplicationTemplate.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ProjectIdeas.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/CodeGenRepo.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/ConvenienceLayerDesignIdeas.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/Development.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/FrequentQuestions.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/Home.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/Layers.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/MavenRepository.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/MultipleVersions.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Class-Structure.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Code-Generator.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-New-Layered-Model.png   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/ODF_Package.jpg   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/ProjectOverview.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/ReleaseNotes.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/Table_fruits_diagramm.jpg   (with props)
    incubator/odf/site/trunk/content/odftoolkit/odfdom/WhoWeAre.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/simple/APIChangesFrom086.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/simple/Home.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/simple/PackageLayer.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/simple/ProjectRoadmap.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/simple/Requirements.mdtext   (with props)
    incubator/odf/site/trunk/content/odftoolkit/simple/simple_odf_structure.jpg   (with props)

Added: incubator/odf/site/trunk/content/odftoolkit/GSoC/2010soclogo.jpg
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/GSoC/2010soclogo.jpg?rev=1161761&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/odf/site/trunk/content/odftoolkit/GSoC/2010soclogo.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,19 @@
+=Google Summer of Code 2010=
+
+The 2010 edition of the Google Summer of Code has been announced, and we are currently building the mentor application to submit the ODF Toolkit project to participate on GSoC the fist time in our history.  [[image: 2010soclogo.jpg|right]] 
+
+Information for Prospective Students:
+
+* Prospective students make certain you are [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#student_eligibility eligible to participate].
+* Read Google's Summer of Code [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs FAQs].
+* If you are looking for project ideas, check out [[GoogleSummerOfCode2010ProjectIdeas|Summer of Code 2010 Project Ideas]].
+* Please join in on our Community discussions and get community feedback before submitting to Google on the [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org] mailing list.
+
+Information for those wishing to Mentor:
+
+* Read Google's Summer of Code [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs FAQs].
+* Please join in on our Community discussions and interact with the prospective students on the [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org] mailing list.
+* Revise and provide your own [[GoogleSummerOfCode2010ProjectIdeas|Summer of Code 2010 Project Ideas]]
+* Email to the ODF Toolkit dev mailing list to apply [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org].
+
+The Mentoring Organisation application period begins March 8, 2010 and ends March 12, 2010. The list of accepted Mentoring Organisations will be announced on March 18, 2010 at 12 noon PDT / 19:00 UTC and will be posted on the Google Summer of Code 2010 site. The student application period begins March 29, 2010 at 12 noon PDT / 19:00 UTC and ends April 9, 2010 at 12:00 at 12 noon PDT / 19:00 UTC. Please see the Google Summer of Code 2010 timeline and FAQs for further information.

Propchange: incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ApplicationTemplate.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ApplicationTemplate.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ApplicationTemplate.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ApplicationTemplate.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,33 @@
+__TOC__
+
+=Google Summer Of Code 2010 Application Template=
+
+==Summer of Code Application Template==
+If you have any queries, please don't hesitate to contact the Summer of Code Project Administrator Svante Schubert (svanteschubert@ odftoolkit.org) or the development team at dev@odftoolkit.odftoolkit.org.
+
+==How and where to put this page after filling out==
+
+(Please fill in information on how-to)
+==Personal Details==
+
+* Name: James Bond
+* Email: James.Bond.007+ODF@gmail.com
+* IM: jamesbond+ODF@yahoo.com 
+
+==Project Proposal==
+
+If its from our list, or something you've come up with, propose the project here, and we'll see if we find a mentor that is interested.
+==Academic Experience
+
+What you're studying in university/college that is relevant, how you're doing in general, what your grades are like, etc. I have a previous MS in CS. Now I have been doing research in Bioinformatics and am doing my MSc at NTU, Singapore. I would like to get some experience in ODF in order to get more proficient in XML technologies later on for my research. I have over 5 years of tutoring experience and have done consulting work in IT for a couple of years. ( Web design, maintenance of web pages.) I have experience in XML and Java.
+==Work/Internship Experience==
+
+Anything relevant to the project, or even the computer science field in general. If you've bagged groceries, its probably not too relevant, but it shows that you can work in a colloborative environment! I have been tutoring at university level and done IT consulting work.
+
+
+==Open Source Development Experience==
+
+If experience exists, in any form (tiny 2 line patch to something obscure), tell us! We get very excited to see your capabilities. I helped with developing a suite for test cases in Java for one of my friends and hear that they are still using it in their company.
+==Brief list of deliverables==
+
+What/how much of the project you think you can complete, given the summer. I am not sure what I will be working on. When I do, I can be more specific. 

Propchange: incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ApplicationTemplate.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ProjectIdeas.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ProjectIdeas.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ProjectIdeas.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ProjectIdeas.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,136 @@
+=Google Summer of Code Ideas=
+__TOC__
+
+==Welcome Students!==
+Want to spend your summer contributing full-time to the ODF community, and get paid for it?
+The ODF Toolkit Union might give you ideas and opportunity to do so.
+
+Most ideas listed here have a contact person associated with them. Please get in touch with them earlier rather than later to develop your idea into a complete application. You can find many of them on Freenode's IRC network usually under the same username. If there is no contact information, please join the [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org] mailing list or #odftoolkit on the Freenode IRC network (ie. irc://freenode/odftoolkit), and we will work with you to find a mentor and discuss your idea.
+
+You don't have to apply for one of these ideas! You can come up with your own, and as long as it fits into the ODF Toolkit Union, we'll be happy to work with you to develop it. Remember, your project needs to have deliverables in less than 3 months of work in most cases. Be ambitious but not too ambitious ;)
+
+We will know whether ODF Toolkit Union is accepted by 18 March, and you can apply starting March 29 -- the earlier the better! 
+
+==Ideas==
+Discussions about these ideas should take place on the mailing list provided you might CC the contacts as well. Please go through the existing discussions about your idea in the mailing list archives before posting.
+
+===RDF Metadata Support for ODFDOM===
+New in ODF 1.2 is the ability to annotate parts of the document and the document itself with arbitrary metadata using the W3C RDF standard.
+
+This should be a new feature of the ODFDOM library.
+<h4>Skills</h4>
+* XML
+* Java
+* RDF
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* svanteschubert@ odftoolkit.org
+<h4>More Information</h4>
+* http://odftoolkit.org/projects/odfdom/pages/Home
+* http://blogs.sun.com/GullFOSS/entry/odfdom_0_8_the_new
+* http://blogs.sun.com/GullFOSS/entry/new_extensible_metadata_support_with
+----
+===OpenFormula Evaluator===
+New in ODF 1.2 is a spreadsheet formula language called OpenFormula.  One idea is to implement OpenFormula in Java.  A goal could be to make a strict interpretation of the ODF 1.2 standard and write code that would both act as a formula validator as well as a formula evaluator. 
+
+This should be a new feature of the ODFDOM library.
+<h4>Skills</h4>
+* Java
+* BNF
+* Parser generators, like JavaCC
+* Spreadsheets
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* rcweir@odftoolkit.org
+<h4>More Information</h4>
+* http://odftoolkit.org/projects/odfdom/pages/Home
+* http://www.oasis-open.org/committees/download.php/36768/OpenDocument-v1.2-part2-cd01.pdf
+----
+===Signature Support for ODFDOM===
+Part of the [http://docs.oasis-open.org/office/v1.2/part3/cd01/OpenDocument-v1.2-part3-cd01.html#a_4_Digital_Signatures_File ODF 1.2 Package specification] is the signing of documents.  
+Sources for typed DOM tree should be generated by our [new source generator] similar as done for ODFDOM DOM sources.
+The API and the test documents have to be created first with help from the dev list (see contact) according to the OIC TC discussed approach (see more information).
+
+This should be a new feature of the ODFDOM library.
+<h4>Skills</h4>
+* XML
+* Java
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* svanteschubert@odftoolkit.org
+<h4>More Information</h4>
+Regarding API and testing:
+* http://lists.oasis-open.org/archives/oic/201001/msg00043.html
+* http://lists.oasis-open.org/archives/oic/201002/msg00005.html
+* http://lists.oasis-open.org/archives/oic/201003/msg00008.html
+----
+===Encryption Support for ODFDOM===
+Part of the [http://docs.oasis-open.org/office/v1.2/part3/cd01/OpenDocument-v1.2-part3-cd01.html#a_4_Digital_Signatures_File ODF 1.2 Package specification] is the encryption of documents.  
+Sources for typed DOM tree should be generated for the manifest.xml by our [new source generator] similar as done for ODFDOM DOM sources.
+The API and the test documents have to be created first with help from the dev list (see contact) according to the OIC TC discussed approach (see more information).
+
+This should be a new feature of the ODFDOM library.
+<h4>Skills</h4>
+* XML
+* Java
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* svanteschubert@odftoolkit.org
+<h4>More Information</h4>
+Regarding API and testing:
+* http://lists.oasis-open.org/archives/oic/201001/msg00043.html
+* http://lists.oasis-open.org/archives/oic/201002/msg00005.html
+* http://lists.oasis-open.org/archives/oic/201003/msg00008.html
+----
+===ODFDOM API for Python/JPython===
+Generate a typed DOM API for Python by elaborating the Python code template and implementing the ZIP package access as part of the package layer.
+Laying the basement for further development, designing an ODFDOM Package and typed DOM API basic in design but with perhaps generic differences due to language differences.
+<h4>Skills</h4>
+* XML
+* Python
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* svanteschubert@odftoolkit.org
+----
+===ODFDOM API for Ruby/JRuby===
+Generate a typed DOM API for Ruby by elaborating a JRuby code template and implementing the ZIP package access as part of the package layer.
+Laying the basement for further development, designing an ODFDOM Package and typed DOM API basic in design but with perhaps generic differences due to language differences.  
+<h4>Skills</h4>
+* XML
+* Ruby
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* svanteschubert@odftoolkit.org
+----
+===ODFDOM API for .Net/C# ===
+Generate a typed DOM API for .Net with C# by elaborating a C# code template
+and implementing the ZIP package access as part of the package layer.
+Laying the basement for further development, designing an ODFDOM Package
+and typed DOM API basic in design but with perhaps generic differences
+due to language differences.
+<h4>Skills</h4>
+* XML
+* C#
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* darius.damalakas@odftoolkit.org
+----
+===Document generation library extensions for AODL library; .Net/C# ===
+A real world company has agreed to open-source code which is allows to
+populate documents with data. The library is based on Boo, a
+wrist-friendly python-like language for .Net, and is used a scripting
+language in .Net environment. The goal of the project would be
+three-fold:
+1. Reuse open-sourced code to create a new library AODL.Doc.Boo
+2. Enhance some of the features by making changes to both of the libraries.
+3. Ensure that performance requirements are met (to be detailed later)
+<h4>Skills</h4>
+* XML
+* C#
+* Boo
+<h4>Contact</h4>
+* [http://odftoolkit.org/projects/odfdom/lists dev@odfdom.odftoolkit.org]
+* darius.damalakas@odftoolkit.org
+----
+
+'''Note: Several other ideas are in queue and follow up here during the next days, while existing will be further elaborated..'''

Propchange: incubator/odf/site/trunk/content/odftoolkit/GSoC/GoogleSummerOfCode2010ProjectIdeas.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/CodeGenRepo.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/CodeGenRepo.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/CodeGenRepo.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/CodeGenRepo.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,5 @@
+=== Code Generation as a Separate Component ===
+
+We are moving toward treating the code generator as a separate component. The repository [http://odftoolkit.org/hg/odfdom~relaxng2template] is the new home of the code generator. It may move to its own project on this site at some point.
+
+This will be the first part of ODFDOM to be a maven-only build and release.

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/CodeGenRepo.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/ConvenienceLayerDesignIdeas.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/ConvenienceLayerDesignIdeas.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/ConvenienceLayerDesignIdeas.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/ConvenienceLayerDesignIdeas.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,84 @@
+= Some Design Thoughts on ODFDOM Convenience Layer =
+
+== The API is our User Interface  ==
+
+Since the users of ODFDOM are programmers who use our library,  this means that our API is our "User Interface".  Although it is not a GUI, it is a UI, and we should design it like a UI, meaning we:
+
+# Consider the tasks that the user will perform
+# Identify which tasks are repeated most frequently and thus should be very easy to do
+# Identify those tasks which are more advanced and might require more steps
+# Design an interface that makes the most-common tasks very easy, while still being powerful enough for more advanced uses.
+
+== Some Typical User Tasks ==
+
+Operations such as these should be possible to do with only 10 lines code, and with no knowledge of XML or XPath or ODF.  We should add to this list and discuss
+
+* Do we agree that these are all common tasks that should be simple to program with ODFDOM?
+
+# Open an ODF document, search for a text string "foo" and replace it with "bar" every where it occurs in the user text of the document.
+# Combine two documents into one document.
+# Print out the metadata fields for a document.
+# Replace one image with another image in a file
+# Reorder slides in a presentation
+# Take 5 slides from 5 different presentations and combine them into one new presentation
+# Find all text with the style "private" and replace that text with "XXXXXXXX"
+# Add a logo image in the document header
+# Given a 2 dimensional data array or a cell range address, create a bar chart in a spreadsheet
+# Highlight all the occurrences of a given text with blue bold properties
+# Create a 5rows X 2columns table in a text document, the first row is head row.
+# Create a presentation document from a given template document
+# Insert a rectangle shape with the shape text “hello world”
+# Create TOC at the beginning of the text document
+# Create a new sheet in a spreadsheet, insert a text at the given cell address, format the text as bold/italic
+# Create a data pilot given row/column/data fields in the sheet in a spreadsheet
+# Insert a formula at the given cell address in a spreadsheet
+# Define simple page setup for a text document, orientation is portrait, left/right margin is 2cm, top/bottom is 2.5cm
+# Insert page number in the footer
+# Set row height and column width for a sheet in a spreadsheet
+# Set bullet number for a text list
+# Create a customized paragraph style, apply this style to all paragraphs in a text document
+# Select a custom shape, create a style from the custom shape properties, apply this style to another custom shape.
+# Create a custom shape in presentation slide, set animation effect “entrance->fly in” to the custom shape.
+# Split a large document to many small documents, each chapter beginning with “heading 1” style will be saved as a small document.
+
+==  Programming = Data structures + Algorithms ==
+
+We probably all saw a statement like that in our first Computer Science class.  These are both essential parts of programming.  But many libraries have the fault that they only have strength in the data modeling.  They often have very little support for common algorithms.  For example, what did the C Programming Language give us?  Aside from qsort() and bsearch(), there was very little.  C++ on the other hand, contained the powerful Standard Template Library (STL).
+
+ODFDOM 0.7 is mainly convenience wrappers of ODF markup, raising the level of abstraction of this data.  But we should also consider supporting algorithms, along the STL model.  This would be quite powerful and is necessary to make the above task examples very simple for our users.
+
+For example, a typical pattern of use is:
+
+# Given an ODF document instance, navigate to a point in the document
+# At that point insert content
+# Save the document
+
+Another is:
+
+# Given an ODF document instance, define a selection (by start and end point, by start point and "distance", by similarity, etc.)
+# Modify the selection, e.g., replace the content, modify the the style, delete the selection, etc.
+# Save the document
+
+And another is:
+
+# Given an ODF document instance, iterate over content of a given type, e..g, all footnotes, all images, all paragraphs of a given style
+# As you iterate over the content, treat each returned fragment as a selection that can be operated on.
+
+As we think of this more, we see some commonality, including the need to define:
+
+* A parametrized selection mechanism that has some predefined predicates, like for all content, all content of a given style, etc., but also allow user-defined predicates
+* Mutable and immutable iterators
+* Copy semantics on content, so it can be moved from document to document and preserve styles (if desired) including possibly merging styles where they are identical
+* And of course, all the wrappers to read/write ODF content once we have the fragment that the user wants.
+* And I'm sure there are several other items to consider
+
+== A Possible Direction Forward ==
+
+I'd like us to consider doing the following:
+
+# Spend a few days completing the list of user tasks that we agree should be easy to do with the ODFDOM convenience layer API.
+# Then review that list and identify common patterns of use, those recurring interactions that should be coded once and reused.
+# Then, before writing any real code, let's write pseudo code for some (or even all) of our original tasks.  Let's validate the API design at a high level by confirming that this API radically simplifies the coding required for the most common use cases.
+# Then we implement the API's, write unit tests, etc.
+
+

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/ConvenienceLayerDesignIdeas.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/Development.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/Development.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/Development.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/Development.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,215 @@
+=Development=
+
+__TOC__
+
+==Get and Build the Source Code==
+
+# Install [http://mercurial.selenic.com/wiki/ latest Mercurial]
+# Setup Mercurial (optional):<br />Config file <Hg Install Dir>\Mercurial.ini on Windows or <Hg Install Dir>/.hgrc on Unix.<br/>Enhance the default configuration, using GIT diff and enable [http://mercurial.selenic.com/wiki/Win32TextExtension default plugin] avoid different line breaks in the source.<br /><pre>
+[ui]
+username = your Name <yourLoginName@odftoolkit.org>
+;merge = your-merge-program (or internal:merge)
+
+[diff]
+git = 1
+
+[defaults]
+diff=-p -U 8
+
+[extensions]
+# Enables mercurial EOL extension for line break handling
+# See http://mercurial.selenic.com/wiki/EolExtension (bundled since 1.5.4)
+eol =
+
+# It'll remove unknown files and empty directories by default. 
+# Usually you call 'hg update -C' and 'hg purge' in sequence
+# See http://mercurial.selenic.com/wiki/PurgeExtension  (bundled)
+hgext.purge=
+
+[eol]
+# Converts mixed line ending within a file to LF (Unix) format 
+# before adding the file to the source repository
+# See http://mercurial.selenic.com/wiki/EolExtension
+only-consistent = False
+
+</pre>
+# Get the [http://odftoolkit.org/projects/odfdom/sources ODFDOM source code] from the odfdom~developer [http://www.selenic.com/mercurial/wiki/ Mercurial] repository. Please see below for a short introduction to using Mercurial on odftoolkit.org. There's also a more general <a href="{{project help page SourceControl}}">help</a> on how to use source control systems on odftoolkit.org. The command <br /><pre>
+hg clone https://odftoolkit.org/hg/odfdom~developer</pre>will download the repository into a new directory. <br />Please note that by this you'll get the latest changeset. If you for example want stable release 0.8.6, you may want to use<br /><pre>hg clone https://odftoolkit.org/hg/odfdom~developer -r v0.8.6</pre>ODFDOM Developers however always work on the latest changeset.
+
+Now get and install [http://maven.apache.org/ Apache Maven]. On command line test your installation with "mvn -v".
+
+If Maven is correctly installed, change into the project directory and build with command "mvn".
+
+==Set up ODFDOM Development Environment ==
+
+=== Using Netbeans IDE ===
+
+To establish your own ODFDOM development environment:
+
+# Install [http://java.sun.com/javase/downloads/index_jdk5.jsp Java / JDK 5] (you might use [http://java.sun.com/javase/downloads/index.jsp JDK 6] if you do not recontribute)
+# Install [http://netbeans.org NetBeans 6.x]. In case you are new to Netbeans, there are several nice [http://www.netbeans.org/kb/trails/platform.html tutorials] available.
+# Get the source code with Mercurial as described above.
+# Start Netbeans,  choose "File->Open Project.." from the Netbeans menu and select the ODFDOM directory.
+As the ODFDOM source bundle comes together with Netbeans project files, ODFDOM opens as a pre-configured project.
+You still have the opportunity to work solely with [http://maven.apache.org/ Maven] directly on the command line instead having the IDE GUI comfort provided by Netbeans.
+
+Since Netbeans 6.1 the [http://wiki.netbeans.org/MercurialVersionControl Mercurial plugin] is part of the IDE, which help you to track the changes being made and ease providing patches. Select in the menu among 'Versioning' the desired Mercurial commands.
+
+After the commitment of your changed files, you need to pull the latest updates from the server, perhaps merge them with your changes and finally push your changes to the repository using in the menu Versioning->Mercurial->Share->Push Other...
+and adding
+https://myUserName:myPassword@odftoolkit.org/hg/odfdom~developer
+
+=== Using Eclipse IDE ===
+
+You can also set up your own ODFDOM development environment in Eclipse.
+
+# Install [http://java.sun.com/javase/downloads/index_jdk5.jsp Java / JDK 5] (you might use [http://java.sun.com/javase/downloads/index.jsp JDK 6] if you do not recontribute)
+# Install [http://www.eclipse.org Eclipse].
+# Open Eclipse, choose "Window->Preferences->Java->Installed JREs", add JDK 5 as a installed JRE, and check it to add to the build path of a java project by default.
+# Install Maven Plugin for Eclipse, see http://m2eclipse.sonatype.org/installing-m2eclipse.html
+# Install Mercurial Plugin for Eclipse, see http://javaforge.com/project/HGE#download
+# Get the source code with Mercurial as described above.  
+# Import ODFDOM Maven project: Choose "File->Import->Maven->Existing Maven project"
+
+==Command Line Tools==
+
+===Mercurial===
+[http://mercurial.selenic.com/wiki/ Mercurial] is the version control system used for ODFDOM development.
+
+Here a list of the most frequently used commands:
+<pre>
+  // Get source code into a new local repository
+  hg clone https://odftoolkit.org/hg/odfdom~developer [new folder name]
+  
+  // See if there are updates
+  hg in
+  
+  // See if you have local changes
+  hg status
+  
+  // If there are no local changes: Update
+  hg pull
+  hg update
+  
+  // Display the latest 3 entries of the revision history
+  hg log -l 3
+  
+  // Display only the latest entry of the revision history
+  hg tip
+  
+  // Register all locally created or deleted files. 
+  // Please carefully check the output of "hg status" first
+  hg addremove
+  
+  // Safe alternatives
+  hg add <myNewFile>
+  hg remove <myUnnecessaryFile>
+  hg remove -A <myAlreadyDeletedFile>
+
+  // Commit your changes locally and display their revision number
+  hg commit -A -u "your Name" -m "#bug XY# Description of changes"
+  hg tip
+  
+  // Export your locally committed changes as patch
+  hg export -a -g -o ../myChanges.patch <RevisionNumbersOfYourCommit>
+  
+  // Import changes into your local repository
+  hg import --no-commit ../someFile.patch
+
+  // Get help
+  hg help
+  
+  // Get help about a special command
+  hg help <command>
+  hg help export
+  hg help addremove
+  ...
+</pre>
+In case you do changes for a bug or feature request, please export them as a patch and attach them to the bug's entry on the [http://odftoolkit.org/bugzilla/buglist.cgi?product=odfdom&order=bugs.bug_id issue list]. If there's no such entry, please create one first.
+
+That way others will review your patch for you. If everything is ok, the reviewer will push your changes to the global repository. This procedure is the same for all developers and is meant to keep up code quality.
+
+===Maven===
+[http://maven.apache.org/ Maven] is the build manager used for ODFDOM development.
+<pre>
+  // Build the project and create target/odfdom.jar
+  mvn
+  
+  // Workaround: Ignore failed test when building
+  mvn -Dmaven.test.failure.ignore=true clean install
+
+  // Create javadoc
+  mvn javadoc:javadoc
+
+  // Generate DOM layer elements and attributes from RelaxNG
+  mvn clean test -P codegen
+
+  // Generate code coverage documentation in
+  // <PROJECT_DIR>/target/site/cobertura/index.html
+  // see http://mojo.codehaus.org/cobertura-maven-plugin/
+  mvn cobertura:cobertura
+
+</pre>
+
+==Coding Guidelines==
+ODFDOM take advantage of the existing [http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html Java Coding Guidelines]. 
+
+===Naming Convention===
+Aside of the [http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367 Naming Convention of Java Coding Guideline], we use an 'm' as prefix for member object variables, e.g. "mParentDocument". 
+Note: There should be NO datatype prefix being used as 'i', 's', etc.
+
+===Source Code Format===
+Although Maven may support source code formatting it has not yet been enabled.
+Instead the automated formatting via the IDE is used (e.g. by Netbeans via the context menu - Format).  
+
+===Spaces===
+To allow a customized indentation within the IDE based on the user's taste, the indent shall be done using TABs.
+For instance, Svante uses a 4 whitespace indent by TABs configured within Netbeans.
+
+===Line Feed===
+There have been recently problems with merging sources using Mercurial when working with different platforms (windows/unix).
+For this reason, some additional [[#Get_and_Build_the_Source_Code|Mercurial configuration]]  shall be used to unify the interal line feed handling.
+
+
+==Current and Future Work==
+
+Especially the convenient layer will grow on demand. As ODFDOM should be the base of many future ODF projects, a high quality is desired. Therefore automatic tests are obligatory for all new sources of the Java reference implementation.
+
+The development is being discussed on the [http://odftoolkit.org/projects/odfdom/lists/dev/archive dev mailing list].
+
+While we still plan to deliver quarterly results, we created some large feature groups/headlines for the upcoming versions
+
+In general when building a layered API, it seemed reasonable to start from the
+button to base higher APIs on the stable lower layers:
+
+
+===Version 0.9===
+* Complete ODF 1.2 PKG functionality (package), e.g. 
+** Add PKG validation feature
+* Complete ODF 1.2 DOM functionality, e.g.
+** Style handling refactoring
+** Add DOM validation feature
+** RDF metadata feature
+** Some create child element methods (ie. office:body and style:style element) dependent on attribute value
+* ODF 1.2 DOC API 
+** Create a lean convenient API working on the complete DOM layer, but hiding XML design details of ODF 1.2
+* Complete ODF 1.2 TEST API (largly dependent on DOC API, but should be developed in parallel)
+
+===Version 1.0===
+* PKG performance tweaks
+* DOM performance tweaks
+* important DOC functionality
+* Test coverage
+
+Please see also for [https://odftoolkit.org/bugzilla/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=odfdom&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= open tasks]
+
+== ODFDOM Code Generator ==
+
+The ODFDOM Code Generator is used to generate the core Classes for ODFDOM which are a typed mapping of the ODF elements on real Java Classes. For the future we also plan to generate ODFDOM e.g. C# ( .NET ) for other programming languages with this generator. Take a look at this page [[ODFDOM-Code-Generator|(ODFDOM Code Generator)]] to see how the generator works in general (will be updated soon). We are moving toward treating the code generator as a separate component. The repository [http://odftoolkit.org/hg/odfdom~relaxng2template] is the new home of the code generator. It may move to its own project on this site at some point.
+
+
+== Other Useful Pages ==
+*[[ODFDOM-Class-Structure|Class Structure in ODFDOM]]
+*[[Convenience Layer Design Ideas]]
+
+<p style="margin: 15px 0px; text-align:center">[[Home|Go back to ODFDOM Wiki Home]]</p>

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/Development.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/FrequentQuestions.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/FrequentQuestions.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/FrequentQuestions.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/FrequentQuestions.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,13 @@
+=Frequently asked questions=
+
+#'''Question''': How to extracte featured text from a document, for example: extract all bold, italicized or underlined text from a document and any other layout evidence of emphasis like the text font size and so on?
+ '''Answer''': The model of ODF is for there to be "blocks" of text and each run can have an associated style 
+ reference. These style references then have definitions of exactly what text attributes they correspond
+ to. There are two methods you can refer to.
+ (1) First identify which styles have the bold (or italics) attribute.  The document might have more than 
+ one style that defines bold text. Find which text blocks reference that style. You can download a sample 
+ code [http://langintro.com/odfdom_tutorials/search_by_style_09_07_22.zip here].
+ (2) For each text block, identify the style. For the style, resolve the underlying text attributes.  
+ If it is bold (or italics or whatever) then extract it. You can download a sample code [http://odftoolkit.org/attachments/lists/odftoolkit/users/2009-07/6/collect-font-size.zip here].
+
+

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/FrequentQuestions.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/Home.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/Home.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/Home.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/Home.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,70 @@
+[[image: oasis_odf_logo.png|right]]
+
+=ODFDOM - the OpenDocument API=
+
+ODFDOM is a free OpenDocument Format (ODF) library. Its purpose is to provide an easy common way to create, access and manipulate ODF files, without requiring detailed knowledge of the ODF specification. It is designed to provide the ODF developer community with an easy lightwork programming API portable to any object-oriented language. 
+
+The current reference implementation is written in Java.
+
+To learn more about the project's architecture, refer to the [[ProjectOverview|project overview]] and the [[Layers|ODFDOM Layers]] section.
+
+==News==
+
+=== New ODFDOM 0.8.7 Release===
+
+ODFDOM 0.8.7 was [http://odftoolkit.org/projects/odfdom/lists/users/archive/2011-02/message/6 released on Feb 16th 2011]. Major enhancements are coming with this version:
+* Full Maven support: ODFDOM is now on the public Maven servers.
+* The sub document handling had been enhanced. 
+* ODF Package validation in ODFDOM was enabled. ODFDOM is used by the ODF Validator project of ODF Toolkit.
+* More functionality for source code generation of the ODF 1.2 typed DOM classes by using MultiSchemaValidator as RelaxNG parser and Apache Velocity as template engine
+* A major design clean-up had been archived. The inheritance relationship between DOM and Document layer has been broken up as it was no 1:1 relationship. The convenient methods for text, image and style are moved to incubator package. 
+* A new function to extract text from documents, DOMs and elements has been provided.
+* Several bugs related with table and presentation had been fixed. 
+
+For more details see [http://odftoolkit.org/projects/odfdom/lists/users/archive/2011-02/message/6 feature summary on the mailing list] and the  [[ReleaseNotes|release notes with the API change list]].
+
+==Download==
+
+The ODFDOM downloads are now available from the  [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/ official Maven repository]:
+
+'''ODFDOM'' - [http://odftoolkit.org/downloads/odfdom/KEYS KEYS] 
+* [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7.jar ODFDOM 0.8.7 binary - jar]  [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7.jar.asc [PGP]]   [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7.jar.md5 [MD5]]  [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7.jar.sha1 [SHA]]
+* [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-javadoc.jar ODFDOM 0.8.7 JavaDoc - jar]  [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-javadoc.jar.asc [PGP]]   [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-javadoc.jar.md5 [MD5]]  [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-javadoc.jar.sha1 [SHA]]
+* [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-sources.jar ODFDOM 0.8.7 sources - jar]  [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-sources.jar.asc [PGP]]   [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-sources.jar.md5 [MD5]]  [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/0.8.7/odfdom-java-0.8.7-sources.jar.sha1 [SHA]]
+
+For information on working with the source code, please refer to the [[Development|development section]]. 
+
+==Quickstart==
+Put the odfdom.jar file in your classpath. You will need [http://xml.apache.org/dist/xerces-j/ Apache Xerces-J] as XML parser and DOM implementation as well. Start with the following sample code to create a simple text document.
+<br/>
+
+<pre>
+// Create a text document from a standard template (empty documents within the JAR)
+OdfTextDocument odt = OdfTextDocument.newTextDocument();
+
+// Append text to the end of the document. 
+odt.addText("This is my very first ODF test");
+
+// Save document
+odt.save("MyFilename.odt");
+</pre>
+
+==Documentation==
+
+A good starting point is reading the [[ProjectOverview|project overview]] and the [[Layers|ODFDOM Layers]] will help you to get an overview over the ODFDOM package structure. 
+
+Javadocs are [http://odfdom.odftoolkit.org/0.8.7/odfdom/apidocs/ viewable online] or [https://oss.sonatype.org/content/groups/public/org/odftoolkit/odfdom-java/ downloadable as bundle from the official Maven repository].
+
+There are [http://www.langintro.com/odfdom_tutorials/ David's ODFDOM tutorials]. You'll find an introduction as well as sample code for creating text and spreadsheet documents. (Note: The tutorials might not yet be adapted to the latest version).
+
+When meeting with questions, check if [[FrequentQuestions|FAQs]] can help you.
+
+==How to Participate==
+
+There are many ways to participate and we're always looking for [[WhoWeAre|contributors]]. Just [https://odftoolkit.org/people/new sign up] on the ODF Toolkit Project and afterwards [http://odftoolkit.org/projects/odfdom/ watch this project]. Then you may want to start with reading and posting on the [http://odftoolkit.org/projects/odfdom/lists mailing lists] or on the [http://odftoolkit.org/projects/odftoolkit/forums/ODFDOM ODFDOM forum], report [http://odftoolkit.org/bugzilla/buglist.cgi?product=odfdom&order=bugs.bug_id bugs] or write documentation.
+
+If you're a developer, just dive into the [[Development|development section]]. Here you find information on where to access the source code and how to set up a build environment.
+
+You can contact us by IRC "irc://irc.freenode.org/odfdom".
+
+<p style="margin: 15px 0px; text-align:center">Back to: [http://odftoolkit.org/ ODF Toolkit Wiki Home]</p>

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/Home.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/Layers.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/Layers.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/Layers.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/Layers.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,164 @@
+__TOC__
+
+=The ODFDOM Layers=
+
+The ODFDOM project's objective is to provide an easy API for reading, writing and manipulating documents of the OpenDocument format (ODF). 
+To archive this, the ODFDOM API follows a layered approach to access documents, as layered design is the robust foundation for a well-designed modular structure.
+
+<center> [[image: ODFDOM-New-Layered-Model.png]]</center>
+
+==The ODF Package Layer==
+The ODF Package Layer provides access to all resources stored within the ODF package, such as XML streams, images or embedded objects. 
+===The ODF Package API===
+The ODF Package API covers all features from the [http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html third part of the ODF 1.2 specification] defining the ODF Package features. The ODF 1.2 package features are build on top technologies as [http://www.pkware.com/documents/APPNOTE/APPNOTE_6.2.0.txt ZIP package handling], [http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/ W3C encryption], [http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/ W3C signature] and [http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/ W3C metadata].
+
+At this layer a document is in general represented by a bundle of named resources zipped to a package.
+For instance, an ODF text document like 'myVacation.odt' might contain the following files:
+
+[[image: ODF_Package.jpg]]
+
+'''Note:''' 
+All file streams aside of the '/Pictures' directory and its content are specified by the ODF standard. 
+Furthermore, the file streams are similar for all types of ODF documents.
+
+The main requirements for this layer in regard of ZIP are: 
+* Zip/unzip the file streams of the package
+* Enlist all file streams in the /META-INF/manifest.xml (similar to an inventory)
+* Begin the package with an unzipped 'mimetype' file stream (allowing others to easily identify the package)
+
+All sources of the Package layer are organized in ODFDOM beyond <code>org.odftoolkit.odfdom.pkg.*</code>
+
+The following example illustrates how to add a graphic to the package level
+(although not shown by an ODF application (like OpenOffice.org), as not used by the shown content):
+
+<pre>
+
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+[...]
+
+// loads the ODF document package from the path
+OdfPackage pkg = OdfPackage.loadPackage("/home/myDocuments/myVacation.odt");
+
+// loads the image from the URL and inserts the image in the package, 
+// adapting the manifest
+pkg.insert(new URI("./myHoliday.png"), "Pictures/myHoliday.png", "image/png");
+pkg.save("/home/myDocuments/myVacation.odt");
+ 
+</pre>
+
+<br/>
+
+==The ODF XML Layer==
+The ODF XML Layer provides all the features of an office format, such as tables, images, numbering etc. All features are defined in [http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html the first part of the ODF 1.2 specification] describing the ODF XML schema. This layer consists of two APIs representing two different views on the features.
+
+===The ODF DOM API===
+The ODF DOM API gives access to the XML, the elemental parts of the ODF schema features. With this API it is easy to manipulate all specified XML nodes extending the platform and language independent DOM API [http://www.w3.org/DOM/ DOM API standardized by the W3C] - best-known by its implementation through the browsers. It extends the DOM API using a typed DOM. For every ODF XML element and ODF XML attribute defined by the ODF grammar (the RelaxNG schema) a unique class exists, providing methods for their allowed children. The purpose is to provide the user a corset to easily write valid ODF without consulting the spec constantly. This API is very consistent as instead of laboriously writing all these classes, the sources were generated directly from the ODF schema. This generation guarantees complete coverage of the ODF specification on one side and an easy and accurate upgrade to future ODF specifications on the other. 
+
+At this level, all XML file streams of the document are accessible via the [http://www.w3.org/DOM/ W3C DOM API], but only the ODF standardized XML file streams of the document (e.g. content.xml, meta.xml) have their own classes representing their ODF XML elements. Foreign XML within a specified ODF XML file will remain in the document model in general and won't be neglected unless desired ( which still might be a future option).
+
+Example of the ODF XML representing a table in ODF:
+
+[[image: FruitTable_code.jpg]]
+
+'''Note:''' In the OpenDocument standard the ODF elements are reused among all document types. The above XML of a table is for instance equally usable in Text and Spreadsheet documents.
+
+
+This XML would be mapped to a W3C derived ODF DOM class structure:
+
+[[image: Table_fruits_diagramm.jpg | 670x346px]]
+
+All sources of the typed DOM API are organized beyond <code>org.odftoolkit.odfdom.dom.*</code>
+
+The sources for the ODF elements are all generated from the ODF grammar (RelaxNG schema) using the following naming conventions in the Java reference implementation:
+* The class name is equal to the element local name using the Namespace as prefix and 'Element' as suffix (e.g. the 'draw:frame' element has the <code>DrawFrameElement</code> class). 
+* Elements are stored beyond a sub-package equal to their Namespace used by the OOo. Therefore the frame element 'draw:frame' would be generated in Java as class <code>org.odftoolkit.odfdom.dom.draw.DrawFrameElement</code>.
+
+'''Note:''' The element local names 'h' and 'p' have been renamed to the classes 'Heading' and 'Paragraph' for usability reasons.
+
+The following example illustrates how to add a graphic to the ODF document, that it is viewable:
+<pre>
+ 
+import java.net.URI;
+import org.odftoolkit.odfdom.OdfElement;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+[...]
+
+// Load file
+OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument("ImageIn.odt");
+            
+// get root of all content of a text document
+OfficeTextElement officeText = odt.getContentRoot();
+            
+// get first paragraph
+TextPElement firstParagraph = 
+  OdfElement.findFirstChildNode(TextPElement.class, officeText);
+            
+// XPath alternative to get the first paragraph
+/*
+  XPath xpath = XPathFactory.newInstance().newXPath();
+  xpath.setNamespaceContext(new OdfNamespace());
+  OdfFileDom dom = odt.getContentDom();
+  firstParagraph = (TextPElement) xpath.evaluate("//text:p[1]", dom, XPathConstants.NODE);
+*/
+
+// insert a frame
+DrawFrameElement frame = firstParagraph.newDrawFrameElement();
+            
+// insert an image: This is a class from the Document API
+OdfDrawImage image = (OdfDrawImage) frame.newDrawImageElement();
+image.newImage(new URI("./MySampleImage.png"));
+            
+// Save file
+odt.save("ImageOut.odt");
+</pre>
+<br/>
+Even in this example we had to refer to a class from the Document API. Otherwise our implementation had gotten quite long and complex. 
+
+<br/>
+
+===The ODF Document API===
+
+The ODF Document API provides a different much more high level view on the ODF schema features. This API is concerned about usability, hiding all ODF XML implementation details from the user, covering frequent user scenarios. For example, changing the content of a certain spreadsheet cell (e.g. Add 'Hello World' to a spreadsheet cell positioned at 'B2'). While in the ODF DOM API in general each class represents an ODF XML node, here a class covers multiple underlying ODF XML elements (& their attributes). Think of puzzle piece consisting of multiple smaller pieces. Therefore the typed DOM tree is being mapped to feature tree.
+
+As naming convention all sources of the ODF document functionality layer are organized beyond <code>org.odftoolkit.odfdom.doc.*</code>
+The name of a document class is in general similar as the root element from the XML layer feature, only there is the new prefix 'Odf' and the suffix 'Element' has been neglected.
+
+For example, the document class for a 'draw:frame' element would be represented in the ODFDOM Java reference implemenation as <code>org.odftoolkit.odfdom.doc.draw.OdfDrawFrame</code> class. Some classes of the Document API differ from this naming convention, e.g. OdfTextParagraph is the subclass of TextPElement. However by browsing the packages you will easily find the classes your looking for.
+
+'''Note:''' The Document API will change. The current inheritance between DOM and DOC elements does not fit any longer in the multiple elements to a single document feature (1:n) pattern. The first Document Object is the table <code>rg.odftoolkit.odfdom.doc.table.OdfTable</code>, others will follow soon.
+
+Again let's look at the previous code example for the DOM API: Remember all DOM element classes are abstract and we're really getting objects from the Document API: Even if <code>frame.newDrawFrameElement()</code> is defined to return the DOM class DrawFrameElement, it really returns the DOC subclass OdfDrawFrame. So it's always save to use explicit casting <code>OdfDrawFrame frame = (OdfDrawFrame) firstParagraph.newDrawFrameElement();</code>.
+
+However reworking the previous example would just make the code larger, since we're not using any of the document methods provided by the DOC subclasses. 
+
+Here's an example for working with DOC classes, completely avoiding handling the DOM manually:
+
+<pre>
+[...]
+// Load Image
+OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument("ImageIn.odt");
+
+// Play around with text
+odt.addText("When there is no paragraph, the text will be embedded in a new paragraph");
+odt.newParagraph("Create new paragraph");
+odt.addText("\nThis is a new line");
+
+// Insert Image and make last paragraph its anchor
+odt.newImage(new URI("./MySampleImage.png"));
+
+// Insert new spreadsheet as sub document into the package within directory  "myOdsDirectoryPath/"
+odt.insertDocument(OdfSpreadsheetDocument.newSpreadsheetDocument(), "myOdsDirectoryPath");
+
+// Save file
+odt.save("ImageOut.odt");
+</pre>
+
+<br/>
+
+<p style="margin: 15px 0px; text-align:center">Go on reading about [[Development|how to set up a building environment and where to get the source code]].</p>

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/Layers.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/MavenRepository.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/MavenRepository.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/MavenRepository.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/MavenRepository.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,30 @@
+=== Maven Repository ===
+
+We have an interim maven repository. So far, all that is deployed in it are the artifacts for the code generator.
+
+To use this, you'll need something like the following:
+
+<pre>
+ <repositories>
+    <repository>
+      <releases>
+        <enabled>false</enabled>
+        <updatePolicy>always</updatePolicy>
+        <checksumPolicy>fail</checksumPolicy>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+        <updatePolicy>never</updatePolicy>
+        <checksumPolicy>fail</checksumPolicy>
+      </snapshots>
+      <id>odfdom-snapshots</id>
+      <name>ODFDOM Snapshots</name>
+      <url>http://odftoolkit.org/svn/odfdom~maven2/snapshot/</url>
+      <layout>default</layout>
+    </repository>
+  </repositories>
+</pre>
+
+You'll need the same thing in pluginRepositories to use the codegen-maven-plugin.
+
+

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/MavenRepository.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/MultipleVersions.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/MultipleVersions.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/MultipleVersions.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/MultipleVersions.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,19 @@
+= ODF Version Processing in ODFDOM =
+
+Hello everyone in this community!  I'm working on ODFDOM now. This is my first to write wiki. In the future, I'll have more issues about requirements, designs and implementation details to discuss with you. Now I  have a topic about ODF versions.
+
+* ODFDOM now only supports ODF 1.1, and surely we'll support ODF 1.2, also one of our team members is doing that now. But do we plan to support ODF 1.0? My opinion is that although ODF 1.0 is used in not many cases before,  ODF 1.0(2nd) is ISO standard ISO26300, so ODFDOM should consider the back compatible with ODF1.0, and can load/create ODF1.0 documents.  Of course, if we plan to do that, it should be done as early as possible. Welcome your opinion.
+
+* ODFDOM should support all versions of ODF because in the practice, many ODF documents with different versions are mixed together, ODFDOM need to process them automatically for whatever ODF version. So a single code base should support all ODF versions instead of different code streams for different ODF versions.
+
+* ODFDOM dom layer code have to support all elements and attributes defined in all ODF versions, that means it is a union set of all ODF versions.
+
+* Generate different source code using different ODF schema, may modify the code generator source code
+
+* Create a new code base that contain all ODF versions source files using some auto merge tools
+
+* Identify the difference places in the source code for different ODF versions. Minor places are in dom layer, most places are in doc layer.
+
+* Compare different ODF schemas, first do some automatic processing based on the assumption that ODF schema is back compatible completely. Then do some special processing for those elements or attributes that are not back compatible.
+
+Welcome your suggestions.

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/MultipleVersions.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Class-Structure.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Class-Structure.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Class-Structure.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Class-Structure.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,60 @@
+__TOC__
+
+=Class Structure in ODFDOM=
+The Java packages reflect the layers of the ODFDOM library.
+
+==Shared Functionality==
+
+Shared by all layers are the basic XML classes as in the <code>org.odftoolkit.odfdom</code> package, like
+;<code>OdfElement</code> 
+:parent of all ODFDOM elements
+;<code>OdfAttribute</code> 
+:parent of all ODFDOM attributes 
+;<code>OdfName</code> 
+:the union of an ODF local name and an ODF namespace, represented by 
+;<code>OdfNamespace</code> 
+:embracing all ODF namespaces (prefixes and URIs) defined in the specification.
+
+Similar used through all layers are the ODF datatypes, to be found in
+;<code>org.odftoolkit.odfdom.type</code>
+:All datatypes defined in the ODF 1.2 specification, mostly overtaken from W3C Schema types, like AnyURI.
+Helper functionality can be found at those types, like in case for AnyURI en/decode() methods.
+
+==The Package/Physical Layer==
+
+These classes are in the <code>org.odftoolkit.odfdom.pkg</code> package to access files from the ODF package.
+The classes you will find here include:
+
+;<code>OdfPackage</code>
+:Allows you to access, insert, delete, load, and save individual entries in a packaged ODF document.
+
+; <code>OdfPackageStream</code>
+:Allows you to write to a member of the ODF document as an output stream.
+
+;<code>OdfXMLHelper</code>
+:Provides utility methods to parse the XML content of a package member and apply an XSLT transformation to it.
+
+==The ODF Typed DOM / XML Layer==
+
+These classes are in general the generated DOM elements and attributes of ODF 1.2. 
+;<code>org.odftoolkit.odfdom.dom.element</code>
+:These classes give you access to the individual ODF elements. Its sub-packages are divided by namespace, so you would find the code for a <code>draw:ellipse</code> element in the <code>org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement</code> class.
+;<code>org.odftoolkit.odfdom.dom.attribute</code>
+:These classes give you access to the individual ODF attributes  (similar to the elements before). Again its sub-packages are divided by namespace, so you would find the code for a <code>xml:id</code> attribute in the <code>org.odftoolkit.odfdom.dom.attribute.xml.XmlId</code> class.
+
+The third package <code>org.odftoolkit.odfdom.dom.style</code> will vanish in the future (mostly parts will be moved to the DOC layer in an upcoming release).
+
+;<code>org.odftoolkit.odfdom.dom.style</code>
+:These classes and the <code>.props</code> sub-packages give you access to ODF&rsquo;s style families and their properties
+
+If you are using an IDE such as NetBeans or Eclipse, you don't have to memorize this hierarchy; the IDE can generate the proper <code>import</code> statements for you. 
+
+The code in these classes is generated directly from the [http://www.relaxng.org/ Relax NG] (RNG) schema for ODF.
+
+==The ODF Document / Convenience Functionality Layer==
+
+This is the layer that developers will use most often. A sub-level like <code>org.odftoolkit.odfdom.doc.text</code> inherits (currently) from the elements of the <code>org.odftoolkit.odfdom.dom.element.text</code> package. Aside of the namespace prefix an 'Odf' prefix is being used in the beginning. Furthermore is the namespace prefix neglected in case it already exists in the local name. The convenient class for the ODF element <code>table:table</code>, which is represented in the DOM layer by <code>org.odftoolkit.odfdom.table.TableTableElement</code>, is OdfTable and NOT OdfTableTable.
+We encourage developers to create methods for these classes, based on actual use cases of the toolkit.
+
+The entry point for the convenient layer should be in the future the document itself. Some example functions had been added to <code>OdfTextDocument</code> to show this, like <code>newParagraph()</code>, adding a paragraph (ie. <code>text:p</code> element) at the end of the document.
+

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Class-Structure.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Code-Generator.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Code-Generator.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Code-Generator.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Code-Generator.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,580 @@
+=ODFDOM Code Generator=
+
+The ODFDOMCodeGenerator is a java application to create source code for elements and attributes that are defined using relaxng schema.
+It is used in the [[Home|ODFDOM]] project to generate the java source files for the elements available in the OpenDocument format.
+
+= Usage =
+
+To generate source code files, start the application with
+
+
+  java -jar ODFDOMCodeGenerator.jar your-schema.rng your-config.xml your-template.xml /your/target/directory
+
+
+Please not, if you use the [[Home|ODFDOM]] project, you can change the setting 'gen-flat-odf-schema' inside the user.properties file
+to 'true' and the next build will use the 'schema/OpenDocument-schema-v1.1.rng' schema, the 'codegen/config.xml' config file,
+the 'codegen/javacodetemplate.xml' template file and the src directory of the project as the target directory. This will override
+all generated code files in your project.
+
+= The config file =
+
+The config file must be an xml file with the following structure
+
+
+  &lt;?xml version="1.0" encoding="UTF-8"?&gt;
+  &lt;config&gt;
+  &lt;elements&gt;
+  &lt;element .../&gt;
+  &lt;element .../&gt;
+  ...
+  &lt;/elements&gt;
+  &lt;data-types&gt;
+  &lt;data .../&gt;
+  &lt;data .../&gt;
+  ...
+  &lt;/data-types&gt;
+  &lt;attributes&gt;
+  &lt;attribute .../&gt;
+  &lt;attribute .../&gt;
+  &lt;attribute .../&gt;
+  ...
+  &lt;/attributes&gt;
+  &lt;/config&gt;
+
+
+== Element ==
+
+The &lt;element&gt; element supports the following attributes
+
+=== Name ===
+
+The mandatory attribute 'name' selects the element from the relaxng schema with its qualified name (qname).
+
+=== Rename ===
+
+The optional attribute 'rename' changes the variable 'elementname' for this element.
+This can be used f.e. to give an element like &lt;text:a&gt; a more readable implementation name like &lt;text:anchor&gt;
+
+=== Base ===
+
+The optional attribute 'base' changes the variable 'elementbasename' for this element.
+
+=== Family ===
+
+The optional attribute 'family' changes the variable 'elementstylefamily' for this element.
+
+== Attribute ==
+
+The &lt;attribute&gt; element supports the following attributes
+
+=== Name ===
+
+The mandatory attribute 'name' selects the attribute from the relaxng schema with its qname.
+
+=== Element ===
+
+The optional attribute 'element' selects only the attributes with the qname given by the attribute 'name'
+with the elements qname.
+
+=== Rename ===
+
+The optional attribute 'rename' changes the variable 'attributename' for the selected attributes.
+This can be used f.e. to avoid generating getter/setter methods which names collide with base class methods.
+
+=== Type-name ===
+
+The optional attribute 'type-name' changes the variable 'conversiontype' for the selected attributes.
+This can be used f.e. to have different attributes from multiple elements with the same defined values
+to use a shared class for conversions.
+
+== Data ==
+
+The &lt;data&gt; element supports the following attributes
+
+=== Name ===
+
+The mandatory attribute 'name' selects the data type by its qname. Data types are the types defined in the relaxng
+schema by the &lt;data&gt; elements inside the &lt;attribute&gt; element. The name can also be the name of a &lt;ref&gt;
+element. In that case the processing of the relaxng schema stops at this &lt;ref&gt; element and the configuration
+from this element is used.
+
+=== Value-type ===
+
+The mandatory attribute 'value-type' changes the variable 'valuetype' for attributes using this data-type.
+
+=== Conversion-type ===
+
+The optional attribute 'conversion-type' changes the variable 'conversion-type' for attributes using this data-type.
+If this attribute is not available, the variable 'conversion-type' will have the same value as the variable 'valuetype'.
+
+= The template file =
+
+The template file must be a valid xml file with the element &lt;template&gt; as the root element. It can contain
+the following elements
+
+== Code ==
+
+The &lt;code&gt; element outputs the characters inside this element to the current output file.
+The characters are scanned for expressions before written to the file.
+
+
+&lt;code&gt;
+  // this element generates a comment
+&lt;/code&gt;  
+
+
+== Define ==
+
+The &lt;define&gt; element does not execute its child elements but remembers them with the given name for later
+use with the &lt;ref&gt; element.
+
+The mandatory attribute 'name' gives the name for this define.
+
+
+&lt;define name="header"&gt;
+  &lt;code&gt;
+  // This file uses the gpl
+  // Do not edit this file as it is automaticaly generated!
+  &lt;/code&gt;
+&lt;/define&gt;
+
+
+== Ref ==
+
+The &lt;ref&gt; element executes the child elements of a &lt;define&gt; element with the same name.
+
+The mandatory attribute 'name' selects the &lt;define&gt; by its attribute 'name'.
+
+
+  <ref name="header"/>
+
+
+== If ==
+
+The &lt;if&gt; element executes its child elements only if the evaluated expression from its attribute 'test' is
+a non empty string and not the string constant 'false'.
+
+The mandatory attribute 'test' is evaluated as an expression.
+
+
+  &lt;if test="elementname='text:a'&gt;
+  &lt;code&gt;
+    // interface for links
+    public String getLink();
+    public void setLink( String newLink );
+  &lt;/code&gt;
+  &lt;/if&gt;
+
+
+== Else ==
+
+The &lt;else&gt; element is always ignored, except if it is a child element inside an &lt;if&gt; element and the
+test attribute was evaluated to 'false' or an empty string.
+
+
+  &lt;if test="elementbasename=''"&gt;
+  &lt;code&gt;
+  class %{elementname} extends DefaultElement
+  &lt;/code&gt;
+  &lt;else&gt;
+  &lt;code&gt;
+  class %{elementname} extends %{elementbasename}
+  &lt;/code&gt;
+  &lt;/else&gt;
+  &lt;/if&gt;
+
+
+== Set ==
+
+The &lt;set&gt; element changes all variables with the names of the given attributes to their values. The values
+are scanned for expressions before assignement.
+
+
+  &lt;set elementname="Hyperlink"/&gt;
+  &lt;set elementclassname="Odf%{elementname}Element"/&gt;
+  &lt;code&gt;
+  class %{elementclassname} extends OdfElement
+  {
+  }
+  &lt;/code&gt;
+
+
+will output
+
+
+  class OdfHyperlinkElement extends OdfElement
+  {
+  }
+
+
+== Foreach ==
+
+The &lt;foreach&gt; element executes its child elements once for all objects of the given type from the relaxng schema.
+
+The mandatory attribute 'type' must have one of the following values
+
+=== 'element' ===
+
+All elements that are defined in the relaxng are iterated. For each element the following variables will be set
+
+* 'elementqname' is the qualified name of the current element.
+* 'elementname' is the same as 'elementqname' by default. The configuration file can override this.
+* 'elementstylefamily' is empty by default. The configuration file can override this.
+
+=== 'attribute' ===
+
+All attributes of the currently selected element as defined in the relaxng schema are iterated. For each attribute the following variables will be set
+
+* 'attributeqname' is the qualified name of the current attribute
+* 'attributename' is the same as 'attributeqname' by default. The configuration file can override this.
+* 'valuetype' is the data type of the &lt;data&gt; element for this attribute. If this attribute is defined by &lt;value&gt; elements, it is set to 'enum'. The configuration file can override this.
+* 'conversiontype' is the same as 'valuetype' by default. The configuration file can override this.
+* 'defaultvalue' is the default value for this attribute as defined by the relaxng schema.
+
+=== 'value' ===
+
+All values for the currently selected atteribute as defined in the relaxng schmea are iterated. For each value the following variable 'value' will be set.
+This only works for attributes that are defined using &lt;value&gt; elements in the relaxng schema.
+
+=== 'namespace' ===
+
+All namespaces used in the relaxng schema are iterated. For each namespace the following variables will be set
+
+* 'namespaceprefix' is the prefix of the current namespace
+* 'namespaceuri' is the uri of the current namespace
+
+== Select ==
+
+The &lt;select&gt; element works the same as the &lt;foreach&gt; element but instead of iterating all objects of the given type it selects only one object by its qname with the mandatory attribute 'name'.
+Can only be used for types 'element', 'attribute' and 'namespace'.
+
+== File ==
+
+The &lt;file&gt; element opens a new text file for writing. The following attributes are supported
+
+=== Path ===
+
+The mandatory attribute 'path' specifies the path of the new file.
+
+=== Name ===
+
+The mandatory attribute 'name' specifies the name of the new file.
+
+=== Extension ===
+
+The mandatory attribute 'extension' specifies the extension of the new file.
+
+= Expressions =
+
+Expressions can be part of characters inside &lt;code&gt; elements and inside some attributes.
+If embedded inside other text they are distinguished by putting them inside %{...} constructs.
+Expressions can contain variable names, contant strings, operators and functions
+
+== Variables ==
+
+Variables must start with a us-ascii character ('a-z' or 'A-Z) or one of the following characters '_' '.' and
+contain more of the same characters and also digits.
+
+The following example
+
+
+  &lt;set testvar="World"/&gt;  
+  &lt;code&gt;Hello %{testvar}!&lt;/code&gt;
+
+
+outputs
+
+
+Hello World!  
+
+
+== Constant strings ==
+
+Constand strings must be delimeted by either ' or " like c++ or java strings.
+
+The following example
+
+
+  &lt;set testvar="yes"/&gt;
+  &lt;if test="testvar='yes'"&gt;
+  &lt;code&gt;
+  Yes!
+  &lt;/code&gt;
+  &lt;else&gt;
+  &lt;code&gt;
+  No!
+  &lt;/code&gt;
+  &lt;/else&gt;
+  &lt;/if&gt;
+
+
+outputs
+
+
+  Yes!
+
+
+== Operators ==
+
+The following operators are supported (given from lowest to highes priority)
+
+=== not ===
+
+The not operator returns 'true' of the following string expression is not empty and not 'false' or 'false' otherwise.
+
+The following example
+
+
+  &lt;set testvar="yes"/&gt;
+  &lt;code&gt;
+  %{ testvar } or %{ not testvar }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  yes or false
+
+
+=== + ===
+
+The + operator concatenates two string expressions.
+
+The following example
+
+
+  &lt;code&gt;
+  %{ 'Hello' + ' ' + "World" + "!" }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  Hello World!
+
+
+=== or ===
+
+The or operator returns 'true' if the previous string expression is not empty and not 'false' or the next string expression is not empty and not 'false'.
+
+
+  &lt;code&gt;
+  %{ 'true' or 'false' }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  true
+
+
+=== and ===
+
+The or operator returns 'true' if the previous string expression is not empty and not 'false' and the next string expression is not empty and not 'false'.
+
+
+  &lt;code&gt;
+  %{ 'true' and 'false' }
+  %{ 'true' and 'true' }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  false
+  true
+
+
+=== Equals  ===
+
+The '=' operator returns 'true' if the previous string expression is equal to the next string expression or 'false' otherwise.
+
+
+  &lt;code&gt;
+  %{ 'true' = 'false' }
+  %{ 'hello' = 'hello' }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  false
+  true
+
+
+=== Unequals  ===
+
+The '!=' operator returns 'false' if the previous string expression is equal to the next string expression or 'true' otherwise.
+
+
+  &lt;code&gt;
+  %{ 'true' != 'false' }
+  %{ 'hello' != 'hello' }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  true
+  false
+
+
+== Functions ==
+
+Functions start with a name followed by a pair of brackets with a list of coma seperated parameters inside. The following functions are supported
+
+=== toupper ===
+
+The function toupper returns the given string as an upercase version
+
+
+  &lt;code&gt;
+  %{ toupper('true') }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  TRUE
+
+
+=== tolower ===
+
+The function tolower returns the given string as a lowercase version.
+
+
+  &lt;code&gt;
+  %{ toupper('TRUE') }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  true
+
+
+=== prefix ===
+
+The function 'prefix' returns the namespace prefix from a qualified name.
+
+=== local_name ===
+
+The function 'local_name' returns the local name from a qualified name.
+
+
+  &lt;set qname='text:section'/&gt;
+  &lt;code&gt;
+  %{ prefix(qname) }
+  %{ local_name(qname) }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  text
+  section
+
+
+=== identifier ===
+
+The function 'identifier' converts the given string into a valid java/c++ identifier.
+If the given string is a qualified name, it first removes the prefix.
+Then all '-' Characters will be removed and all characters following '-' will be converted to upercase.
+If the result begins with a non valid character, a '_' will be inserted as the first character.
+
+
+  &lt;set qname='text:section'/&gt;
+  &lt;code&gt;
+  %{ identifier('text:anchor-position') }
+  %{ identifier('300') }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  AnchorPosition
+  _300
+
+
+=== endswith ===
+
+The function 'endswith' returns true if the first parameter ends with the second.
+
+
+  &lt;code&gt;
+  %{ endswith('foobar','bar') }
+  %{ endswith('foobar','foo') }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  true
+  false
+
+
+=== startswith ===
+
+The function 'startswith' returns true if the first parameter starts with the second.
+
+
+  &lt;code&gt;
+  %{ startswith('foobar','bar') }
+  %{ startswith('foobar','foo') }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  false
+  true
+
+
+=== startswith ===
+
+The function 'startswith' returns true if the first parameter starts with the second.
+
+
+  &lt;code&gt;
+  %{ startswith('foobar','bar') }
+  %{ startswith('foobar','foo') }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  false
+  true
+
+
+=== replace ===
+
+The function 'replace' replaces all occurrences of the first parameter with the second parameter inside the third parameter.
+
+
+  &lt;code&gt;
+  %{ replace('USA','World','Hello USA!') }
+  &lt;/code&gt;
+
+
+outputs
+
+
+  Hello World!
+
+
+
+<p style="margin: 15px 0px; text-align:center">Back to: [[Home|ODFDOM Wiki Home]] || [http://odftoolkit.org/ ODF Toolkit Wiki Home]</p>

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-Code-Generator.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-New-Layered-Model.png
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-New-Layered-Model.png?rev=1161761&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODFDOM-New-Layered-Model.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODF_Package.jpg
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/ODF_Package.jpg?rev=1161761&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/ODF_Package.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/odf/site/trunk/content/odftoolkit/odfdom/ProjectOverview.mdtext
URL: http://svn.apache.org/viewvc/incubator/odf/site/trunk/content/odftoolkit/odfdom/ProjectOverview.mdtext?rev=1161761&view=auto
==============================================================================
--- incubator/odf/site/trunk/content/odftoolkit/odfdom/ProjectOverview.mdtext (added)
+++ incubator/odf/site/trunk/content/odftoolkit/odfdom/ProjectOverview.mdtext Thu Aug 25 21:23:19 2011
@@ -0,0 +1,19 @@
+=Project Overview=
+
+The ODFDOM project's objective is to provide an easy API for reading, writing and manipulating documents of the OpenDocument format (ODF). 
+To archive this, the ODFDOM API follows a layered approach to access documents, as layered design is the robust foundation for a well-designed modular structure.
+
+The two ODFDOM layers are:
+* '''The ODF Package Layer''':<br/>Provides access to all resources stored within the ODF package, such as XML streams, images or embedded objects. This layer covers all features from the [http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html third part of the ODF 1.2 specification] defining the ODF Package features. The ODF 1.2 package features are build on top technologies as [http://www.pkware.com/documents/APPNOTE/APPNOTE_6.2.0.txt ZIP package handling], [http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/ W3C encryption], [http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/ W3C signature] and [http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/ W3C metadata].
+* '''The ODF XML Layer''':<br/>Provides all the features of an office format, such as tables, images, numbering etc. All features are defined in [http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html the first part of the ODF 1.2 specification] describing the ODF XML schema. This layer consists of two APIs representing two different views on the features:
+** ''The low-level DOM API'':<br/>Gives access to the XML, the elemental parts of the ODF schema features. With this API it is easy to manipulate all specified XML nodes extending the platform and language independent DOM API [http://www.w3.org/DOM/ DOM API standardized by the W3C] - best-known by its implementation through the browsers. It extends the DOM API using a typed DOM. For every ODF XML element and ODF XML attribute defined by the ODF grammar (the RelaxNG schema) a unique class exists, providing methods for their allowed children. The purpose is to provide the user a corset to easily write valid ODF without consulting the spec constantly. This API is very consistent as instead of laboriously writing all these classes, the sources were generated directly from the ODF schema. This generation guarantees complete coverage of the ODF specification on one side and an easy and accurate upgrade to future ODF specifications on the other. 
+** ''The high-level Document API'':<br/>Provides a different much more high level view on the ODF schema features. This API is concerned about usability, hiding all ODF XML implementation details from the user, covering frequent user scenarios. For example, changing the content of a certain spreadsheet cell (e.g. Add 'Hello World' to a spreadsheet cell positioned at 'B2'). While in the ODF DOM API in general each class represents an ODF XML node, here a class covers multiple underlying ODF XML elements (& their attributes). Think of puzzle piece consisting of multiple smaller pieces. Therefore the typed DOM tree is being mapped to feature tree.<br/>
+
+<center> [[image: ODFDOM-New-Layered-Model.png]]</center>
+
+<br/>
+
+ODFDOM is part of the [http://odftoolkit.org ODF Toolkit project]. Development is discussed on the [http://odftoolkit.org/projects/odfdom/lists dev mailing list], users should ask their questions on the [http://odftoolkit.org/projects/odfdom/lists users mailing list].
+<br/>
+
+<p style="margin: 25px 0px; text-align:center">[[layers|'''More detailed information about ODFDOM layers''']].</p>

Propchange: incubator/odf/site/trunk/content/odftoolkit/odfdom/ProjectOverview.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message