Продолжение нумерованного списка в openxml - PullRequest
0 голосов
/ 08 мая 2020

Я продолжил нумерованный список.

Это мой XML код:

<w:p>
   <w:pPr>
      <w:pStyle w:val="Normal"/>
      <w:numPr>
         <w:ilvl w:val="0"/>
         <w:numId w:val="1"/>
      </w:numPr>
   </w:pPr>
   <w:r>
      <w:rPr></w:rPr>
      <w:t xml:space="preserve">toto</w:t>
   </w:r>
</w:p>
<w:p>
   <w:pPr>
      <w:pStyle w:val="Normal"/>
      <w:numPr>
         <w:ilvl w:val="0"/>
         <w:numId w:val="1"/>
      </w:numPr>
   </w:pPr>
   <w:r>
      <w:rPr></w:rPr>
      <w:t xml:space="preserve">toto</w:t>
   </w:r>
</w:p>

и вот мой результат:

  1. toto
  2. toto
  3. Cornichon
  4. Cornichon

Я хочу это:

  1. toto
  2. toto

    1. Cornichon
    2. Cornichon

Advance Спасибо,

1 Ответ

0 голосов
/ 08 мая 2020

DO C, файлы DOCX, XLS, XLSX, ODT и т. Д. Фактически заархивированы XML файлы.

Таким образом, вы можете создать нужный формат в текстовом редакторе, а затем распаковать файл. Если у вас был файл docx, то в разархивированной версии вы увидите 3 папки. Слово \ документ будет содержать правильный XML для вас. Здесь вы можете проверить, как будет выглядеть желаемая структура, если вы создадите ту же структуру с помощью PHP.

Мой тестовый файл ODT (формат LibreOffice Word): enter image description here

content.xml, который описывает часть сомнительной структуры (файл ODT):

 <text:list xml:id="list1418357962" text:style-name="L1">
    <text:list-item>
       <text:p text:style-name="P2">asd</text:p>
    </text:list-item>
    <text:list-item>
       <text:p text:style-name="P2">asd</text:p>
       <text:list>
          <text:list-item>
             <text:p text:style-name="P2">asd</text:p>
          </text:list-item>
          <text:list-item>
             <text:p text:style-name="P2">asd</text:p>
          </text:list-item>
       </text:list>
    </text:list-item>
 </text:list>
 <text:p text:style-name="P1" />

Я также сохранил документ как .docx файл. Здесь word\document.xml выглядит так:

<w:body>
      <w:p>
         <w:pPr>
            <w:pStyle w:val="Normal" />
            <w:bidi w:val="0" />
            <w:jc w:val="left" />
            <w:rPr />
         </w:pPr>
         <w:r>
            <w:rPr />
            <w:t>Asd</w:t>
         </w:r>
      </w:p>
      <w:p>
         <w:pPr>
            <w:pStyle w:val="Normal" />
            <w:bidi w:val="0" />
            <w:jc w:val="left" />
            <w:rPr />
         </w:pPr>
         <w:r>
            <w:rPr />
            <w:t>asd</w:t>
         </w:r>
      </w:p>
      <w:p>
         <w:pPr>
            <w:pStyle w:val="Normal" />
            <w:numPr>
               <w:ilvl w:val="0" />
               <w:numId w:val="1" />
            </w:numPr>
            <w:bidi w:val="0" />
            <w:jc w:val="left" />
            <w:rPr />
         </w:pPr>
         <w:r>
            <w:rPr />
            <w:t>asd</w:t>
         </w:r>
      </w:p>
      <w:p>
         <w:pPr>
            <w:pStyle w:val="Normal" />
            <w:numPr>
               <w:ilvl w:val="0" />
               <w:numId w:val="1" />
            </w:numPr>
            <w:bidi w:val="0" />
            <w:jc w:val="left" />
            <w:rPr />
         </w:pPr>
         <w:r>
            <w:rPr />
            <w:t>asd</w:t>
         </w:r>
      </w:p>
      <w:p>
         <w:pPr>
            <w:pStyle w:val="Normal" />
            <w:numPr>
               <w:ilvl w:val="1" />
               <w:numId w:val="1" />
            </w:numPr>
            <w:bidi w:val="0" />
            <w:jc w:val="left" />
            <w:rPr />
         </w:pPr>
         <w:r>
            <w:rPr />
            <w:t>asd</w:t>
         </w:r>
      </w:p>
      <w:p>
         <w:pPr>
            <w:pStyle w:val="Normal" />
            <w:numPr>
               <w:ilvl w:val="1" />
               <w:numId w:val="1" />
            </w:numPr>
            <w:bidi w:val="0" />
            <w:jc w:val="left" />
            <w:rPr />
         </w:pPr>
         <w:r>
            <w:rPr />
            <w:t>asd</w:t>
         </w:r>
      </w:p>
      <w:p>
         <w:pPr>
            <w:pStyle w:val="Normal" />
            <w:bidi w:val="0" />
            <w:jc w:val="left" />
            <w:rPr />
         </w:pPr>
         <w:r>
            <w:rPr />
         </w:r>
      </w:p>
      <w:sectPr>
         <w:type w:val="nextPage" />
         <w:pgSz w:w="12240" w:h="15840" />
         <w:pgMar w:left="1134" w:right="1134" w:header="0" w:top="1134" w:footer="0" w:bottom="1134" w:gutter="0" />
         <w:pgNumType w:fmt="decimal" />
         <w:formProt w:val="false" />
         <w:textDirection w:val="lrTb" />
         <w:docGrid w:type="default" w:linePitch="600" w:charSpace="32768" />
      </w:sectPr>
   </w:body>

Вероятно, у него много дополнительных тегов, потому что это преобразованный формат, и конвертер не очень хорошо работает. Но вы можете использовать Word, zip-приложение и простой текстовый редактор, чтобы определить оптимизированный формат. Когда вы изменяете XML, вы можете вернуть его, заархивировать и проверить результат в Word.

...