1.2 Die XML-Ausgabe

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 Menü-Punkt „Speichern unter…“ auszuwählen und dann der Datentyp „PowerPoint XML-Präsentation (*.xml)“.

Abb. 5: Speicherfunktion für die XML-Ausgabe

Abb. 5: Speicherfunktion für die XML-Ausgabe

In der so gespeicherten XML-Datei befinden sich nun alle Informationen, die üblicherweise 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ärdaten. Wird beispielsweise eine Grafik eingebunden, werden hier ihre Binärdaten – an Stelle eines Verweises auf die Datei – angegeben. In diesem Fall enthält 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.openxmlformats-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 >>
Tipp der data2type-Redaktion:
Zum Thema PresentationML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: