ODF format security: encryption, signatures and metadata management

Open Document Format (ODF) is an open standard for office documents – texts, spreadsheets, presentations and more – that is flexible and interoperable. As with any other digital format, its security is a key concern, as ODF files often contain sensitive information that, without adequate protection measures, can be exposed, tampered with or tracked.

This post analyses how ODF handles security, focusing on encryption, digital signatures and metadata management: three features that protect documents from prying eyes and tampering.

Encryption: content locking

ODF supports file-level encryption using standard algorithms. When you save an ODF document with a password, the content is compressed and then encrypted using AES (Advanced Encryption Standard), typically with a 256-bit key.

Here’s what happens behind the scenes:

  1. The document content (the XML file) is compressed.
  2. A random salt (a sequence of bits used together with a password as input to a one-way function) and an initialisation vector (IV), which is a block of bits of a predefined length, are generated.
  3. A key is derived from the password using PBKDF2 (Password-Based Key Derivation Function 2). The key is a string of data used with an algorithm to encode (encrypt) and decode (decrypt) the text, transforming it from plain text to unreadable text.
  4. AES encrypts the content using this key.

This is encryption based on open and verified algorithms, sufficiently strong when implemented correctly, whose security depends largely on the strength of the password. Users should therefore always use long, unique passwords, preferably created by a password generator.

Unfortunately, not all applications that support the ODF format implement encryption in the same way, with possible repercussions on interoperability.

Digital signatures: who modified the document?

Digital signatures guarantee authenticity and integrity, and show who created or modified the ODF file, and whether it has been modified by another user since its creation.

How it works:

  1. ODF uses XML digital signatures.
  2. A cryptographic hash of the document’s content is created (a fixed-size digital fingerprint of data, created by a one-way algorithm that is almost impossible to reverse).
  3. This hash is signed with the signer’s private key (a secret code, similar to a password, used to encrypt and decrypt data and digitally sign transactions).
  4. The signature is stored in “META-INF/documentsignatures.xml”.

This makes it possible to verify the origin of the document, but verifying signatures requires access to the signer’s public key or certificate. If the workflow involves multiple people, multiple signatures are supported. Any changes to the file after signing invalidate the signature.

Unfortunately, not all office suites that support ODF consistently display or validate signatures.

Metadata management: a potential information leak

Metadata can unintentionally disclose various information, including sensitive information such as usernames, file paths, software versions, timestamps (creation and save dates), and even content revision history.

What does metadata contain?

  1. Author name, change history, and save times.
  2. Custom properties, such as project codes or internal comments.
  3. Application-specific data embedded in namespaces.

Malicious actors can extract metadata for social engineering, document tracking, or profiling purposes. To prevent this, use metadata cleaning tools—such as those in LibreOffice—or document sanitisation tools, such as manually inspecting the “meta.xml” file within the ODF archive. Of course, it is always best to avoid including unnecessary comments or tracked changes before sharing.

Final considerations

ODF is a robust format, and its security features are solid when used correctly. Encrypt sensitive files with strong passwords. Sign important documents to assert ownership and integrity. And don’t forget to clean up metadata before hitting “send”.

Security is not just about features, but also about habits. Make these protections an integral part of your standard workflow, and your ODF files will be able to withstand most threats.

Make your ODF files accessible: a simple guide for everyone

People without disabilities have no problem viewing documents on a computer screen, but there are people with visual impairments or who are blind who use screen readers and keyboard navigation. ODF files have everything they need to be accessible to these people too, and this is a short guide to creating documents that they can use without any problems.

In the context of digital document management, accessible means that a document can be consulted without any constraints related to the ability to see or move one’s hands with dexterity. This means that people can quickly find what they are looking for (headings, lists, indexes), understand the meaning of graphs and images thanks to descriptions, tables are simple and clear, and they can read the text because the contrast is good and the links make sense even out of context.

To achieve this result, which does not discriminate against people based on their physical characteristics, it is necessary to follow a few simple rules when creating a document. Obviously, we are talking about LibreOffice, although the rules also apply to other office suites (although in this case the document format will be proprietary and not standard).

1. Use styles for headings (not just bold text)

  • Screen readers use headings to move around the page.
  • To do this, select the heading and choose Heading 1 from the styles drop-down menu, Heading 2 for sections, and Heading 3 for subsections.
  • Avoid skipping numbers, but always follow the order 1, 2, 3.

2. Create lists using the appropriate buttons

  • This way, screen readers count the items correctly.
  • To do this, highlight the items and click on the Bulleted List or Numbered List button. Avoid typing dots or numbers manually.

3. Add alternative text to every image, graph or icon

  • This way, people who cannot see the image will still receive the message.
  • To do this, right-click on the image, select Properties, select Options, and fill in the Alternative (text only) field.
  • For example: in the case of an image, ‘team photo: from left to right, Mr. X, Mr. Y, and Mr. Z’; in the case of a graph, ‘sales increased every month, and the fourth quarter was the highest with £X million’.

4. Create simple tables

  • Complex tables are difficult for screen readers to read.
  • To do this, use the first row for headers (for example: Name and Date), and avoid merging or splitting cells.
  • Avoid using tables solely to order elements within the page.

5. Create self-explanatory links

  • A link such as “click here” tells a screen reader nothing.
  • To do this, write the action related to the link as if it were the link itself.
  • For example: “Download the budget report (in ODF format)”.

6. Set the language

  • This allows screen readers to pronounce words correctly.
  • To do this for the entire document, select the language in the status bar at the bottom of the screen.
  • To do this for a portion of the document, highlight the text and select the language in the status bar at the bottom of the screen.

7. Use light colours and strong contrast

  • Screen readers have trouble reading low-contrast text.
  • To do this, use dark text on a light background, and never use colour alone to emphasise the meaning of a word.
  • For example: “Expired items are written in red and labelled as EXPIRED”.

8. Label all fields on any forms

  • This way, even visually impaired or blind people know what to type and where.
  • To do this, add a label immediately before the field (e.g., Email Address), and maintain a logical tab order (top to bottom, and left to right for Western languages).

9. Add a table of contents to longer documents

  • This makes navigation easier and faster.
  • To do this, place the cursor where you want it, select Insert, select Table of Contents, and accept the default settings.
  • For the table of contents, level 1/2/3 headings are used, so step 1 is extremely important.

The artificial complexity of OOXML files (the PPTX case)

This is the third and final post on the topic of the artificial complexity of the OOXML format. This complexity is the result of careful design aimed at preventing interoperability. Developers have to deal with a veritable “maze” of tags, even for the simplest content. This binds users to the Microsoft ecosystem, providing the first example of standard-based lock-in.

The PPTX case

To demonstrate the difference in complexity between Impress and PowerPoint XML schemas in ODF and OOXML formats, I created a simple eight-slide presentation summarising the most common types: title and subtitle, centred text, bulleted list, table, vector image, photo, colour graphics and video. I created the same file using both software programmes, starting from a basic template without a background to prevent interference with the slide format and, consequently, the XML schema.

This is the PDF file of the presentation (the first seven slides are identical, while the video on the last slide is replaced by a static image):

slidelo

To perform the analysis, I duplicated and renamed the two files, replacing the original extension with ‘ZIP’, and then unzipped them to create two folders containing all the files from their respective XML schemas.

The LibreOffice folder is very similar to the one created by Calc and Writer, containing five subfolders – three of which are identical to those of the ODS and ODT files – and five files. manifest.rdf is missing, but all the others are present and have the same characteristics. The Media and Pictures folders were added to contain multimedia content and images. Once again, all the content is located in the content.xml file, while the other files contain instructions for displaying the slides correctly and for displaying elements other than text.

Therefore, despite the diversity of the three applications (Calc, Writer and Impress), we are faced with an extremely consistent internal file structure, as one would expect from a standard that aims to simplify life for users and developers. This consistency is a key benefit and simplifies the reproducibility of the standard format.

The Microsoft 365 folder contains three subfolders and the [Content_Types].xml file, as with the XLSX and DOCX files examined in the last two weeks. One of the folders has a different name, but this relates to the application and does not increase complexity. Opening the ‘[Content_Types].xml’ file provides information about the other files, including those in the subfolders.

In this case, the content is located in eight slide*.xml files (where the asterisk is a sequential number) inside the slide folder within the ppt folder. These folders and files are completely different to those in the XLSX and DOCX files, but information relevant to displaying slides on screen is scattered throughout them. Again, there are no technical reasons for the differences in the XML schemas of the three files other than to make their internal structures more complex. This unnecessary complexity is also reflected in the XML files describing the contents of the presentation.

The ODP file

As with ODS and ODT files, the content.xml file is divided into two parts: the description of styles, which varies depending on the number and characteristics of the styles used in the document; and the description of the content itself, which varies depending on its length. In the case of a presentation, the style description can be extremely detailed and quite long if the slides contain different elements, as in the document I created for this comparison.

To avoid repetition, I extracted the first part of the content.xml file and simplified the style descriptions where they were repetitive (e.g. slide 7, where each coloured box corresponds to a style). In all these cases, I removed the less significant descriptions, leaving only the most detailed one.

The sequence is as follows: slide style; graphic element style (specifically, the red box on slide 7); title style; table, column, row and cell style; paragraph style; text style; and bullet point style.

CONTENT.XML (style description).

<office:automatic-styles>
<style:style style:name=”dp1″ style:family=”drawing-page”>
<style:drawing-page-properties presentation:background-visible=”true” presentation:background-objects-visible=”true” presentation:display-footer=”true” presentation:display-page-number=”false” presentation:display-date-time=”true”/>
</style:style>
<style:style style:name=”gr4″ style:family=”graphic” style:parent-style-name=”standard”>
<style:graphic-properties svg:stroke-color=”#000000″ draw:fill-color=”#ff0000″ draw:textarea-horizontal-align=”justify” draw:textarea-vertical-align=”middle” draw:auto-grow-height=”false” fo:min-height=”2.854cm” fo:min-width=”3.509cm” loext:decorative=”false”/>
</style:style>
<style:style style:name=”pr1″ style:family=”presentation” style:parent-style-name=”Default-title”>
<style:graphic-properties fo:min-height=”2.63cm” loext:decorative=”false”/>
<style:paragraph-properties style:writing-mode=”lr-tb”/>
</style:style>
<style:style style:name=”co1″ style:family=”table-column”>
<style:table-column-properties style:column-width=”11.988cm” style:use-optimal-column-width=”false”/>
</style:style>
<style:style style:name=”ro1″ style:family=”table-row”>
<style:table-row-properties style:row-height=”1.683cm” style:use-optimal-row-height=”false”/>
</style:style>
<style:style style:name=”ce1″ style:family=”table-cell”>
<style:text-properties style:font-name=”Aptos” fo:font-size=”24pt” style:font-size-asian=”24pt” style:font-size-complex=”24pt”/>
</style:style>
<style:style style:name=”P1″ style:family=”paragraph”>
<style:text-properties style:font-name=”Aptos” fo:font-size=”36pt” fo:font-weight=”bold” style:font-size-asian=”36pt” style:font-weight-asian=”bold” style:font-size-complex=”36pt” style:font-weight-complex=”bold”/>
<style:style style:name=”T1″ style:family=”text”>
<style:text-properties style:font-name=”Aptos” fo:font-size=”36pt” fo:font-weight=”bold” style:font-size-asian=”36pt” style:font-weight-asian=”bold” style:font-size-complex=”36pt” style:font-weight-complex=”bold”/>
</style:style>
<text:list-style style:name=”L1″>
<text:list-level-style-bullet text:level=”1″ text:bullet-char=”●”>
<style:list-level-properties text:min-label-width=”0.6cm”/>
<style:text-properties fo:font-family=”StarSymbol” style:use-window-font-color=”true” fo:font-size=”45%”/>
</text:list-level-style-bullet>
</text:list-style>
</office:automatic-styles>

