我创建了一个带有2x2表的* .docx文件,每个单元格包含文本Cell x-y
,其中x
=行号,y
=列号。
当我通过简单的转换过程传递此文档时,docx4j的Differencer.diff()
方法报告没有差异(即没有w:ins
或w:del
标记。)
尽管.docx在<w:tc> -> <w:p>
标记中将原始文档的文本分解为这样的事实,但这是预期的并且处理得很干净:
<w:r> <w:t>Cell</w:t> </w:r> <w:r> <w:t xml:space="preserve"> 1-1</w:t> </w:r>
并在转换后的文档中:
<w:r> <w:t xml:space="preserve">Cell 1-1</w:t> </w:r>
但是,如果我在文档中的表格上方添加文本“表标题”,原始文档的内容(Word的处理,我无能为力)单元格合并为一个<w:r>
:
<w:r> <w:t>Cell 1-1</w:t> </w:r>
转换后的文档中唯一的区别是插入了xml:space="preserve"
:
<w:r> <w:t xml:space="preserve">Cell 1-1</w:t> </w:r>
然而,docx4j的Differencer.diff()
方法现在报告插入了每个单元格的内容,并将以下内容显示为每个w:tc
{{1}的内容在生成的差异文档中:
<w:ins xmlns:xalan="http://xml.apache.org/xalan" xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage" w:date="2009-03-11T17:57:00Z" w:author="someone" w:id="1"> <w:r> <w:t xml:space="preserve">Cell 1-1</w:t> </w:r> </w:ins>
并在关闭w:p
标记后立即显示每个单元格的内容已删除:
<!--Handling simple deleted w:p--> <w:p xmlns:xalan="http://xml.apache.org/xalan" xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage"> <w:del w:date="2009-03-11T17:57:00Z" w:author="someone" w:id="5"> <w:r> <w:delText>Cell 1-1 </w:r> </w:del> </w:p>
我知道差异器能够忽略<w:tbl>
属性,因为它在表格之前插入了文本,所以我怀疑这是原因。
这些表格方案是否超出了xml:space="preserve"
的预期用例?这是使用/调用中的错误吗?错误?
感谢任何指导。