プロジェクトの要件を満たすためにdocx4jでカバーする必要のあるすべての「ドキュメント関連」機能をテストするための小さなJavaプログラムを構築しています。要約すると、ユーザーに「生のテンプレート」として提供される「コンテンツコントロール」を使用してテンプレートを作成できること。ユーザーがそれらを拡張して、最終的にデータを入力できるようにします。「繰り返して条件付き」の機能があるため、「docx4j」を扱っています。
これは、プログラムによる私の進歩です。
1)空白のドキュメントを作成します(DONE)
2)xmlデータ(請求書の例ではpart3.xml)を使用してカスタムxmlパーツを追加します。(終わり)
3)xml xpaths参照(請求書の例ではpart4.xml)を使用してカスタムxmlパーツを追加します。(終わり)
4)コンテンツコントロールを追加します(保留中)
請求書の例からのこの抜粋に似たものである必要があります。
<w:sdt>
<w:sdtPr>
<w:alias w:val="Customer name" />
<w:tag w:val="od:xpath=x1&customer name=customer name" />
<w:id w:val="1418037941" />
<w:placeholder>
<w:docPart w:val="DefaultPlaceholder_22675703" />
</w:placeholder>
<w:dataBinding w:xpath="/invoice[1]/customer[1]/name[1]" w:storeItemID="{8B049945-9DFE-4726-9DE9-CF5691E53858}" />
<w:text />
</w:sdtPr>
<w:sdtContent>
<w:p>
<w:r>
<w:t>Joe Bloggs</w:t>
</w:r>
</w:p>
</w:sdtContent>
</w:sdt>
そしてここに私の質問があります:このxmlを生成する方法は?Javaコードで実行できますか、それともWordからのみ実行できますか?「1418037941」と「DefaultPlaceholder_22675703」の値はどのように生成されますか?私はそれらを「発明」することはできず、どこか他の場所で参照されていると思います。MainDocumentPartクラスでそのためのメソッドを探していましたが、見つかりませんでした。私は何かを誤解していますか?
他の手順は私にとってほとんど問題ありません:
5)「前処理」を実行します(完了)
6)「プロセス」を実行します(完了)
7)「ストリップ」を実行します(repatタグを削除することを除いて完了)
ご助力ありがとうございます!デビッド