CONTENT.XML (content description)

<office:body>
<office:presentation>
<draw:page draw:name=”page1″ draw:style-name=”dp1″ draw:master-page-name=”Default” presentation:presentation-page-layout-name=”AL1T0″>
<draw:frame presentation:style-name=”pr1″ draw:text-style-name=”P1″ draw:layer=”layout” svg:width=”25.199cm” svg:height=”2.63cm” svg:x=”1.4cm” svg:y=”0.627cm” presentation:class=”title” presentation:user-transformed=”true”>
<draw:text-box>
<text:p text:style-name=”P1″>
<text:span text:style-name=”T1″>Lorem Ipsum</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<draw:frame presentation:style-name=”pr2″ draw:text-style-name=”P3″ draw:layer=”layout” svg:width=”23.952cm” svg:height=”8.03cm” svg:x=”2.019cm” svg:y=”3.992cm” presentation:class=”subtitle” presentation:user-transformed=”true”>
<draw:text-box>
<text:p text:style-name=”P2″>
<text:span text:style-name=”T2″>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”1″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<draw:page draw:name=”page2″ draw:style-name=”dp1″ draw:master-page-name=”Default” presentation:presentation-page-layout-name=”AL2T32″>
<draw:frame presentation:style-name=”pr4″ draw:text-style-name=”P5″ draw:layer=”layout” svg:width=”23.975cm” svg:height=”11.976cm” svg:x=”2.019cm” svg:y=”2.019cm” presentation:class=”subtitle” presentation:user-transformed=”true”>
<draw:text-box>
<text:p text:style-name=”P2″>
<text:span text:style-name=”T3″>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In at sodales arcu, sollicitudin eleifend justo. Integer in ornare leo. Pellentesque ultrices sapien pharetra lectus finibus cursus. Vestibulum pulvinar, ex sed interdum pharetra, est risus efficitur arcu, ac aliquet ante diam ac eros. Sed vitae dui nec odio rutrum ornare. Cras in neque et neque cursus vehicula. Mauris posuere sed lorem at faucibus.</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”2″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<draw:page draw:name=”page3″ draw:style-name=”dp1″ draw:master-page-name=”Default” presentation:presentation-page-layout-name=”AL3T1″>
<draw:frame presentation:style-name=”pr5″ draw:text-style-name=”P1″ draw:layer=”layout” svg:width=”25.199cm” svg:height=”2.63cm” svg:x=”1.4cm” svg:y=”0.627cm” presentation:class=”title”>
<draw:text-box>
<text:p text:style-name=”P1″>
<text:span text:style-name=”T1″>Mauris efficitur volutpat dictum</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<draw:frame presentation:style-name=”pr6″ draw:text-style-name=”P6″ draw:layer=”layout” svg:width=”25.199cm” svg:height=”10.049cm” svg:x=”1.4cm” svg:y=”3.992cm” presentation:class=”outline” presentation:user-transformed=”true”>
<draw:text-box>
<text:list text:style-name=”L2″>
<text:list-item>
<text:p text:style-name=”P6″>
<text:span text:style-name=”T3″>Praesent tempus sodales lacus at accumsan.</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name=”P6″>
<text:span text:style-name=”T2″>Pellentesque vel neque rutrum, posuere sapien eget, eleifend leo.</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name=”P6″>
<text:span text:style-name=”T2″>Proin ut ultricies magna.</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name=”P6″>
<text:span text:style-name=”T2″>Nulla facilisi.</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name=”P6″>
<text:span text:style-name=”T2″>Donec sed risus quis tellus facilisis elementum.</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name=”P6″>
<text:span text:style-name=”T2″>Vivamus sit amet semper nisl, vel tristique mi.</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name=”P6″>
<text:span text:style-name=”T2″>Aenean lobortis neque in malesuada ornare.</text:span>
</text:p>
</text:list-item>
</text:list>
</draw:text-box>
</draw:frame>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”3″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<draw:page draw:name=”page4″ draw:style-name=”dp1″ draw:master-page-name=”Default” presentation:presentation-page-layout-name=”AL3T1″>
<draw:frame presentation:style-name=”pr5″ draw:text-style-name=”P1″ draw:layer=”layout” svg:width=”25.199cm” svg:height=”2.63cm” svg:x=”1.4cm” svg:y=”0.627cm” presentation:class=”title”>
<draw:text-box>
<text:p text:style-name=”P1″>
<text:span text:style-name=”T1″>Proin sed mattis elit</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<draw:frame draw:style-name=”gr2″ draw:layer=”layout” svg:width=”23.974cm” svg:height=”8.274cm” svg:x=”2.042cm” svg:y=”3.964cm” presentation:class=”table” presentation:user-transformed=”true”>
<table:table table:template-name=”default” table:use-first-row-styles=”true” table:use-banding-rows-styles=”true”>
<table:table-column table:style-name=”co1″/>
<table:table-column table:style-name=”co2″/>
<table:table-row table:style-name=”ro1″ table:default-cell-style-name=”ce1″>
<table:table-cell>
<text:p text:style-name=”P7″>Aenean ultricies turpis eu erat euismod porta.</text:p>
</table:table-cell>
<table:table-cell>
<text:p text:style-name=”P7″>Maecenas nec ullamcorper odio, ac tincidunt metus.</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″ table:default-cell-style-name=”ce1″>
<table:table-cell>
<text:p text:style-name=”P7″>Duis volutpat sapien at interdum consequat.</text:p>
</table:table-cell>
<table:table-cell>
<text:p text:style-name=”P7″>Donec vel semper nisl.</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″ table:default-cell-style-name=”ce1″>
<table:table-cell>
<text:p text:style-name=”P7″>Sed scelerisque odio non justo suscipit congue.</text:p>
</table:table-cell>
<table:table-cell>
<text:p text:style-name=”P7″>Maecenas convallis quis neque at elementum.</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro2″ table:default-cell-style-name=”ce1″>
<table:table-cell table:number-columns-spanned=”2″>
<text:p text:style-name=”P7″>In fringilla tortor id orci porttitor, a euismod velit molestie.</text:p>
</table:table-cell>
<table:covered-table-cell/>
</table:table-row>
</table:table>
<draw:image xlink:href=”Pictures/TablePreview1.svm” xlink:type=”simple” xlink:show=”embed” xlink:actuate=”onLoad”/>
</draw:frame>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”4″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<draw:page draw:name=”page5″ draw:style-name=”dp1″ draw:master-page-name=”Default” presentation:presentation-page-layout-name=”AL4T19″>
<draw:frame presentation:style-name=”pr5″ draw:text-style-name=”P1″ draw:layer=”layout” svg:width=”25.199cm” svg:height=”2.63cm” svg:x=”1.4cm” svg:y=”0.627cm” presentation:class=”title”>
<draw:text-box>
<text:p text:style-name=”P1″>
<text:span text:style-name=”T1″>Aliquam lobortis rutrum massa</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<draw:frame draw:style-name=”gr3″ draw:text-style-name=”P8″ draw:layer=”layout” svg:width=”19.983cm” svg:height=”10.119cm” svg:x=”4.015cm” svg:y=”3.945cm”>
<draw:image xlink:href=”Pictures/10004DCD0000333B00001B9032A76A02.svg” xlink:type=”simple” xlink:show=”embed” xlink:actuate=”onLoad” draw:mime-type=”image/svg+xml”>
<text:p/>
</draw:image>
<draw:image xlink:href=”Pictures/10000001000001F00000010B2D77AC6F.png” xlink:type=”simple” xlink:show=”embed” xlink:actuate=”onLoad” draw:mime-type=”image/png”/>
</draw:frame>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”5″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<draw:page draw:name=”page6″ draw:style-name=”dp1″ draw:master-page-name=”Default”>
<draw:frame draw:style-name=”gr3″ draw:text-style-name=”P8″ draw:layer=”layout” svg:width=”23.956cm” svg:height=”11.952cm” svg:x=”2.049cm” svg:y=”2.019cm”>
<draw:image xlink:href=”Pictures/100000000000140800000C3850FDFB6D.jpg” xlink:type=”simple” xlink:show=”embed” xlink:actuate=”onLoad” draw:mime-type=”image/jpeg”>
<text:p/>
</draw:image>
</draw:frame>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”6″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<draw:page draw:name=”page7″ draw:style-name=”dp1″ draw:master-page-name=”Default” presentation:presentation-page-layout-name=”AL4T19″>
<draw:frame presentation:style-name=”pr1″ draw:text-style-name=”P1″ draw:layer=”layout” svg:width=”25.199cm” svg:height=”2.63cm” svg:x=”1.4cm” svg:y=”0.627cm” presentation:class=”title” presentation:user-transformed=”true”>
<draw:text-box>
<text:p text:style-name=”P1″>
<text:span text:style-name=”T1″>Nullam ac laoreet orci</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<draw:custom-shape draw:style-name=”gr4″ draw:text-style-name=”P9″ draw:layer=”layout” svg:width=”4.009cm” svg:height=”3.104cm” svg:x=”2.004cm” svg:y=”11.396cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr5″ draw:text-style-name=”P10″ draw:layer=”layout” svg:width=”4.008cm” svg:height=”3.104cm” svg:x=”8.668cm” svg:y=”11.396cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr6″ draw:text-style-name=”P11″ draw:layer=”layout” svg:width=”4.008cm” svg:height=”3.104cm” svg:x=”15.332cm” svg:y=”11.353cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr7″ draw:text-style-name=”P12″ draw:layer=”layout” svg:width=”4.009cm” svg:height=”3.104cm” svg:x=”21.993cm” svg:y=”11.396cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr8″ draw:text-style-name=”P9″ draw:layer=”layout” svg:width=”4.009cm” svg:height=”3.103cm” svg:x=”2.003cm” svg:y=”7.47cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr9″ draw:text-style-name=”P10″ draw:layer=”layout” svg:width=”4.008cm” svg:height=”3.103cm” svg:x=”8.667cm” svg:y=”7.47cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr10″ draw:text-style-name=”P11″ draw:layer=”layout” svg:width=”4.008cm” svg:height=”3.103cm” svg:x=”15.331cm” svg:y=”7.427cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr11″ draw:text-style-name=”P12″ draw:layer=”layout” svg:width=”4.009cm” svg:height=”3.103cm” svg:x=”21.992cm” svg:y=”7.47cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr4″ draw:text-style-name=”P9″ draw:layer=”layout” svg:width=”4.009cm” svg:height=”3.104cm” svg:x=”2.002cm” svg:y=”3.543cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr5″ draw:text-style-name=”P10″ draw:layer=”layout” svg:width=”4.008cm” svg:height=”3.104cm” svg:x=”8.666cm” svg:y=”3.543cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr6″ draw:text-style-name=”P11″ draw:layer=”layout” svg:width=”4.008cm” svg:height=”3.104cm” svg:x=”15.33cm” svg:y=”3.5cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<draw:custom-shape draw:style-name=”gr7″ draw:text-style-name=”P12″ draw:layer=”layout” svg:width=”4.009cm” svg:height=”3.104cm” svg:x=”21.991cm” svg:y=”3.543cm”>
<text:p/>
<draw:enhanced-geometry svg:viewBox=”0 0 21600 21600″ draw:mirror-horizontal=”false” draw:mirror-vertical=”false” draw:type=”rectangle” draw:enhanced-path=”M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N”/>
</draw:custom-shape>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”7″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<draw:page draw:name=”page8″ draw:style-name=”dp1″ draw:master-page-name=”Default” presentation:presentation-page-layout-name=”AL3T1″>
<draw:frame presentation:style-name=”pr5″ draw:text-style-name=”P1″ draw:layer=”layout” svg:width=”25.199cm” svg:height=”2.63cm” svg:x=”1.4cm” svg:y=”0.627cm” presentation:class=”title”>
<draw:text-box>
<text:p text:style-name=”P1″>
<text:span text:style-name=”T1″>It could work</text:span>
</text:p>
</draw:text-box>
</draw:frame>
<draw:frame draw:style-name=”gr2″ draw:layer=”layout” svg:width=”16.608cm” svg:height=”9.134cm” svg:x=”5.695cm” svg:y=”3.684cm” presentation:class=”object”>
<draw:plugin xlink:href=”Media/It Could Work – Young Frankenstein.mp4″ xlink:type=”simple” xlink:show=”embed” xlink:actuate=”onLoad” draw:mime-type=”video/mp4″>
<draw:param draw:name=”Loop” draw:value=”false”/>
<draw:param draw:name=”Mute” draw:value=”false”/>
<draw:param draw:name=”VolumeDB” draw:value=”0″/>
</draw:plugin>
</draw:frame>
<presentation:notes draw:style-name=”dp2″>
<draw:page-thumbnail draw:style-name=”gr1″ draw:layer=”layout” svg:width=”14.848cm” svg:height=”11.136cm” svg:x=”3.075cm” svg:y=”2.257cm” draw:page-number=”8″ presentation:class=”page”/>
<draw:frame presentation:style-name=”pr3″ draw:text-style-name=”P4″ draw:layer=”layout” svg:width=”16.799cm” svg:height=”13.364cm” svg:x=”2.1cm” svg:y=”14.107cm” presentation:class=”notes” presentation:placeholder=”true”>
<draw:text-box/>
</draw:frame>
</presentation:notes>
</draw:page>
<presentation:settings presentation:mouse-visible=”false”/>
</office:presentation>
</office:body>

