2x2 テーブルを含む *.docx ファイルを作成しました。各セルには、 = 行番号と= 列番号のテキストCell x-y
が含まれています。x
y
このドキュメントを単純な変換プロセスに渡すと、docx4j のDifferencer.diff()
メソッドは違いを報告しません (つまり、タグw:ins
もタグもありませんw:del
)。
.docx には、元のドキュメントのテキストが<w:tc> -> <w:p>
タグ内で次のように分割されているにもかかわらず、これは予期され、適切に処理されます。
<w:r> <w:t>セル</w:t> </w:r> <w:r> <w:t xml:space="preserve"> 1-1</w:t> </w:r>
変換されたドキュメントでは次のようになります。
<w:r> <w:t xml:space="preserve">セル 1-1</w:t> </w:r>
ただし、ドキュメントのテーブルの上に「テーブル タイトル」というテキストを追加すると、元のドキュメントの内容 (Word の処理、それについては何もできません) セルが 1 つにマージされ<w:r>
ます。
<w:r> <w:t>セル 1-1</w:t> </w:r>
変換されたドキュメントの唯一の違いは、xml:space="preserve"
挿入されていることです。
<w:r> <w:t xml:space="preserve">セル 1-1</w:t> </w:r>
ただし、docx4j のメソッドは、各セルのコンテンツが挿入されたことを報告し、生成された差分ドキュメントのDifferencer.diff()
各セルのコンテンツとして次のように表示します。w:tc
w:p
<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">セル 1-1</w:t> </w:r> </w:ins>
<w:tbl>
終了タグの直後に、削除された各セルのコンテンツが表示されます。
<!-- 簡易削除の扱い 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>セル 1-1 </w:r> </w:デル> </w:p>
xml:space="preserve"
テーブルの前に挿入されたテキストで行うため、Differencer が属性を無視できることはわかっているので、それが原因ではないかと思います。
これらのテーブル シナリオは、 の意図したユース ケース外Differencer
ですか? 使い方・呼び出しの間違いでしょうか?バグ?
任意のガイダンスをいただければ幸いです。