The basic document structure of a PresentationML document consists of a number of parts, among which is the main part that contains the presentation definition. The following text from the [!includeISO/IEC 29500 URL] specification introduces the overall form of a PresentationML package.
The main part of a PresentationML package starts with a presentation root element. That element contains a presentation, which, in turn, refers to a slide list, a slide master list, a notes master list, and a handout master list. The slide list refers to all of the slides in the presentation; the slide master list refers to the entire slide masters used in the presentation; the notes master contains information about the formatting of notes pages; and the handout master describes how a handout looks.
A handout is a printed set of slides that can be provided to an audience.
As well as text and graphics, each slide can contain comments and notes, can have a layout, and can be part of one or more custom presentations. A comment is an annotation intended for the person maintaining the presentation slide deck. A note is a reminder or piece of text intended for the presenter or the audience.
Other features that a PresentationML document can include the following: animation, audio, video, and transitions between slides.
A PresentationML document is not stored as one large body in a single part. Instead, the elements that implement certain groupings of functionality are stored in separate parts. For example, all authors in a document are stored in one authors part while each slide has its own part.
[!includeISO/IEC 29500 version]
The following XML code example represents a presentation that contains two slides denoted by the IDs 267 and 256.
<p:presentation xmlns:p="…" … >
<p:sldMasterIdLst>
<p:sldMasterId
xmlns:rel="https://…/relationships" rel:id="rId1"/>
</p:sldMasterIdLst>
<p:notesMasterIdLst>
<p:notesMasterId
xmlns:rel="https://…/relationships" rel:id="rId4"/>
</p:notesMasterIdLst>
<p:handoutMasterIdLst>
<p:handoutMasterId
xmlns:rel="https://…/relationships" rel:id="rId5"/>
</p:handoutMasterIdLst>
<p:sldIdLst>
<p:sldId id="267"
xmlns:rel="https://…/relationships" rel:id="rId2"/>
<p:sldId id="256"
xmlns:rel="https://…/relationships" rel:id="rId3"/>
</p:sldIdLst>
<p:sldSz cx="9144000" cy="6858000"/>
<p:notesSz cx="6858000" cy="9144000"/>
</p:presentation>
Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the namespace. The following table lists the class names of the classes that correspond to the sld, sldLayout, sldMaster, and notesMaster elements.
PresentationML Element | Open XML SDK Class | Description |
---|---|---|
sld | xref:DocumentFormat.OpenXml.Presentation.Slide | Presentation Slide. It is the root element of SlidePart. |
sldLayout | xref:DocumentFormat.OpenXml.Presentation.SlideLayout | Slide Layout. It is the root element of SlideLayoutPart. |
sldMaster | xref:DocumentFormat.OpenXml.Presentation.SlideMaster | Slide Master. It is the root element of SlideMasterPart. |
notesMaster | xref:DocumentFormat.OpenXml.Presentation.NotesMaster | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. |