Overall, ODP’s XML file is slightly more complex than ODS’ and ODT’s XML files due to the greater complexity of the styles section. However, this is offset by the lower complexity of the content section. Once you understand the logic — the slide number sequence, style descriptions, descriptions of elements that do not fall within the styles and content descriptions — it is fairly easy to read, even for a basic user (and certainly for a developer).

One detail to note is that the names of the images (renamed with a numerical code) and videos (with the same name as the MP4 file) are consistent across the Pictures and Media folders and content.xml to facilitate identification.

The PPTX file

As the seven slide.xml files contain most of the information, I will focus on them. To avoid repetition, I am only publishing slides 5, 3, 4, 6, 7 and 8.

SLIDE3.XML

<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id=”1″ name=””/>
<p:cNvGrpSpPr/>
<p:nvPr/>
</p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm>
<a:off x=”0″ y=”0″/>
<a:ext cx=”0″ cy=”0″/>
<a:chOff x=”0″ y=”0″/>
<a:chExt cx=”0″ cy=”0″/>
</a:xfrm>
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”15″ name=”PlaceHolder 1″/>
<p:cNvSpPr>
<a:spLocks noGrp=”1″/>
</p:cNvSpPr>
<p:nvPr>
<p:ph type=”title”/>
</p:nvPr>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”504000″ y=”225720″/>
<a:ext cx=”9071640″ cy=”946800″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:noFill/>
<a:ln w=”0″>
<a:noFill/>
</a:ln>
</p:spPr>
<p:txBody>
<a:bodyPr lIns=”0″ tIns=”0″ rIns=”0″ bIns=”0″ anchor=”ctr”>
<a:spAutoFit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″ algn=”ctr”>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”3600″ b=”1″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Mauris efficitur volutpat dictum</a:t>
</a:r>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”16″ name=”PlaceHolder 2″/>
<p:cNvSpPr>
<a:spLocks noGrp=”1″/>
</p:cNvSpPr>
<p:nvPr>
<p:ph/>
</p:nvPr>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”504000″ y=”1437120″/>
<a:ext cx=”9071640″ cy=”3617640″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:noFill/>
<a:ln w=”0″>
<a:noFill/>
</a:ln>
</p:spPr>
<p:txBody>
<a:bodyPr lIns=”0″ tIns=”0″ rIns=”0″ bIns=”0″ anchor=”t”>
<a:normAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr marL=”432000″ indent=”-324000″>
<a:spcBef>
<a:spcPts val=”1057″/>
</a:spcBef>
<a:buClr>
<a:srgbClr val=”000000″/>
</a:buClr>
<a:buSzPct val=”45000″/>
<a:buFont typeface=”Wingdings” charset=”2″/>
<a:buChar char=””/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Praesent tempus sodales lacus at accumsan.</a:t>
</a:r>
</a:p>
<a:p>
<a:pPr marL=”432000″ indent=”-324000″>
<a:spcBef>
<a:spcPts val=”1057″/>
</a:spcBef>
<a:buClr>
<a:srgbClr val=”000000″/>
</a:buClr>
<a:buSzPct val=”45000″/>
<a:buFont typeface=”Wingdings” charset=”2″/>
<a:buChar char=””/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Pellentesque vel neque rutrum, posuere sapien eget, eleifend leo.</a:t>
</a:r>
</a:p>
<a:p>
<a:pPr marL=”432000″ indent=”-324000″>
<a:spcBef>
<a:spcPts val=”1057″/>
</a:spcBef>
<a:buClr>
<a:srgbClr val=”000000″/>
</a:buClr>
<a:buSzPct val=”45000″/>
<a:buFont typeface=”Wingdings” charset=”2″/>
<a:buChar char=””/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Proin ut ultricies magna.</a:t>
</a:r>
</a:p>
<a:p>
<a:pPr marL=”432000″ indent=”-324000″>
<a:spcBef>
<a:spcPts val=”1057″/>
</a:spcBef>
<a:buClr>
<a:srgbClr val=”000000″/>
</a:buClr>
<a:buSzPct val=”45000″/>
<a:buFont typeface=”Wingdings” charset=”2″/>
<a:buChar char=””/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Nulla facilisi.</a:t>
</a:r>
</a:p>
<a:p>
<a:pPr marL=”432000″ indent=”-324000″>
<a:spcBef>
<a:spcPts val=”1057″/>
</a:spcBef>
<a:buClr>
<a:srgbClr val=”000000″/>
</a:buClr>
<a:buSzPct val=”45000″/>
<a:buFont typeface=”Wingdings” charset=”2″/>
<a:buChar char=””/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Donec sed risus quis tellus facilisis elementum.</a:t>
</a:r>
</a:p>
<a:p>
<a:pPr marL=”432000″ indent=”-324000″>
<a:spcBef>
<a:spcPts val=”1057″/>
</a:spcBef>
<a:buClr>
<a:srgbClr val=”000000″/>
</a:buClr>
<a:buSzPct val=”45000″/>
<a:buFont typeface=”Wingdings” charset=”2″/>
<a:buChar char=””/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Vivamus sit amet semper nisl, vel tristique mi.</a:t>
</a:r>
</a:p>
<a:p>
<a:pPr marL=”432000″ indent=”-324000″>
<a:spcBef>
<a:spcPts val=”1057″/>
</a:spcBef>
<a:buClr>
<a:srgbClr val=”000000″/>
</a:buClr>
<a:buSzPct val=”45000″/>
<a:buFont typeface=”Wingdings” charset=”2″/>
<a:buChar char=””/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Aenean lobortis neque in malesuada ornare.</a:t>
</a:r>
</a:p>
</p:txBody>
</p:sp>
</p:spTree>
</p:cSld>
<p:clrMapOvr>
<a:masterClrMapping/>
</p:clrMapOvr>
</p:sld>

SLIDE4.XML

<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id=”1″ name=””/>
<p:cNvGrpSpPr/>
<p:nvPr/>
</p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm>
<a:off x=”0″ y=”0″/>
<a:ext cx=”0″ cy=”0″/>
<a:chOff x=”0″ y=”0″/>
<a:chExt cx=”0″ cy=”0″/>
</a:xfrm>
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”17″ name=”PlaceHolder 1″/>
<p:cNvSpPr>
<a:spLocks noGrp=”1″/>
</p:cNvSpPr>
<p:nvPr>
<p:ph type=”title”/>
</p:nvPr>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”504000″ y=”225720″/>
<a:ext cx=”9071640″ cy=”946800″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:noFill/>
<a:ln w=”0″>
<a:noFill/>
</a:ln>
</p:spPr>
<p:txBody>
<a:bodyPr lIns=”0″ tIns=”0″ rIns=”0″ bIns=”0″ anchor=”ctr”>
<a:spAutoFit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″ algn=”ctr”>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”3600″ b=”1″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Proin sed mattis elit</a:t>
</a:r>
</a:p>
</p:txBody>
</p:sp>
<p:graphicFrame>
<p:nvGraphicFramePr>
<p:cNvPr id=”18″ name=”Tabella 17″/>
<p:cNvGraphicFramePr/>
<p:nvPr/>
</p:nvGraphicFramePr>
<p:xfrm>
<a:off x=”735120″ y=”1427040″/>
<a:ext cx=”8631000″ cy=”2934720″/>
</p:xfrm>
<a:graphic>
<a:graphicData uri=”http://schemas.openxmlformats.org/drawingml/2006/table”>
<a:tbl>
<a:tblPr/>
<a:tblGrid>
<a:gridCol w=”4315680″>
<a:extLst>
<a:ext uri=”{9D8B030D-6E8A-4147-A177-3AD203B41FA5}”>
<a16:colId xmlns:a16=”http://schemas.microsoft.com/office/drawing/2014/main” val=”20000″/>
</a:ext>
</a:extLst>
</a:gridCol>
<a:gridCol w=”4315320″>
<a:extLst>
<a:ext uri=”{9D8B030D-6E8A-4147-A177-3AD203B41FA5}”>
<a16:colId xmlns:a16=”http://schemas.microsoft.com/office/drawing/2014/main” val=”20001″/>
</a:ext>
</a:extLst>
</a:gridCol>
</a:tblGrid>
<a:tr h=”605880″>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Aenean ultricies turpis eu erat euismod porta.</a:t>
</a:r>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”B3B3B3″/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Maecenas nec ullamcorper odio, ac tincidunt metus.</a:t>
</a:r>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”B3B3B3″/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:extLst>
<a:ext uri=”{0D108BD9-81ED-4DB2-BD59-A6C34878D82A}”>
<a16:rowId xmlns:a16=”http://schemas.microsoft.com/office/drawing/2014/main” val=”10000″/>
</a:ext>
</a:extLst>
</a:tr>
<a:tr h=”605880″>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Duis volutpat sapien at interdum consequat.</a:t>
</a:r>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”CCCCCC”/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Donec vel semper nisl.</a:t>
</a:r>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”CCCCCC”/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:extLst>
<a:ext uri=”{0D108BD9-81ED-4DB2-BD59-A6C34878D82A}”>
<a16:rowId xmlns:a16=”http://schemas.microsoft.com/office/drawing/2014/main” val=”10001″/>
</a:ext>
</a:extLst>
</a:tr>
<a:tr h=”605880″>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Sed scelerisque odio non justo suscipit congue.</a:t>
</a:r>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”E6E6E6″/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Maecenas convallis quis neque at elementum.</a:t>
</a:r>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”E6E6E6″/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:extLst>
<a:ext uri=”{0D108BD9-81ED-4DB2-BD59-A6C34878D82A}”>
<a16:rowId xmlns:a16=”http://schemas.microsoft.com/office/drawing/2014/main” val=”10002″/>
</a:ext>
</a:extLst>
</a:tr>
<a:tr h=”349920″>
<a:tc gridSpan=”2″>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>In fringilla tortor id orci porttitor, a euismod velit molestie.</a:t>
</a:r>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”CCCCCC”/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:tc hMerge=”1″>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″>
<a:buNone/>
</a:pPr>
<a:endParaRPr lang=”en-GB” sz=”2400″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:endParaRPr>
</a:p>
</a:txBody>
<a:tcPr marL=”90000″ marR=”90000″ marT=”46800″ marB=”46800″>
<a:lnL w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnL>
<a:lnR w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnR>
<a:lnT w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnT>
<a:lnB w=”720″>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:prstDash val=”solid”/>
</a:lnB>
<a:solidFill>
<a:srgbClr val=”CCCCCC”/>
</a:solidFill>
</a:tcPr>
</a:tc>
<a:extLst>
<a:ext uri=”{0D108BD9-81ED-4DB2-BD59-A6C34878D82A}”>
<a16:rowId xmlns:a16=”http://schemas.microsoft.com/office/drawing/2014/main” val=”10003″/>
</a:ext>
</a:extLst>
</a:tr>
</a:tbl>
</a:graphicData>
</a:graphic>
</p:graphicFrame>
</p:spTree>
</p:cSld>
<p:clrMapOvr>
<a:masterClrMapping/>
</p:clrMapOvr>
</p:sld>

