On Nov 11, 2010, at 3:42 PM, Florin Ciubotaru wrote:
Hi,
On Thu, Nov 11, 2010 at 12:55 PM, Vincent Massol <vincent(a)massol.net> wrote:
On Nov 11, 2010, at 11:50 AM, Florin Ciubotaru wrote:
Hi Marius,
On Thu, Nov 11, 2010 at 10:06 AM, Marius Dumitru Florea <
mariusdumitru.florea(a)xwiki.com> wrote:
Florin, I suspect you have to update the XHTML
that XWord generates when
the user inserts an image to match the rendering module expectations.
See
http://jira.xwiki.org/jira/browse/XWIKI-5554 . Starting with XE 2.5
image and link markers (the XHTML comments used by the rendering module)
use the same syntax. Let me know if you need any help.
Indeed, this could be the cause of the issue. I would have expected this
behavior to be backwords compatible or having the old one deprecated for
several XWiki versions as we receive this 'formated' XHTML trough public
APIs. At this point the conversion will simply crash when used by an
older
client.
IMO we should check the version of XE when XWord connects to it and if it's
not compatible mention it.
WDYT?
XOffice already checks the XE version for several reasons. For this
particular issue, I'd prefer to implement the fix it rather then saying it's
incompatible. First thing to do until a release is done, is to at least
document this on the wiki.
The client relies on the XML-RPC and REST APIs which means that it should be
compatible with the server as long as nothing changes in the API specs.
I cannot confirm the exact cause of the issue yet. But based on the hint
from Marius I could say that the xhtml parser should have accepted the old
image marker for several versions. XML-RPC is a backwards compatible API,
once we introduced the conversion methods, it means we commit to having them
working properly across several XWiki versions.
On the server side, in the rendering module, we have *voluntarily* broken several APIs.
See the release notes for 2.5:
http://www.xwiki.org/xwiki/bin/view/Main/ReleaseNotesXWikiEnterprise25#HAPIā¦
I don't know how this can affect you (i.e how this can affect the XMLRPC module).
But if you produce XHTML on the XOffice side and if this XHTML contains markers then the
marker syntax has changed in 2.5.
Thanks
-Vincent
Florin
>
> Thanks
> -Vincent
>
>> Florin
>>
>>>
>>> Marius
>>>
>>> On 11/11/2010 07:11 AM, Paul Harris wrote:
>>>> Hi Abel and all,
>>>>
>>>> This is what the stderr spits out when you try and upload an image via
>>>> xword:
>>>> 2010-11-11 12:56:46,297 [
>>>>
http://localhost:8080/xwiki/bin/admin/XWiki/XWikiPreferences] INFO
>>>> .AbstractXWikiMigrationManager - No storage migration required since
>>>> current version is [15429]
>>>> 2010-11-11 12:58:59,508 [
http://130.95.212.23:8080/xwiki/xmlrpc] ERROR
>>>> server.XmlRpcStreamServer - execute: Error while performing
> request
>>>> org.apache.xmlrpc.common.XmlRpcInvocationException: Failed to invoke
>>> method
>>>> convert in class com.xpn.xwiki.xmlrpc.XWikiXmlRpcApiImpl: Exception
> while
>>>> performing syntax conversion.
>>>> at
>>>>
>>>
>
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:126)
>>>> at
>>>>
>>>
>
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:103)
>>>> at
>>>>
>>>
> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:43)
>>>> at
>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:83)
>>>> at
>>>>
>>>
> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:191)
>>>> at
>>>>
>>>
>
org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:104)
>>>> at
>>>>
> org.apache.xmlrpc.webserver.XmlRpcServlet.doPost(XmlRpcServlet.java:191)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>>>> at
>>>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
>>>> at
>>>>
>>>
>
com.xpn.xwiki.wysiwyg.server.filter.XWikiContextInitializationFilter.doFilter(XWikiContextInitializationFilter.java:87)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
>>>
> com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
>>>
>
org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:218)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
>>>
>
org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
>>>> at
>>>>
>>>
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>>>> at
>>>>
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>>>> at
>>>>
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>>>> at
>>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>>>> at
>>>>
>>>
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>>>> at
>>>>
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>>>> at org.mortbay.jetty.Server.handle(Server.java:326)
>>>> at
>>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536)
>>>> at
>>>>
>>>
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:930)
>>>> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
>>>> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>>>> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
>>>> at
>>>>
>>>
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
>>>> at
>>>>
>>>
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
>>>> Caused by: java.lang.RuntimeException: Exception while performing
> syntax
>>>> conversion.
>>>> at
>>>>
>>>
> com.xpn.xwiki.xmlrpc.XWikiXmlRpcApiImpl.convert(XWikiXmlRpcApiImpl.java:1387)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>>> at
>>>>
>>>
>
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:112)
>>>> ... 34 more
>>>> Caused by: org.xwiki.rendering.converter.ConversionException: Failed to
>>>> parse input source
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.converter.DefaultConverter.convert(DefaultConverter.java:56)
>>>> at
>>>>
>>>
> com.xpn.xwiki.xmlrpc.XWikiXmlRpcApiImpl.convert(XWikiXmlRpcApiImpl.java:1383)
>>>> ... 39 more
>>>> Caused by: org.xwiki.rendering.parser.ParseException: Failed to parse
>>> input
>>>> source
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.AbstractWikiModelParser.parse(AbstractWikiModelParser.java:142)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.AbstractWikiModelParser.parse(AbstractWikiModelParser.java:97)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.converter.DefaultConverter.convert(DefaultConverter.java:52)
>>>> ... 40 more
>>>> Caused by: org.wikimodel.wem.WikiParserException:
>>>> java.lang.ArrayIndexOutOfBoundsException: 1
>>>> at org.wikimodel.wem.xhtml.XhtmlParser.parse(XhtmlParser.java:107)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.AbstractWikiModelParser.parse(AbstractWikiModelParser.java:140)
>>>> ... 42 more
>>>> Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.xhtml.XHTMLMarkerResourceReferenceParser.parse(XHTMLMarkerResourceReferenceParser.java:53)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.xhtml.XWikiCommentHandler.handleImageCommentStop(XWikiCommentHandler.java:180)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.xhtml.XWikiCommentHandler.onComment(XWikiCommentHandler.java:103)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.impl.XhtmlHandler$TagStack.onComment(XhtmlHandler.java:347)
>>>> at
>>>>
> org.wikimodel.wem.xhtml.impl.XhtmlHandler.comment(XhtmlHandler.java:567)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.comment(DefaultXMLFilter.java:73)
>>>> at
>>>>
>>>
>
org.wikimodel.wem.xhtml.filter.XHTMLWhitespaceXMLFilter.comment(XHTMLWhitespaceXMLFilter.java:250)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.comment(DefaultXMLFilter.java:73)
>>>> at
>>>>
>>>
>
org.wikimodel.wem.xhtml.filter.AccumulationXMLFilter.comment(AccumulationXMLFilter.java:77)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.comment(DefaultXMLFilter.java:73)
>>>> at
>>>>
> org.wikimodel.wem.xhtml.filter.DTDXMLFilter.comment(DTDXMLFilter.java:78)
>>>> at org.apache.xerces.parsers.AbstractSAXParser.comment(Unknown
>>> Source)
>>>> at
>>>>
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanComment(Unknown
>>>> Source)
>>>> at
>>>>
>>>
>
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>>>> Source)
>>>> at
>>>>
>>>
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
>>>> Source)
>>>> at
>>>> org.apache.xerces.parsers.XML11NonValidatingConfiguration.parse(Unknown
>>>> Source)
>>>> at
>>>> org.apache.xerces.parsers.XML11NonValidatingConfiguration.parse(Unknown
>>>> Source)
>>>> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>>>> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
> Source)
>>>> at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:44)
>>>> at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:44)
>>>> at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:44)
>>>> at org.wikimodel.wem.xhtml.XhtmlParser.parse(XhtmlParser.java:104)
>>>> ... 43 more
>>>> Caused by:
>>>> java.lang.RuntimeException: Exception while performing syntax
> conversion.
>>>> at
>>>>
>>>
> com.xpn.xwiki.xmlrpc.XWikiXmlRpcApiImpl.convert(XWikiXmlRpcApiImpl.java:1387)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>>> at
>>>>
>>>
>
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:112)
>>>> at
>>>>
>>>
>
org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:103)
>>>> at
>>>>
>>>
> org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:43)
>>>> at
>>> org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:83)
>>>> at
>>>>
>>>
> org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:191)
>>>> at
>>>>
>>>
>
org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:104)
>>>> at
>>>>
> org.apache.xmlrpc.webserver.XmlRpcServlet.doPost(XmlRpcServlet.java:191)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>>>> at
>>>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
>>>> at
>>>>
>>>
>
com.xpn.xwiki.wysiwyg.server.filter.XWikiContextInitializationFilter.doFilter(XWikiContextInitializationFilter.java:87)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
>>>
> com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
>>>
>
org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:218)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
>>>
>
org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>> at
>>>>
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
>>>> at
>>>>
>>>
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>>>> at
>>>>
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>>>> at
>>>>
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>>>> at
>>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
>>>> at
>>>>
>>>
>
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>>>> at
>>>>
>>>
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>>>> at
>>>>
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>>>> at org.mortbay.jetty.Server.handle(Server.java:326)
>>>> at
>>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536)
>>>> at
>>>>
>>>
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:930)
>>>> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
>>>> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>>>> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
>>>> at
>>>>
>>>
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
>>>> at
>>>>
>>>
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
>>>> Caused by: org.xwiki.rendering.converter.ConversionException: Failed to
>>>> parse input source
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.converter.DefaultConverter.convert(DefaultConverter.java:56)
>>>> at
>>>>
>>>
> com.xpn.xwiki.xmlrpc.XWikiXmlRpcApiImpl.convert(XWikiXmlRpcApiImpl.java:1383)
>>>> ... 39 more
>>>> Caused by: org.xwiki.rendering.parser.ParseException: Failed to parse
>>> input
>>>> source
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.AbstractWikiModelParser.parse(AbstractWikiModelParser.java:142)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.AbstractWikiModelParser.parse(AbstractWikiModelParser.java:97)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.converter.DefaultConverter.convert(DefaultConverter.java:52)
>>>> ... 40 more
>>>> Caused by: org.wikimodel.wem.WikiParserException:
>>>> java.lang.ArrayIndexOutOfBoundsException: 1
>>>> at org.wikimodel.wem.xhtml.XhtmlParser.parse(XhtmlParser.java:107)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.AbstractWikiModelParser.parse(AbstractWikiModelParser.java:140)
>>>> ... 42 more
>>>> Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.xhtml.XHTMLMarkerResourceReferenceParser.parse(XHTMLMarkerResourceReferenceParser.java:53)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.xhtml.XWikiCommentHandler.handleImageCommentStop(XWikiCommentHandler.java:180)
>>>> at
>>>>
>>>
>
org.xwiki.rendering.internal.parser.wikimodel.xhtml.XWikiCommentHandler.onComment(XWikiCommentHandler.java:103)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.impl.XhtmlHandler$TagStack.onComment(XhtmlHandler.java:347)
>>>> at
>>>>
> org.wikimodel.wem.xhtml.impl.XhtmlHandler.comment(XhtmlHandler.java:567)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.comment(DefaultXMLFilter.java:73)
>>>> at
>>>>
>>>
>
org.wikimodel.wem.xhtml.filter.XHTMLWhitespaceXMLFilter.comment(XHTMLWhitespaceXMLFilter.java:250)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.comment(DefaultXMLFilter.java:73)
>>>> at
>>>>
>>>
>
org.wikimodel.wem.xhtml.filter.AccumulationXMLFilter.comment(AccumulationXMLFilter.java:77)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.comment(DefaultXMLFilter.java:73)
>>>> at
>>>>
> org.wikimodel.wem.xhtml.filter.DTDXMLFilter.comment(DTDXMLFilter.java:78)
>>>> at org.apache.xerces.parsers.AbstractSAXParser.comment(Unknown
>>> Source)
>>>> at
>>>>
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanComment(Unknown
>>>> Source)
>>>> at
>>>>
>>>
>
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>>>> Source)
>>>> at
>>>>
>>>
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
>>>> Source)
>>>> at
>>>> org.apache.xerces.parsers.XML11NonValidatingConfiguration.parse(Unknown
>>>> Source)
>>>> at
>>>> org.apache.xerces.parsers.XML11NonValidatingConfiguration.parse(Unknown
>>>> Source)
>>>> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>>>> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
> Source)
>>>> at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:44)
>>>> at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:44)
>>>> at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source)
>>>> at
>>>>
>>>
> org.wikimodel.wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:44)
>>>> at org.wikimodel.wem.xhtml.XhtmlParser.parse(XhtmlParser.java:104)
>>>> ... 43 more
>>>>
>>>>
>>>> Looks like XWord generates invalid XML ? Ideas?
>>>>
>>>> I'll add this to jira too.
>>>>
>>>> cheers
>>>> Paul