1

2x2 テーブルを含む *.docx ファイルを作成しました。各セルには、 = 行番号と= 列番号のテキストCell x-yが含まれています。xy

このドキュメントを単純な変換プロセスに渡すと、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:tcw: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ですか? 使い方・呼び出しの間違いでしょうか?バグ?

任意のガイダンスをいただければ幸いです。

4

0 に答える 0