SLIDE6.XML

<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id=”1″ name=””/>
<p:cNvGrpSpPr/>
<p:nvPr/>
</p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm>
<a:off x=”0″ y=”0″/>
<a:ext cx=”0″ cy=”0″/>
<a:chOff x=”0″ y=”0″/>
<a:chExt cx=”0″ cy=”0″/>
</a:xfrm>
</p:grpSpPr>
<p:pic>
<p:nvPicPr>
<p:cNvPr id=”21″ name=”Immagine 20″/>
<p:cNvPicPr/>
<p:nvPr/>
</p:nvPicPr>
<p:blipFill>
<a:blip r:embed=”rId2″/>
<a:stretch/>
</p:blipFill>
<p:spPr>
<a:xfrm>
<a:off x=”737640″ y=”726840″/>
<a:ext cx=”8624160″ cy=”4302720″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:noFill/>
<a:ln w=”0″>
<a:noFill/>
</a:ln>
</p:spPr>
</p:pic>
</p:spTree>
</p:cSld>
<p:clrMapOvr>
<a:masterClrMapping/>
</p:clrMapOvr>
</p:sld>

SLIDE7.XML

<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id=”1″ name=””/>
<p:cNvGrpSpPr/>
<p:nvPr/>
</p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm>
<a:off x=”0″ y=”0″/>
<a:ext cx=”0″ cy=”0″/>
<a:chOff x=”0″ y=”0″/>
<a:chExt cx=”0″ cy=”0″/>
</a:xfrm>
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”22″ name=”PlaceHolder 1″/>
<p:cNvSpPr>
<a:spLocks noGrp=”1″/>
</p:cNvSpPr>
<p:nvPr>
<p:ph type=”title”/>
</p:nvPr>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”504000″ y=”225720″/>
<a:ext cx=”9071640″ cy=”946800″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:noFill/>
<a:ln w=”0″>
<a:noFill/>
</a:ln>
</p:spPr>
<p:txBody>
<a:bodyPr lIns=”0″ tIns=”0″ rIns=”0″ bIns=”0″ anchor=”ctr”>
<a:spAutoFit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″ algn=”ctr”>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”3600″ b=”1″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>Nullam ac laoreet orci</a:t>
</a:r>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”23″ name=”Rettangolo 22″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”721440″ y=”4102560″/>
<a:ext cx=”1443240″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”FF0000″/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”24″ name=”Rettangolo 23″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”3120480″ y=”4102560″/>
<a:ext cx=”1442880″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”00FF00″/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”25″ name=”Rettangolo 24″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”5519520″ y=”4087080″/>
<a:ext cx=”1442880″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”0000FF”/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”26″ name=”Rettangolo 25″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”7917480″ y=”4102560″/>
<a:ext cx=”1443240″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”27″ name=”Rettangolo 26″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”721080″ y=”2689200″/>
<a:ext cx=”1443240″ cy=”1117080″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”FF0000″/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”28″ name=”Rettangolo 27″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”3120120″ y=”2689200″/>
<a:ext cx=”1442880″ cy=”1117080″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”00FF00″/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”29″ name=”Rettangolo 28″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”5519160″ y=”2673720″/>
<a:ext cx=”1442880″ cy=”1117080″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”0000FF”/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”30″ name=”Rettangolo 29″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”7917120″ y=”2689200″/>
<a:ext cx=”1443240″ cy=”1117080″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”31″ name=”Rettangolo 30″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”720720″ y=”1275480″/>
<a:ext cx=”1443240″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”FF0000″/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”32″ name=”Rettangolo 31″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”3119760″ y=”1275480″/>
<a:ext cx=”1442880″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”00FF00″/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”33″ name=”Rettangolo 32″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”5518800″ y=”1260000″/>
<a:ext cx=”1442880″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”0000FF”/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”34″ name=”Rettangolo 33″/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”7916760″ y=”1275480″/>
<a:ext cx=”1443240″ cy=”1117440″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:solidFill>
<a:srgbClr val=”FFFFFF”/>
</a:solidFill>
<a:ln w=”0″>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
</a:ln>
</p:spPr>
<p:style>
<a:lnRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:lnRef>
<a:fillRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:fillRef>
<a:effectRef idx=”0″>
<a:scrgbClr r=”0″ g=”0″ b=”0″/>
</a:effectRef>
<a:fontRef idx=”minor”/>
</p:style>
<p:txBody>
<a:bodyPr wrap=”none” lIns=”90000″ tIns=”45000″ rIns=”90000″ bIns=”45000″ anchor=”ctr”>
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:endParaRPr lang=”en-GB” sz=”1800″ b=”0″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Arial”/>
</a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
</p:spTree>
</p:cSld>

SLIDE8:XLS

<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id=”1″ name=””/>
<p:cNvGrpSpPr/>
<p:nvPr/>
</p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm>
<a:off x=”0″ y=”0″/>
<a:ext cx=”0″ cy=”0″/>
<a:chOff x=”0″ y=”0″/>
<a:chExt cx=”0″ cy=”0″/>
</a:xfrm>
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id=”35″ name=”PlaceHolder 1″/>
<p:cNvSpPr>
<a:spLocks noGrp=”1″/>
</p:cNvSpPr>
<p:nvPr>
<p:ph type=”title”/>
</p:nvPr>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x=”504000″ y=”225720″/>
<a:ext cx=”9071640″ cy=”946800″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:noFill/>
<a:ln w=”0″>
<a:noFill/>
</a:ln>
</p:spPr>
<p:txBody>
<a:bodyPr lIns=”0″ tIns=”0″ rIns=”0″ bIns=”0″ anchor=”ctr”>
<a:spAutoFit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr indent=”0″ algn=”ctr”>
<a:buNone/>
</a:pPr>
<a:r>
<a:rPr lang=”en-GB” sz=”3600″ b=”1″ u=”none” strike=”noStrike”>
<a:solidFill>
<a:srgbClr val=”000000″/>
</a:solidFill>
<a:effectLst/>
<a:uFillTx/>
<a:latin typeface=”Aptos”/>
</a:rPr>
<a:t>It could work</a:t>
</a:r>
</a:p>
</p:txBody>
</p:sp>
<p:pic>
<p:nvPicPr>
<p:cNvPr id=”36″ name=”Immagine 35″>
<a:hlinkClick r:id=”” action=”ppaction://media”/>
</p:cNvPr>
<p:cNvPicPr/>
<p:nvPr>
<a:videoFile r:link=”rId2″/>
<p:extLst>
<p:ext uri=”{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}”>
<p14:media xmlns:p14=”http://schemas.microsoft.com/office/powerpoint/2010/main” r:embed=”rId1″/>
</p:ext>
</p:extLst>
</p:nvPr>
</p:nvPicPr>
<p:blipFill>
<a:blip r:embed=”rId4″/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</p:blipFill>
<p:spPr>
<a:xfrm>
<a:off x=”2050200″ y=”1326240″/>
<a:ext cx=”5978880″ cy=”3288240″/>
</a:xfrm>
<a:prstGeom prst=”rect”>
<a:avLst/>
</a:prstGeom>
<a:ln w=”0″>
<a:noFill/>
</a:ln>
</p:spPr>
</p:pic>
</p:spTree>
</p:cSld>

In the case of PPTX files, the unnecessary complexity is therefore multiplied by the number of slides, and by other factors:

  1. Despite using an English operating system and browser, Microsoft 365 has decided to use Italian, randomly inserting Italian terms into the XML files. For example, the video on slide 8 is labelled ‘Immagine 35’ (why not ‘Video 35’, which would be more accurate?), and the boxes on slide 7 are labelled ‘Rettangolo 22’ (and so on). What would happen if a German user received and saved the presentation? Would the terms “immagine” and “rettangolo” be translated into German, or would they remain in Italian?
  2. The placeholders for images and videos do not match the file names in the media folder. Despite searching through all the XML files, I couldn’t find the string “video1.mp4”, which the video was renamed to in the media folder, nor a reference to the placeholder “Immagine 35” used in the slide8.xml file. The problem is not the file name itself, but the fact that it is impossible for an average user to trace the file due to a lack of correspondence. I am sure that the correspondence is defined in some (extremely cryptic) way because I cannot imagine every PC independently deciding that, wherever “Immagine 35” appears, “video1.mp4” must be displayed. This would go beyond any form of artificial intelligence.
  3. In some cases, the XML tags are incomprehensible and contain serious errors. For instance, in the case of green fill colours, the tag is <a:srgbClr val=”00FF00″>, which clearly references the RGB colour model despite the value being hexadecimal. The content.xml file of the ODP file correctly uses the tag <draw:fill-colour=”#00FF00″>. While “draw:fill-colour” is fairly understandable, “a:srgbClr val” is much less so (and is also incorrect). Moreover, why would there be an “a:” prefix in a programme called PowerPoint? Perhaps because the developer was called Dennis Austin? Why not use “f:” for Forethought then, the company from which Microsoft purchased the software? I’m just joking, of course.

