Office Open XML (OOXML, DOCX[1], XLSX, PPTX, проект ISO/IEC IS 29500:2008) — серия форматов файлов для хранения электронных документов пакетов офисных приложений — в частности, Microsoft Office. Формат представляет собой zip-архив, содержащий текст в виде XML, графику и другие данные[2], которые ранее хранились в двоичных форматах DOC, XLS и т. д.
Первоначально формат создавался как замена прежнему двоичному формату документов, который использовали приложения Microsoft Office вплоть до версии Office 2003 включительно, и конкурент стандартизированному прямо перед этим OpenDocument. В 2006 году формат Office Open XML был объявлен свободным и открытым форматом Ecma International. Он является форматом по умолчанию для приложений Microsoft Office 2007 и более поздних.
Две разные версии OOXML определены в ECMA-376[1][3] и в ISO 29500:2008. Полная поддержка формата ISO 29500 ожидалась (но не появилась) в Microsoft Office 2010.
С созданием OOXML двоичные форматы Microsoft открыли на несвободных[4] условиях Microsoft Open Specification Promise — к тому времени они были частично распознаны, но исчерпывающей документации не существовало.
Microsoft Office, собранный в 1990 году из программ, появившихся ещё в 80-е, не рассчитывался на взаимообмен. Если же нужно использовать документы Office в чужом ПО — для этого есть Component Object Model и более простые форматы наподобие RTF[5].
К 2005 году участились призывы к госструктурам переходить на открытые форматы. Если в бывшем СССР культура пользования лицензионным ПО была ещё слаба, в Европе закрытый формат правительственных документов фактически стал требованием платить из государственных бюджетов Microsoft — американской компании — несколько сотен долларов за рабочее место. Осознав, что у неё нет подходящего формата, а конкуренты, OASIS, проводят свой ODF через ISO, Microsoft на основе своих DOC и XLS создала свой XML-формат и провела его через Ecma International и ISO. Началась эта процедура в 2006 году и закончилась в 2008 — чуть больше двух лет на всё (ODF начали стандартизировать ещё в 2002-м, и спустя 15 лет работа всё ещё далека от завершения). Оппоненты обнаружили в этом начинании множество нарушений внутренних процедур ISO.
Microsoft заявила, что Office Open XML будет открытым стандартом, и представила его на утверждение Ecma International (ECMA).
8 декабря2005 года ECMA организовала технический комитет 45 (TC45), чтобы «выпустить формальный стандарт для офисных приложений, полностью совместимый с форматами Office Open XML, представленными Microsoft». Предложение также поддержали Apple Inc., Barclays Capital, BP, the British Library, Essilor, Intel, NextPage., Statoil ASA и Toshiba[6].
5 сентября2007 года принятие варианта OOXML как стандарта ISO/IEC 29500 было временно отклонено по результатам голосования[7].
В марте 2008 года изменённая спецификация была принята как будущий стандарт ISO/IEC 29500. В частности, в Норвегии при этом были отмечены нарушения процесса стандартизации[8]. Позже оказалось, что файлы, сохраняемые Microsoft Office 2007, не проходят тестов на соответствие стандарту, что нарушает правила принятия стандарта через процедуру Fast-Tracking, требующие, чтобы существовали реализации стандарта[9].
Публикация ISO/IEC DIS 29500 была отложена на период рассмотрения апелляций (30 дней)[16][17].
В июле руководители ISO и IEC порекомендовали Technical Management Board отклонить апелляции, указав в качестве причины то, что проект стандарта был принят голосованием в соответствии с директивами ISO/IEC JTC 1[18].
В августе ISO отклонила апелляции стран, выступающих против принятия OOXML как стандарта, так как они не смогли получить поддержку необходимого числа участников ISO для приостановления принятия стандарта[19]
В конце августа государственные IT‐организации Бразилии, ЮАР, Венесуэлы, Эквадора, Кубы и Парагвая опубликовали заявление о сомнениях в нейтральности ISO[20][21].
В Норвегии, где из 21 голоса «против» и двух голосов «за» получилось «за», 29 сентября 2008 года 13 членов технической комиссии в знак протеста вышли из состава Standard Norge[no][22][23][24].
По данным собрания ISO/IEC JTC1/SC34, подкомиссии ISO/IEC JTC1, в начале октября SC34 отправила OASIS неопубликованный запрос на передачу ей контроля над стандартом ISO/IEC 26300 (ODF), обосновывая это стремлением к лучшей совместимости между стандартами. В Groklaw также обратили внимание на то, что 9 из 20 присутствовавших на собрании в июле являлись сотрудниками или консультантами Microsoft, либо членами ECMA TC45. В результате появились подозрения в попытке захвата Microsoft контроля над ODF[25][26][27].
После того, как OOXML стандартизовали, работа над стандартом приостановилась; Microsoft Office 2010 всё ещё отвечал «переходным» требованиям OOXML, но не «строгим». Microsoft пообещал полное соответствие в следующей версии. ISO пригрозила убрать переходные части из стандарта[28].
Office 2013 начал поддерживать строгий OOXML[29]. По умолчанию сохранение всё ещё, даже на 2016 год, идёт в переходной[30].
25 июня 2014 года Microsoft выпустила Open XML SDK в open source под лицензией Apache 2.0[31].
Большей популярностью на 2007 год пользуются его предшественники — двоичные форматы Microsoft Office 97—2003. Поддержка одной из версий OOXML (не соответствующая ISO/IEC 29500) появилась в Microsoft Office 2007[9]. Для работы с этим форматом в предыдущих версиях MS Office Microsoft предлагает установить Microsoft Office Compatibility Pack, который обеспечивает «прозрачную» работу с форматами Office 2007 пакетов MS Office 2000, XP и 2003[32].
В OpenOffice.org 3 версии присутствует частичная встроенная поддержка OOXML. Для решения данной проблемы существуют онлайн-конверторы, способные конвертировать формат DOCX в другие форматы. Также существует плагин (разработанный фирмой Novell), позволяющий открывать и сохранять файлы в этом формате в ОС семейств SUSE и Microsoft Windows[33].
Поддержка формата OOXML в текстовом процессоре CorelWord Perfect ожидалась в середине 2007 года[34].
На момент стандартизации не существовало ни одной программы, работавшей с OOXML. Потому режим стандартизации fast track, предназначенный для широко используемых стандартов, был явно излишним.
Сам формат предназначен для «точного представления ранее сформированного корпуса электронных документов, таблиц и презентаций, созданных с помощью приложений Microsoft Office»[35]. Со стороны Microsoft дать доступ стороннему ПО к своим документам — это похвальное начинание, однако этого явно мало для кроссплатформенного и межгосударственного обмена документами.
Юридическая организация Software Freedom Law Center[en] указала на проблемы с условиями, под которыми Microsoft опубликовали спецификацию Microsoft Open Specification Promise: право на использование патента на «технологию» даётся только для кода, реализующего её — частично или полностью, — и не распространяется на работы (в том числе и производные от упомянутого кода), не связанные напрямую с данной технологией[36].
Название Office Open XML слишком похоже на OpenOffice.org XML, что приводит к путанице[37][38]. Такое уже случалось с предложениями стандартов от Microsoft[39].
Несмотря на то, что информация о формате открыта, он защищён патентами Microsoft, и любая программа (нарушающая лицензионное соглашение на использование запатентованных составляющих стандарта) для чтения Open XML нарушит законы США[40][41].
Документация к Open XML занимает более 7000 страниц, что является излишне большим объёмом и существенно усложняет попытку создания программы с поддержкой Open XML[42][43].
Из‑за широкого использования в Open XML битовых масок невозможно провести формальную проверку XML‐файла с помощью DTD или XSD.
Open XML является, по сути, переводом в XML бинарных форматов Microsoft Office. Как ручное редактирование, так и поддержка Open XML в других программах серьёзно затруднены. Размеры бумаги перенумерованы числами от 1 до 68, вместо имён A4, B5 и т. д; аналогично сделано с кодами языков. Некоторые наименования цветов отличаются от стандартных.
Формат поддерживает вставку двоичных данных, что в будущем может привести к несовместимости.
Формат времени, доставшийся Open XML по наследству от Microsoft Excel, а тому — от Lotus 1-2-3, отсчитывает годы, начиная с 1900. При этом сам 1900 год неправильно трактуется как високосный, вследствие чего все даты до 28 февраля 1900 года включительно имеют неправильное соответствие с днём недели. Также в формате времени не задан часовой пояс, и временны́е расчёты не учитывают переходов на летнее время.
Использование специального формата математических формул, который имеет альтернативу в виде MathML и вдобавок был отвергнут консорциумом W3C ещё в 1997 году. В других местах также используются собственные форматы Microsoft — например, для векторной графики применяется внутренний формат Windows WMF, а не стандартизированный SVG.
Нет локализации для семитских языков и языков с начертанием справа налево.
Отсутствие поддержки языков с начертанием справа налево и, как результат, невозможность написания документов на арабском языке, иврите и др.
Отсутствие поддержки других выходных дней недели, кроме субботы-воскресенья: в частности, пятницы-субботы (в Израиле) и четверга-пятницы (в странах Ближнего Востока).
↑zip-архив содержит в себе XML-файлы и три папки, docProps, Word, и _rels, которые сохраняют свойства документа, содержание и отношения между остальными файлами.DOCX что это за формат файла(рус.) (недоступная ссылка — история). OC (4 февраля 2013). Архивировано 16 сентября 2013 года.
↑Архивированная копия (неопр.). Дата обращения: 18 августа 2008. Архивировано из оригинала 18 августа 2008 года. ISO, IEC reject appeals, approve OOXML spec
↑Rob Weir.Amusing but Confusing(англ.) (недоступная ссылка — история). An Antic Disposition (20 января 2007). Дата обращения: 7 октября 2009. Архивировано 23 февраля 2012 года.
Andreas Fischer.Tracking the status of Office Open XML(англ.) (недоступная ссылка — история). Balance of Cowards (31 августа 2007). — Примерная сводная таблица готовящихся голосов за стандартизацию OOXML ISO. Дата обращения: 6 февраля 2011. Архивировано 23 февраля 2012 года.