2017-01-05 14 views
0

Я читал «Open XML. Разметка объяснялась» Wouter van Vugt. Глава «Wordprocessing ML» содержит довольно простое руководство по ручному созданию простого файла docx, создав несколько файлов частей xml, закрепив его и переименовав в * .docx.
Я внимательно следил за инструкциями, но когда я попытался открыть окончательный * .zip-файл с помощью инструмента Openivity SDK Productivity Tool, у меня возникла ошибка: «Не удается открыть файл: указанный тип файла не поддерживается».
Я попытался создать файл docx с помощью MS Word, переименуйте его в * .zip и откройте его с помощью инструмента Productivity Tool. Это сработало. В этом файле гораздо больше частей, а затем в таких, созданных вручную, но дескриптивные части практически одинаковы. Что я делаю неправильно?
P.S .: Да, я знаю, что OOXML должен быть создан с помощью некоторого .NET-совместимого кода, а не путем ручного создания содержимого XML. Но я пытаюсь понять его структуру, и я не понимаю.Не удается открыть файл OpenXML docx, созданный вручную

Содержание созданных файлов:

[Content-Types] .xml:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<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="/Document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.mainxml" /> 
</Types> 

document.xml:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <w:body> 
     <w:p> 
      <w:r> 
       <w:t>Hello World!</w:t> 
      </w:r> 
     </w:p> 
    </w:body> 
</w:document> 

.rels:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> 
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="Document.xml" /> 
</Relationships> 

ответ

0

Если предположить, что филеструктура похожа на мычание:

_rels 
    .rels 
[Content_Types].xml 
Document.xml 

Тогда это, вероятно, просто не хватает '+' в конце прошлого 'ContentType' внутри [Content_Types] .xml:

<Override PartName="/Document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" /> 

(с помощью "основной + XML 'вместо' mainxml ').