I hope no one has the courage to argue that all these complexities and oddities are essential for displaying the slides correctly, not to mention the errors. For example, why is there an XML file for each slide? Why are there Italian terms in an XML file? Why RGB colour when it is hexadecimal? I’ve been waiting years for a convincing answer, but I still haven’t received one. Perhaps I will get one this time.

Conclusions

Once again, comparing the XML schemas of ODP and PPTX files highlights the unnecessarily complex structure of the latter, given that there is no reason why each slide should have a separate XML file. There is also no reason for the internal structure of PPTX files to differ from that of DOCX files, which in turn differs from that of XLSX files.

As I have explained many times, the reality is what I have described here, without going into technical detail. Microsoft has created a file format that does not respond to the concept of a standard in any way. It is unnecessarily complex and creative, both in terms of the internal structure of the files and the XML schema, including the tags, which are not intuitive, unlike those used by ODF files.

Best practices for the effective use of XML tags recommend the use of clear tag names that describe the enclosed content and the maintenance of consistency in this tagging scheme. In the case of document formats, this means that once a set of XML tags has been defined, they should be used consistently throughout (i.e. the same tags should be used in all files). This is the opposite of what happens with the proprietary OOXML format, which is designed to force users to remain tied to Microsoft 365 (and, previously, to Microsoft Office in its various versions).

ODF, on the other hand, complies with XML best practices, giving developers and users full control over their content, including privacy protection, proper management of sensitive data and the ability to decide what to share and with whom.

ODF is the open, standard document format that we should all use, but only a minority do due to a lack of knowledge about the reality of the OOXML format, and because too many users place messianic trust in Microsoft. This means they remain “handcuffed” to proprietary software.

The artificial complexity of OOXML files (the DOCX case)

The complexity of the OOXML format is linked to its design and was deliberately created to make the format more difficult for non-Microsoft software developers to implement. Compatibility issues are caused by a veritable “maze” of tags used even for the simplest content, which binds users to the Microsoft ecosystem in the first example of standard-based lock-in.

The DOCX case

To demonstrate the difference in complexity between the XML schemas of Writer and Word text documents in the ODF and OOXML formats, I used two classic English theatre plays: William Shakespeare’s Hamlet and Oscar Wilde’s The Importance of Being Earnest. I downloaded the text versions of these works from Project Gutenberg — a library of classic texts for which US copyright has expired — and deleted the introductions and conclusions added by Project Gutenberg, without making any other changes.

I then repeated this process for both documents.

I copied all the text and pasted it, without any formatting, into two newly created blank documents. For Writer, I used the template that I usually use for unstructured documents; for Word, I did not use a template. This means that, in Writer, the XML schema contains information about the template (margins, paragraph and font formatting), but this does not increase its complexity.

To perform the analysis, I duplicated and renamed the two files, replacing the original extension with “ZIP”, and then decompressed them to create two folders containing all the files of the respective XML schemas.

The LibreOffice folder contained three subfolders and six files with the same names as those in the ODS file examined last week, as would be expected of a standard aiming to simplify life for developers and users. All the content is actually in the content.xml file, while the other files contain instructions for displaying the text document correctly.

The Microsoft 365 folder contains three subfolders and the [Content_Types].xml file, as with the XLSX file examined last week. One of the subfolders has a different name, but this is related to the application and does not increase complexity. Opening the [Content_Types].xml file provides information about the other files, including those in the subfolders.

In this case, the content is in the document.xml file inside the Word folder, which contains folders and files that differ completely from those in the XLSX file. Again, there is no technical reason for this difference in the XML schemas of the two files other than to make their internal structures different and more complex.

Let’s now analyse William Shakespeare’s Hamlet and then Oscar Wilde’s The Importance of Being Earnest.

Here is the PDF of Hamlet:

hamlet

 

The difference in complexity between the document.xml and content.xml files is striking when you compare their lengths: the content.xml file has 6,802 lines, while the document.xml file has 60,245 lines, compared to a text document of 5,566 lines.

Let us now compare the two files’ XML schemas from the beginning to the end of the introduction.

CONTENT.XML

<office:body>
<office:text text:use-soft-page-breaks=”true”>
<office:forms form:automatic-focus=”false” form:apply-design-mode=”false”/>
<text:sequence-decls>
<text:sequence-decl text:display-outline-level=”0″ text:name=”Illustration”/>
<text:sequence-decl text:display-outline-level=”0″ text:name=”Table”/>
<text:sequence-decl text:display-outline-level=”0″ text:name=”Text”/>
<text:sequence-decl text:display-outline-level=”0″ text:name=”Drawing”/>
<text:sequence-decl text:display-outline-level=”0″ text:name=”Figure”/>
</text:sequence-decls>
<text:p text:style-name=”P1″>THE TRAGEDY OF HAMLET, PRINCE OF DENMARK</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″>by William Shakespeare</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″>Contents</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″><text:s/>ACT I</text:p>
<text:p text:style-name=”P1″><text:s/>Scene I. Elsinore. A platform before the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene II. Elsinore. A room of state in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene III. A room in Polonius’s house</text:p>
<text:p text:style-name=”P1″><text:s/>Scene IV. The platform</text:p>
<text:p text:style-name=”P1″><text:s/>Scene V. A more remote part of the Castle</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″><text:s/>ACT II</text:p>
<text:p text:style-name=”P1″><text:s/>Scene I. A room in Polonius’s house</text:p>
<text:p text:style-name=”P1″><text:s/>Scene II. A room in the Castle</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″><text:s/>ACT III</text:p>
<text:p text:style-name=”P1″><text:s/>Scene I. A room in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene II. A hall in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene III. A room in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene IV. Another room in the Castle</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″><text:s/>ACT IV</text:p>
<text:p text:style-name=”P1″><text:s/>Scene I. A room in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene II. Another room in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene III. Another room in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene IV. A plain in Denmark</text:p>
<text:p text:style-name=”P1″><text:s/>Scene V. Elsinore. A room in the Castle</text:p>
<text:p text:style-name=”P1″><text:soft-page-break/><text:s/>Scene VI. Another room in the Castle</text:p>
<text:p text:style-name=”P1″><text:s/>Scene VII. Another room in the Castle</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″><text:s/>ACT V</text:p>
<text:p text:style-name=”P1″><text:s/>Scene I. A churchyard</text:p>
<text:p text:style-name=”P1″><text:s/>Scene II. A hall in the Castle</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″>Dramatis Personæ</text:p>
<text:p text:style-name=”P1″/>
<text:p text:style-name=”P1″>HAMLET, Prince of Denmark</text:p>
<text:p text:style-name=”P1″>CLAUDIUS, King of Denmark, Hamlet’s uncle</text:p>
<text:p text:style-name=”P1″>The GHOST of the late king, Hamlet’s father</text:p>
<text:p text:style-name=”P1″>GERTRUDE, the Queen, Hamlet’s mother, now wife of Claudius</text:p>
<text:p text:style-name=”P1″>POLONIUS, Lord Chamberlain</text:p>
<text:p text:style-name=”P1″>LAERTES, Son to Polonius</text:p>
<text:p text:style-name=”P1″>OPHELIA, Daughter to Polonius</text:p>
<text:p text:style-name=”P1″>HORATIO, Friend to Hamlet</text:p>
<text:p text:style-name=”P1″>FORTINBRAS, Prince of Norway</text:p>
<text:p text:style-name=”P1″>VOLTEMAND, Courtier</text:p>
<text:p text:style-name=”P1″>CORNELIUS, Courtier</text:p>
<text:p text:style-name=”P1″>ROSENCRANTZ, Courtier</text:p>
<text:p text:style-name=”P1″>GUILDENSTERN, Courtier</text:p>
<text:p text:style-name=”P1″>MARCELLUS, Officer</text:p>
<text:p text:style-name=”P1″>BARNARDO, Officer</text:p>
<text:p text:style-name=”P1″>FRANCISCO, a Soldier</text:p>
<text:p text:style-name=”P1″>OSRIC, Courtier</text:p>
<text:p text:style-name=”P1″>REYNALDO, Servant to Polonius</text:p>
<text:p text:style-name=”P1″>Players</text:p>
<text:p text:style-name=”P1″>A Gentleman, Courtier</text:p>
<text:p text:style-name=”P1″>A Priest</text:p>
<text:p text:style-name=”P1″><text:soft-page-break/>Two Clowns, Grave-diggers</text:p>
<text:p text:style-name=”P1″>A Captain</text:p>
<text:p text:style-name=”P1″>English Ambassadors.</text:p>
<text:p text:style-name=”P1″>Lords, Ladies, Officers, Soldiers, Sailors, Messengers, and Attendants</text:p>

It is a reasonably complex XML file. After the initial instructions on the sequence of content, the text of the tragedy can easily be located alongside the sequence of the five acts and the descriptions of the dramatis personae.

DOCUMENT.XML

