Defines the AltChunk Class. When the object is serialized out as xml, its qualified name is w:altChunk.
Assembly: DocumentFormat.OpenXml (in DocumentFormat.OpenXml.dll)
[ISO/IEC 29500-1 1st Edition]
altChunk (Anchor for Imported External Content)
This element specifies a location within a document for the insertion of the contents of a specified file containing external content to be imported into the main WordprocessingML document. The specified file's contents should appear at the specified location within the document, and can henceforth be emitted as regular WordprocessingML without distinction to its origin. The location of the external content to be imported shall be specified by the relationship whose Id attribute matches the id attribute on this element.
If the relationship type of the relationship specified by this element is not http://schemas.openxmlformats.org/officeDocument/2006/afChunk, is not present, or does not have a TargetMode attribute value of Internal, then the document shall be considered non-conformant. If an application cannot process external content of the content type specified by the targeted part, then it should ignore the specified alternate content but continue to process the file. If possible, it should also provide some indication that unknown content was not imported.
[Example: Consider a WordprocessingML document consisting of contents which must be imported from the following HTML document:
<html … > <body style="margin-left:200px;margin-top:50px"> <p>Paragraph one.</p> <blockquote style="border:5px solid #00FFFF">Paragraph in a blockquote.</blockquote> <p>Paragraph two.</p> </body> </html>
The resulting WordprocessingML host document would consist of its own WordprocessingML content as well as an external content import anchor in the appropriate location:
<w:body> <w:altChunk r:id="altChunk1" /> <w:p/> <w:sectPr> … </w:sectPr> </w:body>
The altChunk element specifies that the external content targeted by the relationship with an ID of altChunk1 must be imported at the beginning of the document. Examining the contents of the corresponding relationship part item, we can see the targets for that relationship:
<Relationships … > … <Relationship Id="altChunk1" TargetMode="Internal" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/afChunk" Target="import.htm" /> …</Relationships>
The corresponding relationship part item shows that the file to be imported is located next to the main document and is named import.htm. end example]
body (§17.2.2); comment (§188.8.131.52); docPartBody (§17.12.6); endnote (§17.11.2); footnote (§17.11.10); ftr (§17.10.3); hdr (§17.10.4); tc (§17.4.66)
altChunkPr (External Content Import Properties)
id (Relationship to Part)
Specifies the relationship ID to a specified part containing alternate content for import.
If the specified relationship does not match the relationship type required by the parent element, then this document shall be considered to be non-conformant.
[Example: Consider an XML element which has the following id attribute:
<… r:id="rId10" />
The markup specifies the associated relationship part with relationship ID rId1 contains the corresponding relationship information for the parent XML element. end example]
The possible values for this attribute are defined by the ST_RelationshipId simple type (§184.108.40.206).
[Note: The W3C XML Schema definition of this element’s content model (CT_AltChunk) is located in §A.1. end note]
© ISO/IEC29500: 2008.
The following example shows how to merge two word-processing documents using altChunk. The example inserts the content of the file (source.docx) into another file (Destination.docx). After running the example, examine the contents the file “Destination.docx.” You will notice that the contents of the source file are inserted right after the text that was originally in the file. Notice also that the code example starts by deleting the file “Destination.docx” and creates a fresh one. This is to avoid the ID conflict when you run the code more than once.
Imports System.Linq Imports System.IO Imports DocumentFormat.OpenXml.Packaging Imports DocumentFormat.OpenXml.Wordprocessing Module Module1 Sub Main(ByVal args As String()) Dim fileName1 As String = "c:\Users\Public\Documents\Destination.docx" Dim fileName2 As String = "c:\Users\Public\Documents\Source.docx" Dim testFile As String = "c:\Users\Public\Documents\Test.docx" File.Delete(fileName1) File.Copy(testFile, fileName1) Using myDoc As WordprocessingDocument = WordprocessingDocument.Open(fileName1, True) Dim altChunkId As String = "AltChunkId1" Dim mainPart As MainDocumentPart = myDoc.MainDocumentPart Dim chunk As AlternativeFormatImportPart = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId) Using fileStream As FileStream = File.Open(fileName2, FileMode.Open) chunk.FeedData(fileStream) End Using Dim altChunk As New AltChunk() altChunk.Id = altChunkId mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.Elements(Of Paragraph)().Last()) mainPart.Document.Save() End Using End Sub End Module