キットバッグの 3 つのテクニック:
カスタム XML データ バインディング。これにより、XML ドキュメントを docx に挿入し、(XPath 経由でリンクされた) データを自動的に表示させることができます。ただし、ハイパーリンク内ではないため、これはうまくいかない場合があります。docx を Word で最初に開いたときに AutoOpen マクロを実行して、テキストをハイパーリンクに変換することもできます。
AltChunk。これにより、docx 内に HTML を含めることができます。ただし、docx を変更する必要があります。(下記 3 参照)
フラット OPC XML . これは docx を 1 つの XML ファイルとして表現したもので、Word 2007 以降では問題なく読み書きできます。これを使用すると、選択したツールを使用してハイパーリンクの内容を文字列置換できます。必要に応じて、この表現を使用してコンテンツを AltChunks に簡単に挿入することもできます。
ハイパーリンクを置き換える際のわずかな課題は、2 か所で行う必要があることです。1 つはドキュメント自体 (document.xml) でユーザーに表示されるリンク テキスト、2 番目はリンク先 URL (関係部分) です。これらは relId によって結び付けられます。
AltChunk を使えば一箇所で置換できます。ドキュメントの長さ、および何百もの AltChunks がある場合にパフォーマンスの問題が発生するかどうかはわかりません (基本的にハイパーリンクが 1 つしか含まれていない場合でも)。
HTML AltChunk を含む Flat OPC XML ファイルの例を次に示します (保存して Word にドラッグするか、[ファイル] > [開く] を実行できるはずです)。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<pkg:part pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:name="/_rels/.rels">
<pkg:xmlData>
<rel:Relationships xmlns:rel="http://schemas.openxmlformats.org/package/2006/relationships">
<rel:Relationship Id="rId1" Target="word/document.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"/>
</rel:Relationships>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" pkg:name="/word/document.xml">
<pkg:xmlData>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" >
<w:body>
<w:altChunk r:id="rId2"/>
<w:sectPr>
<w:pgSz w:code="1" w:h="15840" w:w="12240"/>
<w:pgMar w:bottom="1440" w:left="1440" w:right="1440" w:top="1440"/>
</w:sectPr>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:name="/word/_rels/document.xml.rels">
<pkg:xmlData>
<rel:Relationships xmlns:rel="http://schemas.openxmlformats.org/package/2006/relationships">
<rel:Relationship Id="rId2" Target="../chunk.html" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk"/>
</rel:Relationships>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:compression="store" pkg:contentType="text/html" pkg:name="/chunk.html">
<pkg:binaryData>PGh0bWw+PGJvZHk+PHA+PGEgaHJlZj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tIj5TdGFja092ZXJmbG93PC9hPjwvcD48L2JvZHk+PC9odG1sPg==</pkg:binaryData>
</pkg:part>
<pkg:part pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:name="/_rels/chunk.html.rels">
<pkg:xmlData>
<rel:Relationships xmlns:rel="http://schemas.openxmlformats.org/package/2006/relationships"/>
</pkg:xmlData>
</pkg:part>
</pkg:package>
バイナリデータは
"<html><body><p><a href="http://stackoverflow.com">StackOverflow</a></p></body></html>"
base64 エンコード (Flat OPC XML 形式で必要)。