<w:body>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” wp14:paraId=”73C9069B” wp14:textId=”09294AE1″>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>THE TRAGEDY OF HAMLET, PRINCE OF DENMARK</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”3AA342A9″ wp14:textId=”00E76CB9″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1B479704″ wp14:textId=”129900F6″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>by William Shakespeare</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”6C6F02DD” wp14:textId=”1D8A204F”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1F7D25FF” wp14:textId=”4619853B”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”50471715″ wp14:textId=”708F3004″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”7E2BE7BA” wp14:textId=”48A7F848″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”5B16A927″ wp14:textId=”10A9E3F9″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Contents</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”429A556E” wp14:textId=”6416D4DB”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1C38A773″ wp14:textId=”4F3F8ED2″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>ACT I</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”59328897″ wp14:textId=”21C9F129″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene I. Elsinore. A platform before the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”30C9E582″ wp14:textId=”0A7616FF”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene II. Elsinore. A room of state in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”5EAB6C01″ wp14:textId=”70B75214″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene III. A room in Polonius’s house</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”232393A3″ wp14:textId=”069440B2″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene IV. The platform</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”65E1A75F” wp14:textId=”1E769B73″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene V. A more remote part of the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”6C6D2F5C” wp14:textId=”13700863″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”339DBFF3″ wp14:textId=”4AF718C4″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>ACT II</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”774AAE76″ wp14:textId=”3F8EE2B8″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene I. A room in Polonius’s house</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”526BCABF” wp14:textId=”441F6801″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene II. A room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”6A1841AB” wp14:textId=”1FBE8D34″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”577B4504″ wp14:textId=”1BF167DB”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>ACT III</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”2724CC9A” wp14:textId=”293764E9″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene I. A room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”04FF9ABE” wp14:textId=”30F918C2″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene II. A hall in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”338872C6″ wp14:textId=”1F0AFFE6″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene III. A room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”46D240C2″ wp14:textId=”3D28AE8B”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene IV. Another room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”64F40DC7″ wp14:textId=”16C2A388″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”4B538D6F” wp14:textId=”7CB11368″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>ACT IV</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”2508ABE7″ wp14:textId=”4925909D”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene I. A room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”5ABD1B8F” wp14:textId=”68A02D9E”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene II. Another room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”57D2E145″ wp14:textId=”08927478″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene III. Another room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”2BA12E96″ wp14:textId=”1E35C8BC”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene IV. A plain in Denmark</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”4DF8BEC9″ wp14:textId=”67676CF3″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene V. Elsinore. A room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”17EE90DC” wp14:textId=”708C9696″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene VI. Another room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”3302F704″ wp14:textId=”2ADB2A66″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene VII. Another room in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”0F7C9E68″ wp14:textId=”5D706618″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1091F950″ wp14:textId=”2EE5201C”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>ACT V</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”6E162B67″ wp14:textId=”10199C37″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene I. A churchyard</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1A2FA647″ wp14:textId=”683EF1FA”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Scene II. A hall in the Castle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”62A90ACE” wp14:textId=”156F1611″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”557F5426″ wp14:textId=”05194972″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”011BF8B2″ wp14:textId=”175BE494″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”4BB65B79″ wp14:textId=”7256A412″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1EEEFC18″ wp14:textId=”2D4F2D20″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Dramatis Personæ</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”69D361D6″ wp14:textId=”0A66ADE7″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t xml:space=”preserve”> </w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”7198BA63″ wp14:textId=”0ECB601B”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>HAMLET, Prince of Denmark</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”7A30698D” wp14:textId=”2A3EE787″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>CLAUDIUS, King of Denmark, Hamlet’s uncle</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”7D437DFF” wp14:textId=”0C3AFC43″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>The GHOST of the late king, Hamlet’s father</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”663C7E0E” wp14:textId=”4F1E93F2″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>GERTRUDE, the Queen, Hamlet’s mother, now wife of Claudius</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1EE14B03″ wp14:textId=”567F43B4″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>POLONIUS, Lord Chamberlain</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”7A4F8A78″ wp14:textId=”39759F7E”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>LAERTES, Son to Polonius</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”11E371D7″ wp14:textId=”36CD515A”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>OPHELIA, Daughter to Polonius</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”2D438C1E” wp14:textId=”7211E8E5″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>HORATIO, Friend to Hamlet</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”4E6B50D6″ wp14:textId=”559117D7″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>FORTINBRAS, Prince of Norway</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”1B5B4955″ wp14:textId=”599A64FC”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>VOLTEMAND, Courtier</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”32BA9096″ wp14:textId=”6E8C2728″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>CORNELIUS, Courtier</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”60FD9B45″ wp14:textId=”2F2E3956″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>ROSENCRANTZ, Courtier</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”0CC7985B” wp14:textId=”56DED383″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>GUILDENSTERN, Courtier</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”775EA68F” wp14:textId=”089F9982″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>MARCELLUS, Officer</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”4E2AEAC2″ wp14:textId=”34855F77″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>BARNARDO, Officer</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”6DB5A437″ wp14:textId=”146C2E48″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>FRANCISCO, a Soldier</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”389BDBAC” wp14:textId=”0B30EC2E”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>OSRIC, Courtier</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”12730B2E” wp14:textId=”60DC1BFE”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>REYNALDO, Servant to Polonius</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”7FA85C5A” wp14:textId=”3D66976B”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Players</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”2F38E070″ wp14:textId=”309A60BF”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>A Gentleman, Courtier</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”53493710″ wp14:textId=”48B3D2A5″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>A Priest</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”611C5F94″ wp14:textId=”22FB27D4″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Two Clowns, Grave-diggers</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”577DC4BA” wp14:textId=”2FD3CAA0″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>A Captain</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”0BAF6209″ wp14:textId=”35658011″>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>English Ambassadors.</w:t>
</w:r>
</w:p>
<w:p xmlns:wp14=”http://schemas.microsoft.com/office/word/2010/wordml” w:rsidP=”03F02A92″ wp14:paraId=”260F5D8D” wp14:textId=”0FC10ABC”>
<w:pPr>
<w:pStyle w:val=”Normal”/>
</w:pPr>
<w:r w:rsidR=”0C2508E9″>
<w:rPr/>
<w:t>Lords, Ladies, Officers, Soldiers, Sailors, Messengers, and Attendants</w:t>
</w:r>
</w:p>

This XML file contains a lot of repetition. Is it really necessary to include the same information about the schema and style for every line of content, including empty ones? I doubt it personally, but since I am not a technician, I am willing to listen to reasons from those who argue that this content is essential and not artificial complexity.

Let’s see if the same thing happens with Oscar Wilde’s ‘The Importance of Being Earnest’. Here is the PDF:

earnest

 

In this case, the artificial complexity of the Word document is less apparent, as the content.xml file has 3,974 lines compared to a text document of 3,885 lines, and the document.xml file has 8,610 lines. Therefore, we have gone from a file that is almost ten times longer in terms of the number of lines to a file that is just over twice as long. This difference can be explained by comparing the first lines of the two files’ XML schemas (only those with content).

CONTENT.XML

<text:p text:style-name=”P1″>The Importance of Being Earnest</text:p>
<text:p text:style-name=”P1″>A Trivial Comedy for Serious People</text:p>
<text:p text:style-name=”P1″>THE PERSONS IN THE PLAY</text:p>
<text:p text:style-name=”P1″>John Worthing, J.P.</text:p>
<text:p text:style-name=”P1″>Algernon Moncrieff</text:p>
<text:p text:style-name=”P1″>Rev. Canon Chasuble, D.D.</text:p>
<text:p text:style-name=”P1″>Merriman, Butler</text:p>
<text:p text:style-name=”P1″>Lane, Manservant</text:p>
<text:p text:style-name=”P1″>Lady Bracknell</text:p>
<text:p text:style-name=”P1″>Hon. Gwendolen Fairfax</text:p>
<text:p text:style-name=”P1″>Cecily Cardew</text:p>
<text:p text:style-name=”P1″>Miss Prism, Governess</text:p>
<text:p text:style-name=”P1″>THE SCENES OF THE PLAY</text:p>
<text:p text:style-name=”P1″>ACT I. Algernon Moncrieff’s Flat in Half-Moon Street, W.</text:p>
<text:p text:style-name=”P1″>ACT II. The Garden at the Manor House, Woolton.</text:p>
<text:p text:style-name=”P1″>ACT III. Drawing-Room at the Manor House, Woolton.</text:p>
<text:p text:style-name=”P1″>TIME: The Present.</text:p>
<text:p text:style-name=”P1″>LONDON: ST. JAMES’S THEATRE</text:p>
<text:p text:style-name=”P1″>Lessee and Manager: Mr. George Alexander</text:p>
<text:p text:style-name=”P1″>February 14th, 1895</text:p>
<text:p text:style-name=”P1″>John Worthing, J.P.: Mr. George Alexander.</text:p>
<text:p text:style-name=”P1″>Algernon Moncrieff: Mr. Allen Aynesworth.</text:p>
<text:p text:style-name=”P1″>Rev. Canon Chasuble, D.D.: Mr. H. H. Vincent.</text:p>
<text:p text:style-name=”P1″>Merriman: Mr. Frank Dyall.</text:p>
<text:p text:style-name=”P1″>Lane: Mr. F. Kinsey Peile.</text:p>
<text:p text:style-name=”P1″>Lady Bracknell: Miss Rose Leclercq.</text:p>
<text:p text:style-name=”P1″>Hon. Gwendolen Fairfax: Miss Irene Vanbrugh.</text:p>
<text:p text:style-name=”P1″>Cecily Cardew: Miss Evelyn Millard.</text:p>
<text:p text:style-name=”P1″>Miss Prism: Mrs. George Canninge.</text:p>
<text:p text:style-name=”P1″>FIRST ACT</text:p>
<text:p text:style-name=”P1″>SCENE</text:p>
<text:p text:style-name=”P1″>Morning-room in Algernon’s flat in Half-Moon Street. The room is</text:p>
<text:p text:style-name=”P1″>luxuriously and artistically furnished. The sound of a piano is heard</text:p>
<text:p text:style-name=”P1″>in the adjoining room.</text:p>
<text:p text:style-name=”P1″>[Lane is arranging afternoon tea on the table, and after the music has</text:p>
<text:p text:style-name=”P1″>ceased, Algernon enters.]</text:p>
<text:p text:style-name=”P1″>ALGERNON.</text:p>
<text:p text:style-name=”P1″>Did you hear what I was playing, Lane?</text:p>
<text:p text:style-name=”P1″>LANE.</text:p>
<text:p text:style-name=”P1″>I didn’t think it polite to listen, sir.</text:p>
<text:p text:style-name=”P1″><text:soft-page-break/>ALGERNON.</text:p>
<text:p text:style-name=”P1″>I’m sorry for that, for your sake. I don’t play accurately—any one can</text:p>
<text:p text:style-name=”P1″>play accurately—but I play with wonderful expression. As far as the</text:p>
<text:p text:style-name=”P1″>piano is concerned, sentiment is my forte. I keep science for Life.</text:p>
<text:p text:style-name=”P1″>LANE.</text:p>
<text:p text:style-name=”P1″>Yes, sir.</text:p>
<text:p text:style-name=”P1″>ALGERNON.</text:p>
<text:p text:style-name=”P1″>And, speaking of the science of Life, have you got the cucumber</text:p>
<text:p text:style-name=”P1″>sandwiches cut for Lady Bracknell?</text:p>
<text:p text:style-name=”P1″>LANE.</text:p>
<text:p text:style-name=”P1″>Yes, sir. [Hands them on a salver.]</text:p>
<text:p text:style-name=”P1″>ALGERNON.</text:p>
<text:p text:style-name=”P1″>[Inspects them, takes two, and sits down on the sofa.] Oh! . . . by the</text:p>
<text:p text:style-name=”P1″>way, Lane, I see from your book that on Thursday night, when Lord</text:p>
<text:p text:style-name=”P1″>Shoreman and Mr. Worthing were dining with me, eight bottles of</text:p>
<text:p text:style-name=”P1″>champagne are entered as having been consumed.</text:p>
<text:p text:style-name=”P1″>LANE.</text:p>
<text:p text:style-name=”P1″>Yes, sir; eight bottles and a pint.</text:p>
<text:p text:style-name=”P1″>ALGERNON.</text:p>
<text:p text:style-name=”P1″>Why is it that at a bachelor’s establishment the servants invariably</text:p>
<text:p text:style-name=”P1″>drink the champagne? I ask merely for information.</text:p>
<text:p text:style-name=”P1″>LANE.</text:p>
<text:p text:style-name=”P1″>I attribute it to the superior quality of the wine, sir. I have often</text:p>
<text:p text:style-name=”P1″>observed that in married households the champagne is rarely of a</text:p>
<text:p text:style-name=”P1″>first-rate brand.</text:p>
<text:p text:style-name=”P1″><text:soft-page-break/>ALGERNON.</text:p>
<text:p text:style-name=”P1″>Good heavens! Is marriage so demoralising as that?</text:p>

DOCUMENT.XML

