<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>docx4java aka docx4j - OpenXML office documents in Java</title>
	<atom:link href="http://www.docx4java.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.docx4java.org/blog</link>
	<description>docx4java aka docx4j - OpenXML office documents in Java</description>
	<lastBuildDate>Fri, 18 May 2012 02:47:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>docx4j from GitHub in Eclipse</title>
		<link>http://www.docx4java.org/blog/2012/05/docx4j-from-github-in-eclipse/</link>
		<comments>http://www.docx4java.org/blog/2012/05/docx4j-from-github-in-eclipse/#comments</comments>
		<pubDate>Fri, 18 May 2012 02:47:45 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[docx4j]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://www.docx4java.org/blog/?p=199</guid>
		<description><![CDATA[docx4j is now on GitHub!  https://github.com/plutext/docx4j This should make it easier for users to maintain their own branches (public or private), and contribute improvements back. As of now, GitHub is the project&#8217;s authoritative version control.  We&#8217;re no longer updating the existing svn repository. Its pretty easy to work with docx4j sources in Eclipse. This post [...]]]></description>
			<content:encoded><![CDATA[<p>docx4j is now on GitHub!  <a href="https://github.com/plutext/docx4j">https://github.com/plutext/docx4j</a></p>
<p>This should make it easier for users to maintain their own branches (public or private), and contribute improvements back.</p>
<p>As of now, GitHub is the project&#8217;s authoritative version control.  We&#8217;re <strong>no longer updating</strong> the existing <strong>svn </strong>repository.</p>
<p>Its pretty easy to work with docx4j sources in Eclipse. This post shows you how.</p>
<p>First, make sure you have eGit installed in Eclipse.  Install it from <a href="http://www.eclipse.org/egit/download/">here</a>.  On Windows, it is also useful to have <a href="http://code.google.com/p/msysgit/downloads/list">msysgit</a>.  Refer elsewhere for how to set these up.</p>
<p>You also need <a href="http://eclipse.org/m2e/download/">m2eclipse</a></p>
<p>Assuming you&#8217;ve done all that, setting up the docx4j source code is just a few steps.</p>
<p>But first, be aware there is a difference between cloning and forking.  <strong>Cloning </strong>gives you a copy of the source code you can work on, but without more, no easy way to contribute changes back.  <strong>Forking </strong>sets you up with the source code, and makes it easy to contribute changes back.</p>
<p>If you think you might be making changes to the docx4j source code, you&#8217;re probably best to create a fork on GitHub right from the start.</p>
<p><strong>Step 1 (optional, but recommended):</strong> To create a fork, log in to GitHub, visit <a href="https://github.com/plutext/docx4j">https://github.com/plutext/docx4j</a> then press the &#8220;Fork&#8221; button.</p>
<p><strong>Step 2: Create your local repository</strong> (git <strong><span style="text-decoration: underline;">clone</span></strong>)</p>
<p>This can be done from within Eclipse, or using Git Gui (easiest), or Git Bash Shell.</p>
<p>To do it from within Eclipse, File &gt; Import .. &gt; Repositories from GitHub:</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2012/05/1import_from_github.png"><img class="alignnone size-full wp-image-207" title="1import_from_github" src="http://www.docx4java.org/blog/wp-content/uploads/2012/05/1import_from_github.png" alt="" width="529" height="557" /></a></p>
<p>If you forked docx4j, find your fork (it might not appear immediately, which is why Git Gui or Git Bash Shell are better for this step), select it, and click next.</p>
<p>If you didn&#8217;t fork docx4j, type &#8216;docx4j&#8217; then press &#8216;search&#8217;, the <strong>plutext/docxj</strong> repository should come up:</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2012/05/2import_from_github.png"><img class="alignnone size-full wp-image-208" title="2import_from_github" src="http://www.docx4java.org/blog/wp-content/uploads/2012/05/2import_from_github.png" alt="" width="547" height="354" /></a></p>
<p>Select plutext/docx4j, then click next.</p>
<p>This creates a local git repository on your computer.</p>
<p><strong>Step 3:</strong> Now you need to import that repository into Eclipse as a project:</p>
<p>File &gt; Import .. &gt; Projects from Git</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2012/05/3import_from_git.png"><img class="alignnone size-full wp-image-209" title="3import_from_git" src="http://www.docx4java.org/blog/wp-content/uploads/2012/05/3import_from_git.png" alt="" width="522" height="284" /></a></p>
<p>Eclipse should find the existing project settings:</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2012/05/4import_from_git.png"><img class="alignnone size-full wp-image-210" title="4import_from_git" src="http://www.docx4java.org/blog/wp-content/uploads/2012/05/4import_from_git.png" alt="" width="532" height="374" /></a></p>
<p>(If it didn&#8217;t and you had to use the new projects wizard; be sure to set the file location to wherever your git repository is, rather than letting Eclipse create a new empty project in the workspace)</p>
<p>Now you should have a docx4j project in Eclipse, and it should be properly configured (since the project settings come with the project).</p>
<p><strong>You should be done.</strong> But if something isn&#8217;t right, you can configure it manually (see further below).</p>
<p>Next steps?  Improve the docx4j source code in Eclipse <img src='http://www.docx4java.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , then Team &gt; Commit, to commit those changes to your local repository.</p>
<p>Made a change which would be useful to others?  If you forked docx4j as per step 1 above, you can push your changes to your repository on GitHub, then <a href="http://help.github.com/send-pull-requests/">send a pull request</a>.</p>
<p>If you didn&#8217;t fork docx4j, do that now on GitHub, then configure things locally to push your changes to your repository on GitHub, then you&#8217;ll be right to push your changes to your repository on GitHub, then <a href="http://help.github.com/send-pull-requests/">send a pull request</a>.  Other docx4j users will thank you for this <img src='http://www.docx4java.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Manual configuration:</strong></p>
<p>Configure &gt; Convert to Maven Project</p>
<p>Properties &gt; Java Compiler &gt; Compiler compliance level: change to 1.6</p>
<p>Java Build Path &gt; Libraries: remove 1.5 system library; Add Library &#8230; JRE System Library .. 1.6</p>
<p>Java Build Path &gt; Source: check none of the entries say &#8220;Excluded: **&#8221; (remove the exclusion)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2012/05/docx4j-from-github-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAXB can be made to run on Android</title>
		<link>http://www.docx4java.org/blog/2012/05/jaxb-can-be-made-to-run-on-android/</link>
		<comments>http://www.docx4java.org/blog/2012/05/jaxb-can-be-made-to-run-on-android/#comments</comments>
		<pubDate>Thu, 17 May 2012 07:27:26 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Dalvik]]></category>
		<category><![CDATA[jaxb]]></category>

		<guid isPermaLink="false">http://www.docx4java.org/blog/?p=201</guid>
		<description><![CDATA[A customer asked me to prepare a sample Android project which converts docx to HTML. The result is AndroidDocxToHtml Since docx4j relies heavily on JAXB, the key to getting it working was getting JAXB to run on Android. Android presents us with a number of challenges: it won&#8217;t let you add a jar which includes [...]]]></description>
			<content:encoded><![CDATA[<p>A customer asked me to prepare a sample Android project which converts docx to HTML.</p>
<p>The result is <a href="https://github.com/plutext/AndroidDocxToHtml">AndroidDocxToHtml</a></p>
<p>Since docx4j relies heavily on JAXB, the key to getting it working was getting JAXB to run on Android.</p>
<p>Android presents us with a number of challenges:</p>
<ol>
<li>it won&#8217;t let you add a jar which includes classes in the javax.xml namespace (which is where the JAXB API lives)</li>
<li>JAXB uses JAXP 1.3 DatatypeFactory, but Android doesn&#8217;t provide it</li>
<li>JAXB uses javax.activation.DataHandler</li>
<li>Dalvik has a limit of 65536 method references per dex file</li>
<li>it doesn&#8217;t support package level annotations (which JAXB uses, and which in docx4j supply namespaces)</li>
</ol>
<p><strong>Ill-advised or mistaken usage of a core class (java.* or javax.*)</strong></p>
<p>You&#8217;ll get this message if you try to add a jar containing classes in java.* or the following javax packages:</p>
<div>
<div>
<div>
<div><span style="font-family: 'Courier New';">accessibility crypto imageio management naming</span></div>
</div>
</div>
</div>
<div>
<div>
<div>
<div><span style="font-family: 'Courier New';"> net print rmi security sound sql swing transaction</span></div>
</div>
</div>
</div>
<div>
<div>
<div>
<div><span style="font-family: 'Courier New';"> <strong>xml</strong></span></div>
</div>
</div>
</div>
<p>Android doesn&#8217;t provide javax.xml.bind, and it won&#8217;t let you add it yourself.  It forces you to re-package it.  Just like on Google AppEngine, until Google eventually added it.</p>
<p>OK, done that; see <a href="https://github.com/plutext/jaxb-2_2_5_1/tree/android2">https://github.com/plutext/jaxb-2_2_5_1/tree/android2</a> (the 2 in android2 is meaningless)</p>
<p>Repackaging is easy enough; the problem with it is that any library which uses the repackaged code, must also be changed.  In the case of docx4j, this means a new branch, and ongoing maintenance.</p>
<p><strong>JAXB uses JAXP 1.3 DatatypeFactory, but Android doesn&#8217;t provide it</strong></p>
<p>com.sun.xml.bind invokes javax.xml.datatype.DatatypeFactory.newInstance, whereupon Android  throws  javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl not found.</p>
<p>Easy solution: jar it up and provide it.</p>
<p><strong>JAXB uses javax.activation.DataHandler</strong></p>
<p>Easy solution: use the activation and additionnal jars from <a href="http://code.google.com/p/javamail-android/downloads/list">http://code.google.com/p/javamail-android/downloads/list</a></p>
<p><strong>Dalvik  limit of 65536 method references per dex file</strong></p>
<p>This is more an issue running docx4j on Android than one related to JAXB, but it is worth noting.  We&#8217;re running very close to this limit.  Vote for the issue at <a href="http://code.google.com/p/android/issues/detail?id=7147">http://code.google.com/p/android/issues/detail?id=7147</a></p>
<p>Also, you may need to give Eclipse more heap space  (symptom is &#8216;you get Unable to execute dex: Java heap space&#8217;).   In eclipse.ini, I used:</p>
<p>-Xms256m</p>
<p>-Xmx4096m</p>
<p>In Eclipse, Windows &gt; Preferences &gt; General &gt; Show Heap Status gives you an entry on the bottom row which is useful.</p>
<p><strong>Just when I thought it would all work&#8230;</strong></p>
<p>I found that my XML was not unmarshalling, because it contains namespaces, and for some reason the objects in my JAXB were being read as not having any.</p>
<p>The problem is that Android doesn&#8217;t support package annotations: <a href="http://code.google.com/p/android/issues/detail?id=16149">http://code.google.com/p/android/issues/detail?id=16149</a> (vote), but JAXB needs to read them.  For example:</p>
<div><span style="font-family: Consolas; color: #646464; font-size: x-small;">@</span><span style="font-family: Consolas; font-size: x-small;">javax.xml.bind.annotation.</span><span style="font-family: Consolas; color: #646464; font-size: x-small;">XmlSchema</span><span style="font-family: Consolas; font-size: x-small;">(namespace = </span><span style="font-family: Consolas; color: #2a00ff; font-size: x-small;">&#8220;http://schemas.openxmlformats.org/package/2006/relationships&#8221;</span><span style="font-family: Consolas; font-size: x-small;">, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.</span><span style="font-family: Consolas; color: #0000c0; font-size: x-small;"><em>QUALIFIED</em></span><span style="font-family: Consolas; font-size: x-small;">)</span></div>
<p>I ended up devising a simple minded way to tell JAXB about these programmatically.  See <a href="https://github.com/plutext/docx4j/blob/android/src/main/java/org/docx4j/jaxb/Context.java">Context.java</a></p>
<p>That done, it more or less works (if you need support for other package level annotations, you&#8217;ll need to add this).   The re-packaged JAXB is <a href="https://github.com/plutext/jaxb-2_2_5_1/tree/android2">here</a>.  You can build it using <strong>ant -f build-repackaged.xml dist</strong></p>
<p>It should work on Android 3 or 4.</p>
<p>To use it, where your code would otherwise import javax.xml.bind, use <strong>ae.</strong>java.xml.bind.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2012/05/jaxb-can-be-made-to-run-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>docx &#8211; internal hyperlinks</title>
		<link>http://www.docx4java.org/blog/2012/04/docx-internal-hyperlinks/</link>
		<comments>http://www.docx4java.org/blog/2012/04/docx-internal-hyperlinks/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 02:05:55 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[docx4j]]></category>

		<guid isPermaLink="false">http://www.docx4java.org/blog/?p=188</guid>
		<description><![CDATA[There have been a couple of posts on the forum lately regarding adding hyperlinks to other parts of a docx. This blog post walks you through the generic process for investigating an issue like this. First, create a sample docx in Word which exhibits the issue of interest. Here I&#8217;m interested in hyperlinks to a [...]]]></description>
			<content:encoded><![CDATA[<p>There have been a couple of posts on the forum lately regarding adding hyperlinks to other parts of a docx. </p>
<p>This blog post walks you through the generic process for investigating an issue like this. </p>
<p>First, create a sample docx in Word which exhibits the issue of interest.  </p>
<p>Here I&#8217;m interested in hyperlinks to a heading, and to a bookmark.  So see this docx. Second, look inside it (its a zip file).  For the link to the heading, document.xml contains a w:p containing:</p>
<pre class="brush: xml;">
      &lt;w:hyperlink w:anchor=&quot;_My_heading&quot; w:history=&quot;1&quot;&gt;
        &lt;w:r&gt;
          &lt;w:rPr&gt;
            &lt;w:rStyle w:val=&quot;Hyperlink&quot;/&gt;
          &lt;/w:rPr&gt;
          &lt;w:t&gt;My heading&lt;/w:t&gt;
        &lt;/w:r&gt;
      &lt;/w:hyperlink&gt;
</pre>
<p>The heading itself is automatically given a bookmark:</p>
<pre class="brush: xml;">
    &lt;w:p&gt;
      &lt;w:pPr&gt;
        &lt;w:pStyle w:val=&quot;Heading1&quot;/&gt;
      &lt;/w:pPr&gt;
      &lt;w:bookmarkStart w:id=&quot;0&quot; w:name=&quot;_My_heading&quot;/&gt;
      &lt;w:bookmarkEnd w:id=&quot;0&quot;/&gt;
      &lt;w:r&gt;
        &lt;w:t&gt;My heading&lt;/w:t&gt;
      &lt;/w:r&gt;
    &lt;/w:p&gt; </pre>
<p>For the link to my bookmark, Word 2010 used the legacy field formulation:</p>
<pre class="brush: xml;">
    &lt;w:p&gt;
      &lt;w:r&gt;
        &lt;w:fldChar w:fldCharType=&quot;begin&quot;/&gt;
      &lt;/w:r&gt;
      &lt;w:r&gt;
        &lt;w:instrText xml:space=&quot;preserve&quot;&gt; HYPERLINK  \l &quot;bm1&quot; &lt;/w:instrText&gt;
      &lt;/w:r&gt;
      &lt;w:r&gt;
        &lt;w:fldChar w:fldCharType=&quot;separate&quot;/&gt;
      &lt;/w:r&gt;
      &lt;w:r w:rsidRPr=&quot;00D16ABA&quot;&gt;
        &lt;w:rPr&gt;
          &lt;w:rStyle w:val=&quot;Hyperlink&quot;/&gt;
        &lt;/w:rPr&gt;
        &lt;w:t&gt;bm1&lt;/w:t&gt;
      &lt;/w:r&gt;
      &lt;w:r&gt;
        &lt;w:fldChar w:fldCharType=&quot;end&quot;/&gt;
      &lt;/w:r&gt;
    &lt;/w:p&gt; </pre>
<p> Third, what rels are involved?  To answer this, I run the docx through docx4j&#8217;s PartsList sample.  It shows me that these hyperlinks don&#8217;t create any rels.  Alternatively, to see this, you could have looked at the rels part when you unzipped the docx. </p>
<p> So we can see that adding an internal hyperlink to a heading requires that it be bookmarked first. Once you have a bookmark, you use a w:hyperlink to refer to the bookmark by name (not id).  Doesn&#8217;t look like there is any reason to use fields for this. </p>
<p> Here&#8217;s a suitable method: </p>
<pre class="brush: java;">
	/**
	 * Create a Hyperlink object, which is suitable for adding to a w:p
	 * @param bookmarkName
	 * @param linkText
	 * @return
	 */
	public static Hyperlink hyperlinkToBookmark(String bookmarkName, String linkText) {

		try {

			String hpl = &quot;&lt;w:hyperlink w:anchor=\&quot;&quot; + bookmarkName + &quot;\&quot; xmlns:w=\&quot;http://schemas.openxmlformats.org/wordprocessingml/2006/main\&quot; &quot; +
            &quot;w:history=\&quot;1\&quot; &gt;&quot; +
            &quot;&lt;w:r&gt;&quot; +
            &quot;&lt;w:rPr&gt;&quot; +
            &quot;&lt;w:rStyle w:val=\&quot;Hyperlink\&quot; /&gt;&quot; +  // TODO: enable this style in the document!
            &quot;&lt;/w:rPr&gt;&quot; +
            &quot;&lt;w:t&gt;&quot; + linkText + &quot;&lt;/w:t&gt;&quot; +
            &quot;&lt;/w:r&gt;&quot; +
            &quot;&lt;/w:hyperlink&gt;&quot;;

			return (Hyperlink)XmlUtils.unmarshalString(hpl);

		} catch (Exception e) {
			// Shouldn't happen
			e.printStackTrace();
			return null;
		}

	}  </pre>
<p>We can test it by altering the BookmarkAdd sample to add a link:</p>
<pre class="brush: java;">
Hyperlink h = MainDocumentPart.hyperlinkToBookmark(bookmarkName, &quot;link to bookmark&quot;);
wordMLPackage.getMainDocumentPart().addParagraphOfText(&quot;some text&quot;).getContent().add(h);
</pre>
<p>then checking the result opens in Word ok.</p>
<p>That&#8217;s all. Added to docx4j in revision 1777.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2012/04/docx-internal-hyperlinks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>docx4j 2.7.1 released</title>
		<link>http://www.docx4java.org/blog/2011/10/docx4j-2-7-1-released/</link>
		<comments>http://www.docx4java.org/blog/2011/10/docx4j-2-7-1-released/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 03:57:16 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.docx4java.org/blog/?p=179</guid>
		<description><![CDATA[I&#8217;m pleased to announce the release of docx4j 2.7.1.  It was actually released 2 weeks ago, but this announcement has been delayed until I was able to publish the accompanying post on docx4j now being in Maven Central. What is docx4j? docx4j is an open source (Apache v2) library for creating, editing, and saving OpenXML [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the release of docx4j 2.7.1.  It was actually released 2 weeks ago, but this announcement has been delayed until I was able to publish the accompanying post on<a href="/blog/2011/10/hello-maven-central/"> docx4j now being in Maven Central</a>.</p>
<p><strong>What is docx4j?</strong></p>
<p>docx4j is an open source (Apache v2) library for creating, editing,  and saving OpenXML &#8220;packages&#8221;, including docx, pptx, and xslx.  It is  similar to Microsoft&#8217;s OpenXML SDK, but for Java rather than .NET.   It  uses JAXB to create the Java objects out of the OpenXML parts.</p>
<p>Notable features for docx include export as HTML or PDF, and CustomXML databinding for document generation (including our <a href="http://www.opendope.org/">OpenDoPE</a> convention support for processing repeats and conditions).</p>
<p>The docx4j project started in October 2007.</p>
<p><strong>What&#8217;s new?</strong></p>
<p>This is mainly a maintenance release; things of note include:</p>
<ul>
<li>Preparation for including docx4j in Maven Central</li>
<li>mc:AlternateContent preprocessor, allowing graceful degradation of Word 2010 specific content</li>
<li>docx4j.properties, supports configuration of default page size, margins, orientation; also ability to set some of the doc props metadata (Application &amp; AppVersion; dc.creator &amp; dc.lastModifiedBy).</li>
<li>HtmlExporterNG2,(Pdf)Conversion, SvgExporter: storing any images is delegated to a<br />
ConversionImageHandler that may be passed as a conversion parameter. Default implementation: DefaultConversionImageHandler</li>
<li>OpenDoPE changes &#8211; see summary post in the sub-forum</li>
</ul>
<p><strong>Where do you get it?</strong></p>
<p><strong>Binaries:</strong> You can download a <a href="http://www.docx4java.org/docx4j/docx4j-2.7.1.jar">jar alone</a> or a <a href="http://www.docx4java.org/docx4j/docx4j-2.7.1.tar.gz">tar.gz with all deps</a> or <a href="http://www.docx4java.org/docx4j/docx4j-2.7.1/">pick and choose</a>.</p>
<p><strong>Source:</strong> Checkout the source from <a href="http://www.docx4java/svn/docx4j/trunk/docx4j">SVN</a> (use the pom.xml file to satisfy the dependencies eg with m2eclipse as explain in the Maven blog post, or download them from one of the links above)</p>
<p><strong>Maven:</strong> From Maven Central; please see the blog post referenced above.</p>
<p><strong>Getting Started</strong></p>
<p>See the <a href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/docs/">&#8220;Getting Started&#8221; guide</a>.</p>
<p><strong>Thanks to our contributors</strong></p>
<p>A number of contributions have made this release what it is; thanks very much to those who contributed.</p>
<p>Contributors to this release and a more complete list of changes may be found in <a href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/README.txt">README.txt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2011/10/docx4j-2-7-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello Maven Central</title>
		<link>http://www.docx4java.org/blog/2011/10/hello-maven-central/</link>
		<comments>http://www.docx4java.org/blog/2011/10/hello-maven-central/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 03:42:34 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Microsoft Word]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[docx4j]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[m2e]]></category>
		<category><![CDATA[maven central]]></category>

		<guid isPermaLink="false">http://www.docx4java.org/blog/?p=148</guid>
		<description><![CDATA[With version 2.7.1, docx4j &#8211; a library for manipulating Word docx, Powerpoint pptx, and Excel xlsx xml files in Java &#8211; and all its dependencies, are available from Maven Central. This makes it really easy to get going with docx4j.  With Eclipse and m2eclipse installed, you just add docx4j, and you&#8217;re done.  No need to [...]]]></description>
			<content:encoded><![CDATA[<p>With version 2.7.1, docx4j &#8211; a library for manipulating Word docx, Powerpoint pptx, and Excel xlsx xml files in Java &#8211; and all its dependencies, are available from Maven Central.</p>
<p>This makes it really easy to get going with docx4j.  With Eclipse and m2eclipse installed, you just add docx4j, and you&#8217;re done.  No need to mess around with manually installing jars, setting class paths etc.</p>
<p>This post demonstrates that, starting with a fresh OS (Win 7 is used, but these steps would work equally well on OSX or Linux).</p>
<p><strong>Step 1 &#8211; Install the JDK</strong></p>
<p>For the purposes of this article, I used JDK 7, but docx4j works with Java 6 and 1.5.</p>
<p><strong>Step 2 &#8211; Install Eclipse Indigo (3.7.1)</strong></p>
<p>I normally download the version for J2EE developers. Unzip it and run eclipse</p>
<p><strong>Step 3 &#8211; Install m2eclipse.</strong></p>
<p>In Eclipse, click Help &gt; Install New Software.</p>
<p>Type &#8220;http://download.eclipse.org/technology/m2e/releases&#8221; in the &#8220;Work with&#8221; field as shown:</p>
<div><a href="http://www.docx4java.org/blog/wp-content/uploads/2011/10/m2e-install.png"><img class="alignnone size-full wp-image-155" title="m2e-install" src="http://www.docx4java.org/blog/wp-content/uploads/2011/10/m2e-install.png" alt="" width="735" height="593" /></a></div>
<p>then follow the prompts.</p>
<p><strong>Step 4 &#8211; Create your Maven project</strong></p>
<p>In Eclipse, File &gt; New &gt; Project.., then choose Maven project</p>
<p>You should see:</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2011/10/new-maven-project.png"><img class="alignnone size-full wp-image-157" title="new-maven-project" src="http://www.docx4java.org/blog/wp-content/uploads/2011/10/new-maven-project.png" alt="" width="628" height="423" /></a></p>
<p><strong> </strong></p>
<p>Check &#8220;Create a simple project (skip archetype selection)&#8221; then press next.</p>
<p>Allocate group and artifact id  (what you choose as your artifact id will become the name of your new project in Eclipse):</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2011/10/maven-allocate-group-and-artifact-id.png"><img class="alignnone size-full wp-image-158" title="maven-allocate-group-and-artifact-id" src="http://www.docx4java.org/blog/wp-content/uploads/2011/10/maven-allocate-group-and-artifact-id.png" alt="" width="628" height="610" /></a></p>
<p>Press finish</p>
<p>This will create a project with directories using Maven conventions:</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2011/10/maven-conventions.png"><img class="alignnone size-full wp-image-159" title="maven-conventions" src="http://www.docx4java.org/blog/wp-content/uploads/2011/10/maven-conventions.png" alt="" width="226" height="170" /></a></p>
<p>(Note: If your starting point is a new or existing <strong>Java </strong>project in Eclipse, you can right click on the project, then choose Configure &gt; Convert to Maven project)</p>
<p><strong>Step 5 &#8211; Add docx4j to your POM</strong></p>
<p>Double Click on pom.xml</p>
<p>Next click on the dependencies tab, then click the &#8220;add dependency&#8221; button, and enter the docx4j coordinates as shown in the image below:</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2011/10/m2e-select-dependency.png"><img class="alignnone size-full wp-image-156" title="m2e-select-dependency" src="http://www.docx4java.org/blog/wp-content/uploads/2011/10/m2e-select-dependency.png" alt="" width="678" height="587" /></a></p>
<p>The result is this pom:</p>
<pre class="brush: xml;">

&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;mygroup&lt;/groupId&gt;
  &lt;artifactId&gt;myartifact&lt;/artifactId&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;dependencies&gt;
  	&lt;dependency&gt;
  		&lt;groupId&gt;org.docx4j&lt;/groupId&gt;
  		&lt;artifactId&gt;docx4j&lt;/artifactId&gt;
  		&lt;version&gt;2.7.1&lt;/version&gt;
  	&lt;/dependency&gt;
  &lt;/dependencies&gt;
&lt;/project&gt;
</pre>
<p>Ctrl-S to save it.</p>
<p>m2eclipse may take some time to download the dependencies.</p>
<p>When it has finished, you should be able to see them:</p>
<p><a href="http://www.docx4java.org/blog/wp-content/uploads/2011/10/maven-dependencies.png"><img class="alignnone size-full wp-image-160" title="maven-dependencies" src="http://www.docx4java.org/blog/wp-content/uploads/2011/10/maven-dependencies.png" alt="" width="472" height="473" /></a></p>
<p><strong>Step 6 &#8211; Create HelloMavenCentral.java</strong></p>
<p>If you made a Maven project as per step 4 above, you should already have  src/main/java on your build path.</p>
<p>If not, create the folder and add it.</p>
<p>Now add a new class:</p>
<pre class="brush: java;">
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

public class HelloMavenCentral {

	public static void main(String[] args) throws Exception {

		WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();

		wordMLPackage.getMainDocumentPart()
			.addStyledParagraphOfText(&quot;Title&quot;, &quot;Hello Maven Central&quot;);

		wordMLPackage.getMainDocumentPart().addParagraphOfText(&quot;from docx4j!&quot;);

		// Now save it
		wordMLPackage.save(new java.io.File(System.getProperty(&quot;user.dir&quot;) + &quot;/helloMavenCentral.docx&quot;) );

	}
}
</pre>
<p><strong>Step 7 &#8211; Click Run</strong></p>
<p>When you click run, all being well, a new docx called helloMavenCentral.docx will be saved.</p>
<p>You can open it in Word (or anything else which can read docx), or unzip it to inspect its contents.</p>
<p><strong>Step 8 &#8211; Adding docx4j.properties</strong></p>
<p>One final thing. If you plan on creating documents from scratch using docx4j, it is useful to set paper size etc, via docx4j.properties.  Put something like the following on your path:</p>
<pre># Page size: use a value from org.docx4j.model.structure.PageSizePaper enum
# eg A4, LETTER
docx4j.PageSize=LETTER
# Page size: use a value from org.docx4j.model.structure.MarginsWellKnown enum
docx4j.PageMargins=NORMAL
docx4j.PageOrientationLandscape=false

# Page size: use a value from org.pptx4j.model.SlideSizesWellKnown enum
# eg A4, LETTER
pptx4j.PageSize=LETTER
pptx4j.PageOrientationLandscape=false

# These will be injected into docProps/app.xml
# if App.Write=true
docx4j.App.write=true
docx4j.Application=docx4j
docx4j.AppVersion=2.7.1
# of the form XX.YYYY where X and Y represent numerical values

# These will be injected into docProps/core.xml
docx4j.dc.write=true
docx4j.dc.creator.value=docx4j
docx4j.dc.lastModifiedBy.value=docx4j

#
#docx4j.McPreprocessor=true

# If you haven't configured log4j yourself
# docx4j will autoconfigure it.  Set this to true to disable that
docx4j.Log4j.Configurator.disabled=false</pre>
<p>And that&#8217;s it.  For more information on docx4j, see our <a href="/svn/docx4j/trunk/docx4j/docs/Docx4j_GettingStarted.html">Getting Started</a> document.</p>
<p>Please click the +1 button if you found this article helpful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2011/10/hello-maven-central/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenDoPE Word Add-In source code released</title>
		<link>http://www.docx4java.org/blog/2011/08/opendope-word-add-in-source-code-released/</link>
		<comments>http://www.docx4java.org/blog/2011/08/opendope-word-add-in-source-code-released/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 12:32:02 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[OpenDoPE]]></category>
		<category><![CDATA[Add-In]]></category>
		<category><![CDATA[VSTO]]></category>

		<guid isPermaLink="false">http://www.docx4java.org/blog/?p=144</guid>
		<description><![CDATA[The source code for the OpenDoPE Word Add-In developer edition is available at last at http://opendope.codeplex.com/ (A binary download has been available for 10 months or so now) ﻿OpenDoPE stands for Open Document Processing Ecosystem; its a standards based approach to document automation / document assembly. Fundamentally, it is a set of conventions for doing [...]]]></description>
			<content:encoded><![CDATA[<p>The source code for the OpenDoPE Word Add-In developer edition is available at last at <a href="http://opendope.codeplex.com/">http://opendope.codeplex.com/</a></p>
<p>(A binary download has been available for 10 months or so now)</p>
<p>﻿<em><strong>OpenDoPE</strong></em> stands for<strong> Open Document Processing Ecosystem</strong>; its a standards based approach to document automation / document assembly.</p>
<p>Fundamentally, it is a set of conventions for doing document assembly using Open XML (the ISO-standard Microsoft Word docx file format), specifically, its content control databinding architecture.</p>
<p>Its real attraction is that it enables users to do  document production without getting locked in to some vendors&#8217; proprietary  file format:- in adopting OpenDoPE, you aren&#8217;t making any commitment above and  beyond continued use of the docx file format, and a conventional  approach to use of its content controls.</p>
<p>For further details, see the <a href="http://www.opendope.org/">OpenDoPE website</a>.</p>
<p>docx4j can combine an XML data file with an OpenDoPE docx template for you; the point of the OpenDoPE Word Add-In is to help your authors with the initial step of creating OpenDoPE docx templates.</p>
<p>The Word Add-In is relatively straightforward; it uses VSTO (Visual Studio Tools for Office).  You&#8217;ll need Visual Studio (2010) and basic C# skills to modify it.</p>
<p>The point of releasing the source code is to make it easy for developers to contribute back fixes and enhancements (which has worked really well for docx4j), or extend the Addin to create their own specialised authoring tool.  The source code is in Mercurial, which &#8211; because of its distributed nature &#8211; should facilitate the latter especially.</p>
<p>The source code for the OpenDoPE Word Add-In (developer edition) is dual licensed, the primary license being GPL v2.</p>
<p>The Add-In is made possible because of the availability of the <a href="http://sharpdevelop.net/opensource/sd/">SharpDevelop</a> &#8220;Avalon&#8221; and XML editor components.  Thanks guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2011/08/opendope-word-add-in-source-code-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>docx4j has a new home</title>
		<link>http://www.docx4java.org/blog/2011/08/docx4j-has-a-new-home/</link>
		<comments>http://www.docx4java.org/blog/2011/08/docx4j-has-a-new-home/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 10:32:45 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.docx4java.org/blog/?p=138</guid>
		<description><![CDATA[For reasons best known (or only known) to Google, dev.plutext.org has never been on the first page of results when you search for &#8220;docx java&#8221;, despite all the relevant posts in our forums over more than 3 years. I can only think Google doesn&#8217;t at all like a hostname other than &#8220;www&#8221;. So I&#8217;ve moved [...]]]></description>
			<content:encoded><![CDATA[<p>For reasons best known (or only known) to Google, dev.plutext.org has never been on the first page of results when you search for &#8220;docx java&#8221;, despite all the relevant posts in our forums over more than 3 years.</p>
<p>I can only think Google doesn&#8217;t at all like a hostname other than &#8220;www&#8221;.</p>
<p>So I&#8217;ve moved everything to www.docx4java.org</p>
<p>This shouldn&#8217;t impact you (other than having to find this new site, and update any bookmarks) unless you are using svn and have docx4j checked out.</p>
<p>If you have the docx4j repository checked out, you&#8217;ll want to do something like:</p>
<p>﻿<code> svn switch --relocate http://dev.plutext.org/svn/docx4j/trunk/docx4j http://www.docx4java.org/svn/docx4j/trunk/docx4j</code></p>
<p>If you are on Windows and using TortoiseSVN, use Tortoise&#8217;s &#8220;relocate&#8221; command (not its &#8220;switch&#8221; command).</p>
<p>That should make your SVN checkout work again.</p>
<p>There may be various broken or outdated links on the website.  I guess I&#8217;ll fix these over time.</p>
<p>If you encounter any other issues, then please post to <a href="http://www.docx4java.org/forums/announces/docx4j-has-a-new-home-t815.html">http://www.docx4java.org/forums/announces/docx4j-has-a-new-home-t815.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2011/08/docx4j-has-a-new-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>docx4j 2.7.0 released</title>
		<link>http://www.docx4java.org/blog/2011/07/docx4j-2-7-0-released/</link>
		<comments>http://www.docx4java.org/blog/2011/07/docx4j-2-7-0-released/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 07:32:50 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Microsoft Word]]></category>
		<category><![CDATA[OOXML]]></category>
		<category><![CDATA[OpenXML]]></category>
		<category><![CDATA[docx]]></category>
		<category><![CDATA[docx4j]]></category>
		<category><![CDATA[jaxb]]></category>
		<category><![CDATA[pptx4j]]></category>
		<category><![CDATA[xlsx4j]]></category>

		<guid isPermaLink="false">http://dev.plutext.org/blog/?p=130</guid>
		<description><![CDATA[I&#8217;m pleased to announce the release today of docx4j 2.7.0. What is docx4j? docx4j is an open source (Apache v2) library for creating, editing, and saving OpenXML &#8220;packages&#8221;, including docx, pptx, and xslx.  it is similar to Microsoft&#8217;s OpenXML SDK, but for Java rather than .NET.   It uses JAXB to create the Java objects [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the release today of docx4j 2.7.0.</p>
<p><strong>What is docx4j?</strong></p>
<p>docx4j is an open source (Apache v2) library for creating, editing, and saving OpenXML &#8220;packages&#8221;, including docx, pptx, and xslx.  it is similar to Microsoft&#8217;s OpenXML SDK, but for Java rather than .NET.   It uses JAXB to create the Java objects out of the OpenXML parts.</p>
<p>Notable features for docx include export as HTML or PDF, and CustomXML databinding for document generation (including our <a href="http://www.opendope.org/">OpenDoPE</a> convention support for processing repeats and conditions).</p>
<p>The docx4j project started in October 2007.</p>
<p><strong>What&#8217;s new?</strong></p>
<p>This is mainly a maintenance release; things of note include:</p>
<ul>
<li>Improvements to Maven build</li>
<li>ContentAccessor interface</li>
<li>AlteredParts: identify parts in this pkg which are new or altered; Patcher<br />
which adds new or altered parts.</li>
<li>Support for .glox SmartArt package (/src/glox/)</li>
<li>JAXB RI 2.2.3 compatibilty</li>
<li>OpenDoPE support improvements</li>
</ul>
<p><strong>Where do you get it?</strong></p>
<p><strong>Binaries:</strong> You can download a <a href="http://dev.plutext.org/docx4j/docx4j-2.7.0.jar">jar alone</a> or a <a href="http://dev.plutext.org/docx4j/docx4j-2.7.0.tar.gz">tar.gz with all deps</a> or <a href="http://dev.plutext.org/docx4j/docx4j-2.7.0/">pick and choose</a>.</p>
<p><strong>Source:</strong> Checkout the source from <a href="http://dev.plutext.org/svn/docx4j/trunk/docx4j">SVN</a> (use the pom.xml file to satisfy the dependencies eg with m2eclipse, or download them from one of the links above)</p>
<p><strong>Maven:</strong> Please see forum for details (since XML doesn&#8217;t paste nicely here right now).</p>
<p><strong>Dependency changes</strong></p>
<p>Antlr is now required for OpenDoPE processing; this gives us better XPath processing.  The required jars are:</p>
<ul>
<li><a href="http://dev.plutext.org/docx4j/docx4j-2.7.0/antlr-2.7.7.jar">antrl-2.7.7</a></li>
<li><a href="http://dev.plutext.org/docx4j/docx4j-2.7.0/antlr-runtime-3.3.jar">antrl-runtime-3.3</a></li>
<li><a href="http://dev.plutext.org/docx4j/docx4j-2.7.0/stringtemplate-3.2.1.jar">stringtemplate-3.2.1</a></li>
</ul>
<p><strong>Getting Started</strong></p>
<p>See the <a href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/docs/">&#8220;Getting Started&#8221; guide</a>.</p>
<p><strong>Thanks to our contributors</strong></p>
<p>A number of contributions have made this release what it is; thanks very much to those who contributed.</p>
<p>Contributors to this release and a more complete list of changes may be found in <a href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/README.txt">README.txt</a></p>
<p><strong>A request to docx4j users</strong></p>
<p>If you are happily using docx4j, it would be great if you could reply to this post with some words of recommendation for others who might be wondering whether docx4j is a good choice.  I know there are thousands of you out there <img src='http://www.docx4java.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Some users have been kind enough to make such statements already; these may be found on the <a href="http://dev.plutext.org/trac/docx4j">trac homepage</a>.</p>
<p>Of course, there are a number of other ways you can contribute back.  Please consider doing so, especially if you think you might find yourself looking for support from volunteers in the docx4j forums.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2011/07/docx4j-2-7-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feedback on docx4j 2.7.0 release candidate?</title>
		<link>http://www.docx4java.org/blog/2011/06/feedback-on-docx4j-2-7-0-release-candidate/</link>
		<comments>http://www.docx4java.org/blog/2011/06/feedback-on-docx4j-2-7-0-release-candidate/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:09:02 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[OpenXML]]></category>
		<category><![CDATA[docx4j]]></category>
		<category><![CDATA[docx]]></category>
		<category><![CDATA[pptx]]></category>
		<category><![CDATA[xlsx]]></category>

		<guid isPermaLink="false">http://dev.plutext.org/blog/?p=125</guid>
		<description><![CDATA[docx4j 2.7.0 release candidate is now available at http://dev.plutext.org/docx4j/docx4j-2.7.0-rc1.jar This will form the basis of the 2.7.0 release. In fact, unless there are significant issues over the next week or so, this will become the 2.7.0 release! So please try it out and report back, positive or negative&#8230; It is mainly a maintenance release, but things [...]]]></description>
			<content:encoded><![CDATA[<h3><span style="font-weight: normal;">docx4j 2.7.0 release candidate is now available at <a href="http://dev.plutext.org/docx4j/docx4j-2.7.0-rc1.jar">http://dev.plutext.org/docx4j/docx4j-2.7.0-rc1.jar</a></span></h3>
<div>This will form the basis of the 2.7.0 release. In fact, unless there are significant issues over the next week or so, this will become the 2.7.0 release! So please try it out and report back, positive or negative&#8230;</p>
<p>It is mainly a maintenance release, but things of note include:</p>
<p>* Improvements to Maven build</p>
<p>* ContentAccessor interface</p>
<p>* AlteredParts: identify parts in this pkg which are new or altered; Patcher<br />
which adds new or altered parts.</p>
<p>* Support for .glox SmartArt package (/src/glox/)</p>
<p>* JAXB RI 2.2.3 compatibilty</p>
<p>For contributors to this release and a more complete list of changes, please see <a href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/README.txt">http://dev.plutext.org/svn/docx4j/trunk &#8230; README.txt</a></p>
<p>There are 2 new dependencies (required for OpenDoPE processing): antlr-runtime-3.3.jar and stringtemplate-3.2.1.jar For convenience, copies of these can be found in the same dir as the rc jar.</p>
<p>Thanks very much to everyone who contributed to this release (candidate!).</p></div>
<div></div>
<div>And please consider clicking one of the buttons below to circulate news of the release.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2011/06/feedback-on-docx4j-2-7-0-release-candidate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft&#8217;s data binding patent</title>
		<link>http://www.docx4java.org/blog/2010/11/microsofts-data-binding-patent/</link>
		<comments>http://www.docx4java.org/blog/2010/11/microsofts-data-binding-patent/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 06:19:10 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Microsoft Word]]></category>
		<category><![CDATA[OpenXML]]></category>

		<guid isPermaLink="false">http://dev.plutext.org/blog/?p=118</guid>
		<description><![CDATA[I just stumbled across United States Patent 7730394, Data binding in a word-processing application Its Microsoft&#8217;s patent on data bound content controls. Its a useful description of how it works. I&#8217;m not sure it&#8217;s worthy of a patent though.  They reference a  lot of prior art, but not my March 2004 paper  &#8220;XForms for Contract [...]]]></description>
			<content:encoded><![CDATA[<p>I just stumbled across<br />
<a href="http://www.freepatentsonline.com/7730394.html">United States Patent 7730394, Data binding in a word-processing application</a></p>
<p>Its Microsoft&#8217;s patent on data bound content controls.</p>
<p>Its a useful description of how it works.</p>
<p>I&#8217;m not sure it&#8217;s worthy of a patent though.  They reference a  lot of prior art, but not my March 2004 paper  <a href="http://lists.oasis-open.org/archives/legalxml-econtracts/200403/msg00004.html">&#8220;XForms for Contract Semantics&#8221;</a>, which contains the following binding example:</p>
<div id="_mcePaste">&lt;p&gt;</div>
<div id="_mcePaste">In consideration of the payment of &lt;xforms:output ref=&#8221;lineitems/item/price&#8221;/&gt;, &lt;xforms:output ref=&#8221;supplier&#8221;/&gt; agrees to deliver</div>
<div id="_mcePaste">a &lt;xforms:output ref=&#8221;lineitems/item/name&#8221;/&gt; to &lt;xforms:output ref=&#8221;customer&#8221;/&gt; on or before &lt;xforms:output ref=&#8221;deliverydate&#8221;/&gt;.</div>
<div id="_mcePaste">&lt;/p&gt;</div>
<div>
<p>Interestingly to me, Wolters Kluwer referenced my paper in their <a href="http://www.freepatentsonline.com/7260584.html">&#8220;Document creation system&#8221;</a> patent, but that&#8217;s a side note.</p>
<p>I&#8217;m a big fan of data-bound content controls.</p>
<p>So much so, in fact, that I&#8217;d like to see the same stuff included in ODF and implemented in OpenOffice .. umm .. maybe I mean LibreOffice these days!</p>
<p>That would obviously be more likely if Microsoft didn&#8217;t lodge patents for stuff like this.  Who can blame them, you might say, with things like i4i happening to them?  Well, my response is that they should be using their considerable corporate muscle to lobby for patent reform.  In the absence of such efforts, you can only conclude that the innovation inhibiting patent system suits Microsoft, event though they take the odd hundred million dollar hit from it.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.docx4java.org/blog/2010/11/microsofts-data-binding-patent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

