Der PPTX-Container ist dazu konstruiert, als Dateiformat zu fungieren, das höchstens zur Konvertierung manipuliert wird. Für XML-Entwicklung ist die Ausgabe einer einzelnen XML-Datei gedacht. Für diese XML-Ausgabe ist einfach der Menu-Punkt „speichern unter…“ auszuwählen und dann der Datentyp „PowerPoint XML-Präsentation (*.xml)“.

Abb. 5: Speicherfunktion für die XML-Ausgabe
In der so gespeicherten XML-Datei befinden sich nun alle Informationen, die üblicher Weise in einem PPTX-Container enthalten sind. Hierzu wird ein einfaches System verwendet. Die Datei verfügt über das Wurzelelement pkg:package wobei der Präfix für den Namensraum „http://schemas.microsoft.com/office/2006/xmlPackage“ steht. Dieses Wurzelelement enthält beliebig viele pkg:part-Elemente. Jedes pkg:part-Element steht für einen Part im PPTX-Container und hat ein pkg:name-Attribut mit dem Namen dieses Parts.
Der Name ist der gleiche wie der im PPTX-Container, also der Container-Interne Pfad, der zu dieser Datei führt. Zu dem pkg:name-Attribut erhält das pkg:part-Element ein pkg:contentType-Attribut. Dieses gibt mit einem eindeutigen String das Inhaltsmodel dieses Parts an. Im PPTX-Container sind die Content-Types aller Parts in der [Content_Types].xml-Datei in der obersten Ebene des Containers aufgeführt.
<?mso-application progid="PowerPoint.Show"?> <pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage"> … … <pkg:part pkg:name="/ppt/presentation.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"> … … </pkg:part> <pkg:part pkg:name="/ppt/slides/slide1.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml"> … … … </pkg:part>
Die PI (Processing Instruction) <?mso-application progid="PowerPoint.Show"?> am Anfang des Dokumentes ist der Indikator für das Betriebssystem, diese, sich ansonsten nicht von einem gewöhnlichen XML-Dokument unterscheidende Datei mit PowerPoint zu öffnen, anstatt mit dem üblichen XML-Editor.
Jedes pkg:part-Element enthält genau ein Kindelement. Das Kindelement ist abhängig vom Inhalt des Parts. In einzelnen Fällen besteht ein Part aus Binär-Daten. Werden beispielsweise eine Grafik eingebunden, wird hier dessen Binärdaten – an Stelle eines Verweises auf die Datei – angegeben. In diesem Fall enthällt das entsprechende pkg:part-Element das Kindelement pkg:binaryData. Handelt es sich jedoch, wie bei den überwiegenden Fällen, bei dem Part um XML-Daten als Inhalt, heißt dieses Kindelement pkg:xmlData.
<pkg:part pkg:name="/ppt/slides/_rels/slide50. xml.rels" pkg:contentType="application/vnd. openxmlformat s-package.relationships+xml"> <pkg:xmlData> <Relationships xmlns="http://schemas. openxmlformats. org/package/2006/ relationships"> <Relationship Id="rId2" Type="http://schemas. openxmlformats. org/officeDocument/2006/ relationships/ notesSlide" Target="../ notesSlides/ notesSlide43.xml"/> <Relationship Id="rId1" Type="http://schemas. openxmlformats. org/officeDocument/2006/ relationships/ slideLayout" Target="../ slideLayouts/ slideLayout3.xml"/> </Relationships> </pkg:xmlData> </pkg:part> |
... ... ... ... <Relationships xmlns="http://schemas. openxmlformats. org/package/2006/ relationships"> <Relationship Id="rId2" Type="http://schemas. openxmlformats. org/officeDocument/ 2006/ relationships/ notesSlide" Target="../ notesSlides/ notesSlide43.xml"/> <Relationship Id="rId1" Type="http://schemas. openxmlformats. org/officeDocument/ 2006/ relationships/ slideLayout" Target="../ slideLayouts/ slideLayout3.xml"/> </Relationships> ... ... |
Der Inhalt des Elements pkg:xmlData ist identisch mit dem Inhalt des entsprechenden Parts im PPTX-Container. Das Kindelement von pkg:xmlData ist somit das Wurzelelement des Parts. Ebenfalls werden in diesem Element alle Namensräume dieses Parts definiert, obwohl es üblich ist, bei XML-Dokumenten alle benötigten Namensräume im Wurzelelement zu definieren – in diesem Dokument also das pkg:package. So müssen mehrfach vorkommende Namensräume für jeden Part neu definiert werden.
| << zurück zu 1.1 Der PPTX-Container | weiter zu 2. Der Slide-Part >> |