<w:t>The Importance of Being Earnest</w:t>
<w:t>A Trivial Comedy for Serious People</w:t>
<w:t>THE PERSONS IN THE PLAY</w:t>
<w:t>John Worthing, J.P. Algernon Moncrieff Rev. Canon Chasuble, D.D. Merriman, Butler Lane, Manservant Lady Bracknell Hon. Gwendolen Fairfax Cecily Cardew Miss Prism, Governess</w:t>
<w:t>THE SCENES OF THE PLAY</w:t>
<w:t>ACT I. Algernon Moncrieff’s Flat in Half-Moon Street, W.</w:t>
<w:t>ACT II. The Garden at the Manor House, Woolton.</w:t>
<w:t>ACT III. Drawing-Room at the Manor House, Woolton.</w:t>
<w:t>TIME: The Present.</w:t>
<w:t>LONDON: ST. JAMES’S THEATRE</w:t>
<w:t>Lessee and Manager: Mr. George Alexander</w:t>
<w:t>February 14th, 1895</w:t>
<w:t>John Worthing, J.P.: Mr. George Alexander. Algernon Moncrieff: Mr. Allen Aynesworth. Rev. Canon Chasuble, D.D.: Mr. H. H. Vincent. Merriman: Mr. Frank Dyall. Lane: Mr. F. Kinsey Peile. Lady Bracknell: Miss Rose Leclercq. Hon. Gwendolen Fairfax: Miss Irene Vanbrugh. Cecily Cardew: Miss Evelyn Millard. Miss Prism: Mrs. George Canninge.</w:t>
<w:t>FIRST ACT</w:t>
<w:t>SCENE</w:t>
<w:t>Morning-room in Algernon’s flat in Half-Moon Street. The room is luxuriously and artistically furnished. The sound of a piano is heard in the adjoining room.</w:t>
<w:t>[Lane is arranging afternoon tea on the table, and after the music has ceased, Algernon enters.]</w:t>
<w:t>ALGERNON. Did you hear what I was playing, Lane?</w:t>
<w:t>LANE. I didn’t think it polite to listen, sir.</w:t>
<w:t>ALGERNON. I’m sorry for that, for your sake. I don’t play accurately—any one can play accurately—but I play with wonderful expression. As far as the piano is concerned, sentiment is my forte. I keep science for Life.</w:t>
<w:t>LANE. Yes, sir.</w:t>
<w:t>ALGERNON. And, speaking of the science of Life, have you got the cucumber sandwiches cut for Lady Bracknell?</w:t>
<w:t>LANE. Yes, sir. [Hands them on a salver.]</w:t>
<w:t>ALGERNON. [Inspects them, takes two, and sits down on the sofa.] Oh! . . . by the way, Lane, I see from your book that on Thursday night, when Lord Shoreman and Mr. Worthing were dining with me, eight bottles of champagne are entered as having been consumed.</w:t>
<w:t>LANE. Yes, sir; eight bottles and a pint.</w:t>
<w:t>ALGERNON. Why is it that at a bachelor’s establishment the servants invariably drink the champagne? I ask merely for information.</w:t>
<w:t>LANE. I attribute it to the superior quality of the wine, sir. I have often observed that in married households the champagne is rarely of a first-rate brand.</w:t>
<w:t>ALGERNON. Good heavens! Is marriage so demoralising as that?</w:t>

While the content.xml file retains all the line breaks (hard returns) of the text document, the document.xml file “reinterprets” the text, reconstructing all the paragraphs even when this makes no sense, as with lists of characters and the actors who play them. It also adds punctuation that does not exist in the text file, such as commas to replace hard returns. This is why the file is shorter than the “Hamlet” file, but it introduces an arbitrary “simplification” that does not respect the original document.

Until today, I was convinced that the XML schema of OOXML files was unnecessarily complex for the reasons I have explained at length on several occasions. However, it is not only unnecessarily complex, but also unnecessarily “creative” (always complicating the lives of developers and users).

Conclusions

Unfortunately, the reality is what I have explained several times, without going into technical detail. This has been confirmed by more technical analyses of XLSX and DOCX files, and I believe it will also be confirmed by next week’s PPTX file analysis. Microsoft has created an unnecessarily complex and incomprehensibly creative file format, which complicates the lives of developers and users more than I thought.

Indeed, while it is challenging to manage artificial complexity, it is arguably impossible to manage “creativity” that reinterprets the contents of a document by inventing paragraphs where it might make sense — albeit with a faithful format — and where it makes no sense, as with lists.

Perhaps, in my personal opinion, “creativity” was introduced to make it difficult for companies based in countries where reverse engineering is not illegal to emulate the OOXML format, as I don’t believe “creative” reverse engineering is possible, even with the help of AI.

Users should protect their rights by choosing an open standard format, such as ODF, which gives them control over their content and everything that this entails, including privacy protection, proper management of sensitive data and the ability to decide what to share and with whom.

This is a format whose development process, characteristics, and version are known; whose description corresponds to what happens on the user’s PC; and which faithfully reproduces the contents of the displayed document. It is a format that enables even less experienced users to identify and, in many cases, solve problems.

In short, it is the only open and standard document format that we would all like to have, but which only a minority use due to a lack of knowledge about the reality of the OOXML format, and the messianic trust that too many users place in Microsoft. This leads them to believe that there cannot be a commercial strategy behind a document format that is hostile to users’ interests.

The artificial complexity of OOXML files (the XLSX case)

The post, published on 18 July 2025, which explained why an artificially complex XML schema, such as that used by Microsoft 365 (formerly Microsoft Office) files, is in fact a subtle tool for locking in users because it is invisible and impossible to detect without in-depth study, was picked up by various IT media outlets. This was probably because it explained a problem that everyone faces without having the tools to solve it in a way that was accessible to everyone.

Some of these articles sparked a debate between those who supported my thesis and those who defended Microsoft, the true champions of lock-in, who claimed that the complexity of the XML schema was not artificial but rather a reflection of the complexity of the documents themselves.

This complexity relates to various factors, such as size (number of pages), structure (text, tables, graphs and images), content management (data entry by multiple people and systems) and customisation through metadata. These factors influence the management, classification and storage of the document itself.

The different approaches to complexity management between ODF and OOXML

However, the ODF and OOXML formats handle this complexity in completely different ways. In the first case, the XML schema seeks to simplify the work of developers and users by ensuring that both sets of requirements are met. Developers have all the descriptive tools related to document complexity at their disposal, and users can distinguish between descriptive elements and content because the two are almost always separate. The content is also consistent in syntax with the document.

In the second case, the XML schema does nothing to simplify the developer’s task and complicates the user’s task by putting all the elements – description and content – together without any apparent logic. This makes the two difficult or even impossible to distinguish.

The complexity of the OOXML format is linked to its design and was deliberately created to make the format more difficult for non-Microsoft software developers to implement. Compatibility issues are caused by a veritable “maze” of tags used even for the simplest content, which binds users to the Microsoft ecosystem in the first example of standard-based lock-in.

Added to this is the widespread use of convoluted descriptions, such as those relating to dates, which are linked to a bug introduced by Visicalc and still present in Excel 67 years after it was discovered, and the arbitrary separation of content, such as sentences or even words that are broken between two content elements. The format reflects the internal data structures and legacy features of Microsoft Office. It uses non-standard language encodings and units of measurement, as well as inconsistent naming conventions and rules between modules. It also uses abstruse tag names that are difficult to decipher.

The XLSX case

To illustrate the difference in complexity between the ODF and OOXML XML schemas, I created a simple spreadsheet containing dates from my life that are either significant or ironic. These include the date I broke my nose, the date it was repaired, and the date I re-married my wife in Las Vegas to celebrate the 30th anniversary of the marriage with an informal ceremony (a drive-through wedding in a limousine).

This is a screenshot of the spreadsheet:

To perform the analysis, I duplicated and renamed the two files, replacing the original extension with “ZIP”, and then unzipped them to create two folders containing all the files of the respective XML schemas.

The LibreOffice folder contains three subfolders and six files, one of which is called content.xml and immediately catches the eye due to its evocative name. Opening it reveals all the contents, while the other files contain instructions for displaying the spreadsheet correctly.

This is the significant portion of the LibreOffice content.xml file:

<office:body>
<office:spreadsheet>
<table:calculation-settings table:case-sensitive=”false” table:automatic-find-labels=”false” table:use-regular-expressions=”false” table:use-wildcards=”true”>
<table:iteration table:maximum-difference=”0.0001″/>
</table:calculation-settings>
<table:table table:name=”Foglio1″ table:style-name=”ta1″>
<office:forms form:automatic-focus=”false” form:apply-design-mode=”false”/>
<table:table-column table:style-name=”co1″ table:default-cell-style-name=”ce2″/>
<table:table-column table:style-name=”co2″ table:default-cell-style-name=”ce4″/>
<table:table-column table:style-name=”co3″ table:number-columns-repeated=”16382″/>
<table:table-row table:style-name=”ro1″>
<table:table-cell table:style-name=”ce1″ office:value-type=”string” calcext:value-type=”string”>
<text:p>Event</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce3″ office:value-type=”string” calcext:value-type=”string”>
<text:p>Date</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Was Born in Umbria</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1954-08-12″ calcext:value-type=”date”>
<text:p>08/12/1954</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Broke Nose in Rome</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1965-01-18″ calcext:value-type=”date”>
<text:p>01/18/1965</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>University Degree in Milan</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1978-11-19″ calcext:value-type=”date”>
<text:p>11/19/1978</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>First Job at Italian Touring Club</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1981-01-10″ calcext:value-type=”date”>
<text:p>01/10/1981</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Hired by Honeywell and Got 1st PC</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1983-01-09″ calcext:value-type=”date”>
<text:p>01/09/1983</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>1st Wedding in Assisi</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1984-08-09″ calcext:value-type=”date”>
<text:p>08/09/1984</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>BBC Show Interview in Birmingham</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1987-02-17″ calcext:value-type=”date”>
<text:p>02/17/1987</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Installed OpenOffice</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2003-02-01″ calcext:value-type=”date”>
<text:p>02/01/2003</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Repaired Nose in Rozzano</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2008-12-04″ calcext:value-type=”date”>
<text:p>12/04/2008</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Launched LibreOffice</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2010-09-28″ calcext:value-type=”date”>
<text:p>09/28/2010</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>2nd Wedding in Las Vegas</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2014-08-08″ calcext:value-type=”date”>
<text:p>08/08/2014</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro2″ table:number-rows-repeated=”1048563″>
<table:table-cell table:number-columns-repeated=”2″/>
</table:table-row>
<table:table-row table:style-name=”ro2″>
<table:table-cell table:number-columns-repeated=”2″/>
</table:table-row>
</table:table>
<table:named-expressions/>
</office:spreadsheet>
</office:body>

This is an XML file of reasonable complexity. Even someone without technical knowledge can identify the contents of the two columns with a little effort. The file is in an understandable format for dates, text strings and tags (table row, table cell, text and date value).

The Microsoft 365 folder contains three subfolders and the [Content_Types].xml file. Opening this file reveals information about the other files, including those in the subfolders. It also shows that the contents should be found in the sheet1.xml file, which is hidden in the worksheets folder, which is hidden in the xl folder. There is no technical reason for this game of hide-and-seek other than to make the internal structure of the XLSX file more complicated.

The significant part of the Microsoft 365 sheet1.xml file is as follows:

