htmlms-office

What do <o:p> elements do anyway?


I've been running into some (standard) issues with Microsoft Office injecting its nasty markup into some html after forwarding an email via Outlook.

I'm interested to know:


Solution

  • Note: at some point it has changed, and e.g. in Word 365 the generated HTML no longer contains such elements. However, the answer is still valid for older Word versions.


    Couldn't find any official documentation (no surprise there) but according to this interesting article (original link dead, this links to web archive of it), those elements are injected in order to enable Word to convert the HTML back to fully compatible Word document, with everything preserved.

    The relevant paragraph:

    Microsoft added the special tags to Word's HTML with an eye toward backward compatibility. Microsoft wanted you to be able to save files in HTML complete with all of the tracking, comments, formatting, and other special Word features found in traditional DOC files. If you save a file in HTML and then reload it in Word, theoretically you don't loose anything at all.

    This makes lots of sense.

    For your specific question.. the o in the <o:p> means "Office namespace" so anything following the o: in a tag means "I'm part of Office namespace" - in case of <o:p> it just means paragraph, the equivalent of the ordinary <p> tag.

    I assume that every HTML tag has its Office "equivalent" and they have more.