<dimension ref=”A1:B12″/>
<sheetViews>
<sheetView tabSelected=”1″ workbookViewId=”0″>
<selection activeCell=”B1″ sqref=”B1:B1048576″/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight=”15″/>
<cols>
<col min=”1″ max=”1″ width=”34.140625″ style=”2″ bestFit=”1″ customWidth=”1″/>
<col min=”2″ max=”2″ width=”11.7109375″ style=”4″ bestFit=”1″ customWidth=”1″/>
</cols>
<sheetData>
<row r=”1″ spans=”1:2″>
<c r=”A1″ s=”1″ t=”s”>
<v>0</v>
</c>
<c r=”B1″ s=”3″ t=”s”>
<v>1</v>
</c>
</row>
<row r=”2″ spans=”1:2″>
<c r=”A2″ s=”2″ t=”s”>
<v>2</v>
</c>
<c r=”B2″ s=”4″>
<v>19948</v>
</c>
</row>
<row r=”3″ spans=”1:2″>
<c r=”A3″ s=”2″ t=”s”>
<v>3</v>
</c>
<c r=”B3″ s=”4″>
<v>23760</v>
</c>
</row>
<row r=”4″ spans=”1:2″>
<c r=”A4″ s=”2″ t=”s”>
<v>4</v>
</c>
<c r=”B4″ s=”4″>
<v>28813</v>
</c>
</row>
<row r=”5″ spans=”1:2″>
<c r=”A5″ s=”2″ t=”s”>
<v>5</v>
</c>
<c r=”B5″ s=”4″>
<v>29860</v>
</c>
</row>
<row r=”6″ spans=”1:2″>
<c r=”A6″ s=”2″ t=”s”>
<v>6</v>
</c>
<c r=”B6″ s=”4″>
<v>30560</v>
</c>
</row>
<row r=”7″ spans=”1:2″>
<c r=”A7″ s=”2″ t=”s”>
<v>7</v>
</c>
<c r=”B7″ s=”4″>
<v>30933</v>
</c>
</row>
<row r=”8″ spans=”1:2″>
<c r=”A8″ s=”2″ t=”s”>
<v>8</v>
</c>
<c r=”B8″ s=”4″>
<v>31825</v>
</c>
</row>
<row r=”9″ spans=”1:2″>
<c r=”A9″ s=”2″ t=”s”>
<v>9</v>
</c>
<c r=”B9″ s=”4″>
<v>37623</v>
</c>
</row>
<row r=”10″ spans=”1:2″>
<c r=”A10″ s=”2″ t=”s”>
<v>10</v>
</c>
<c r=”B10″ s=”4″>
<v>39550</v>
</c>
</row>
<row r=”11″ spans=”1:2″>
<c r=”A11″ s=”2″ t=”s”>
<v>11</v>
</c>
<c r=”B11″ s=”4″>
<v>40449</v>
</c>
</row>
<row r=”12″ spans=”1:2″>
<c r=”A12″ s=”2″ t=”s”>
<v>12</v>
</c>
<c r=”B12″ s=”4″>
<v>41859</v>
</c>
</row>
</sheetData>
<pageMargins left=”0.7″ right=”0.7″ top=”0.75″ bottom=”0.75″ header=”0.3″ footer=”0.3″/>

It’s an extremely cryptic XML file. Apart from a few tags – col, row, sheetview and sheetdata – the XML schema is completely incomprehensible. Where are the dates? Where are the event descriptions?

They are actually there, but I challenge anyone to find them unless they know that Excel describes them with a sequential number starting from 1 January 1900. For 29 February 1900, it adds one, despite this being a “phantom” day that the programme – which is incompatible with the Gregorian calendar, a standard recognised even by the Chinese and Muslims – stubbornly continues to consider as existing, even though the “leap year bug” was discovered by Bob Bemer in 1958.

Therefore, in Excel, 19948 corresponds to 12 August 1954, but in reality it is 13 August 1954. The other dates are obviously 23,760; 28,813; 29,860; 30,560; 30,933; 31,825; 37,623; 39,550; 40,449; and 41,859. This is intuitive and easy to calculate, and above all it is imposed by the complexity of the document. Bullshit.

However, the mystery of the event descriptions remains. According to sheet1.xml, they do not exist since they do not appear in any way, not even as a reference. It is as if the spreadsheet consisted only of the second column.

So, I return to the [Content_Types].xml file and open the XML files in the order they are listed, searching for them in the subfolders.

<Types xmlns=”http://schemas.openxmlformats.org/package/2006/content-types”>
<Default Extension=”rels” ContentType=”application/vnd.openxmlformats-package.relationships+xml”/>
<Default Extension=”xml” ContentType=”application/xml”/>
<Override PartName=”/xl/workbook.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml”/>
<Override PartName=”/docProps/core.xml” ContentType=”application/vnd.openxmlformats-package.core-properties+xml”/>
<Override PartName=”/docProps/app.xml” ContentType=”application/vnd.openxmlformats-officedocument.extended-properties+xml”/>
<Override PartName=”/xl/worksheets/sheet1.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml”/>
<Override PartName=”/xl/theme/theme1.xml” ContentType=”application/vnd.openxmlformats-officedocument.theme+xml”/>
<Override PartName=”/xl/styles.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml”/>
<Override PartName=”/xl/sharedStrings.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml”/>
</Types>

Just as I was about to give up hope, I finally found the event descriptions in the sharedStrings.xml file. The file contains the following:

<sst xmlns=”http://schemas.openxmlformats.org/spreadsheetml/2006/main” count=”13″ uniqueCount=”13″>
<si>
<t>Event</t>
</si>
<si>
<t>Date</t>
</si>
<si>
<t>Was Born in Umbria</t>
</si>
<si>
<t>Broke Nose in Rome</t>
</si>
<si>
<t>University Degree in Milan</t>
</si>
<si>
<t>First Job at Italian Touring Club</t>
</si>
<si>
<t>Hired by Honeywell and Got 1st PC</t>
</si>
<si>
<t>1st Wedding in Assisi</t>
</si>
<si>
<t>BBC Show Interview in Birmingham</t>
</si>
<si>
<t>Installed OpenOffice</t>
</si>
<si>
<t>Repaired Nose in Rozzano</t>
</si>
<si>
<t>Launched LibreOffice</t>
</si>
<si>
<t>2nd Wedding in Las Vegas</t>
</si>
</sst>

If Sheet1.xml was cryptic, this is downright incomprehensible. I would like to know how the events are related to the dates within the sheet1.xml file through the different tags used in the two files: <t> and <v>. There are no cross-references linking the two elements, and if there are any, I challenge anyone to explain them to me in a way that I can understand and justify the mysterious format of these references.

Unfortunately, the reality is what I have already tried to explain without going into technical detail, as I have done in this post and will do in the next one dedicated to the DOCX case. Microsoft has developed an unnecessarily complex format – if LibreOffice can handle the information more simply, I don’t understand why Microsoft 365 can’t do the same – with the aim of making it extremely difficult to emulate the OOXML format without reverse engineering, which is widely used in some countries.

Furthermore, office suites that use reverse engineering to adopt OOXML as their native format merely help Microsoft to defend its market share by promoting a proprietary format that goes against users’ interests and their right to ownership and control of the content they have developed, generally referred to as digital sovereignty.

Users should learn to protect their rights by choosing an open, standard format such as ODF. This guarantees control over content and all that this entails, including protection of privacy, proper management of sensitive data and the ability to decide what to share and with whom.

This is a format whose development process, features and version are known, and whose description corresponds to what happens on the user’s PC, so even the least technical user can understand when a problem occurs and, in many cases, solve it.

In short, it is the standard document format that we would all like to have, but which only a minority use due to a lack of knowledge about the reality of the OOXML format, and the messianic trust that many have in Microsoft. This leads them to believe that there cannot be a commercial strategy behind the document format that protects the company’s interests at the expense of users.

How to resolve common compatibility issues with ODF files

Troubleshooting opening, formatting, and data loss issues with Open Document Format files

ODF files are great for sharing documents across multiple platforms, but they don’t always work perfectly, especially when using Microsoft Office or other software based on proprietary formats. If you’ve encountered problems opening, editing, or preserving the formatting of .odt, .ods, or .odp files, you’re not alone.

Here’s an overview of the most common compatibility issues with ODF files, along with their solutions.

1. The ODF file does not open in Microsoft Office

Opening an .odt file with Word or an .ods file with Excel is unsuccessful, and the file opens with formatting errors. Microsoft Office supports ODF, but not always correctly, and although support has improved in recent versions, files continue to have difficulties with some features.

There are two solutions: updating Microsoft Office, as compatibility improves with each new version; and converting with LibreOffice, which natively handles ODF files and, in compatibility mode, .docx and .xlsx files much better than Microsoft Office does with .odt and .ods files.

2. Formatting changes during transfer between suites

A file may appear perfect in LibreOffice, but when opened in Microsoft Office, the layout, fonts or spacing may change. This happens because the two software programmes interpret elements such as text boxes, tables and styles differently. Line spacing and bullet points may also change.

The solution is to use simple formatting in all cases where the file is shared between multiple office suites, avoiding complex layouts, unusual fonts and embedded elements. If formatting is more important than editability, you can use PDF format for the final version.

3. Images and graphics disappear or become corrupted

Images or graphics embedded in the document disappear, become distorted or can no longer be edited when opened with other software. This is because their formats are specific to the software that created the file – and therefore proprietary – and not standard, as is often the case with Microsoft Office.

The solution is to use standard formats, such as PNG or JPG for bitmap images, and SVG for vector images. In some cases, it is advisable to convert images before embedding them in the document and, if possible, simplify them (without altering them).

4. Macros and scripts do not work

Macros written in one suite do not work (or cause errors) in another. This is a known problem, linked to the fact that the scripting languages – Microsoft Office VBA and LibreOffice Basic – are proprietary and therefore incompatible with each other.

The solution is to avoid macros when sharing files, and if it is really impossible to do without them, you need to rewrite the scripts for each platform, using the respective languages. Unfortunately, there are no shortcuts or interoperable solutions.

5. Some data is lost when saving in proprietary format

In some cases, quite sporadic, saving an ODF file in proprietary format causes data loss. Unfortunately, this is a problem due to the artificial complexity of Microsoft Office proprietary files, which use an XML syntax that is very different from the standard in order to limit file interoperability. The solution is to always keep a copy of the original ODF file, because the format is much more robust and, above all, can be recovered by the user in case of file corruption.

In these cases, LibreOffice is the user’s best friend, because it handles ODF files natively and exports clean .docx, .xlsx and .pptx files with XML syntax that never reaches the level of artificial complexity of Microsoft Office.

Final considerations

ODF is the best open standard format for office documents. It is robust and flexible and was created to protect users’ rights thanks to its features that make it independent, interoperable, neutral and perennial. However, this does not mean that it is perfect and easy for developers to implement when the software has not been developed with the same objectives as LibreOffice, as in the case of Microsoft Office.

If problems arise, the key is to know what each office suite can and cannot handle, bearing in mind that LibreOffice was developed with the aim of protecting the interests of users, while proprietary suites were developed to protect the commercial interests of vendors.

The secret is to keep things simple, focusing on the content rather than the appearance of the document. When in doubt, always use the safest format, which is ODF.