Docx: не получается получить маркированный список для рендеринга

Я строю документ DocX практически с нуля с помощью XML. У меня очень простая цель: создать список маркеров, как ul в HTML. Читая спецификацию WordProcessingML для нумерованных списков (раздел 2.9), я создал то, что, как я думал, удовлетворит это. Вот что мой numbering.xml похоже:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:numbering xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:mo="http://schemas.microsoft.com/office/mac/office/2008/main" xmlns:mv="urn:schemas-microsoft-com:mac:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing">
  <w:abstractNum w:abstractNumId="1">
    <w:multiLevelType w:val="singleLevel"/>
    <w:lvl w:ilvl="0">
      <w:start w:val="1"/>
      <w:numFmt w:val="bullet"/>
      <w:lvlText w:val="&#8226;"/>
      <w:lvlJc w:val="left"/>
      <w:pPr>
        <w:tabs>
          <w:tab w:pos="360" w:val="num"/>
        </w:tabs>
        <w:ind w:hanging="360" w:left="360"/>
      </w:pPr>
      <w:rPr>
        <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
      </w:rPr>
    </w:lvl>
  </w:abstractNum>
  <w:num w:numId="1">
    <w:abstractNumId w:val="1"/>
  </w:num>
</w:numbering>

Итак, у меня есть абстрактная нумерация с идентификатором 1, определенная одним уровнем с некоторым отступом и маркером как lvlText (символ &#8226; отображается как ). На абстрактную нумерацию 1 ссылается "фактическая" нумерация 1.

И вот что мой document.xml похоже:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:mo="http://schemas.microsoft.com/office/mac/office/2008/main" xmlns:mv="urn:schemas-microsoft-com:mac:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing">
  <w:body>
    <w:p w:rsidR="00851CFD" w:rsidRDefault="00851CFD">
      <w:r>
        <w:t>This is a test</w:t>
      </w:r>
    </w:p>
    <w:p>
      <w:pPr>
        <w:numPr>
          <w:ilvl w:val="0"/>
          <w:numId w:val="1"/>
        </w:numPr>
      </w:pPr>
      <w:r>
        <w:t>foo</w:t>
      </w:r>
    </w:p>
    <w:p>
      <w:pPr>
        <w:numPr>
          <w:ilvl w:val="0"/>
          <w:numId w:val="1"/>
        </w:numPr>
      </w:pPr>
      <w:r>
        <w:t>bar</w:t>
      </w:r>
    </w:p>
    <w:p>
      <w:pPr>
        <w:numPr>
          <w:ilvl w:val="0"/>
          <w:numId w:val="1"/>
        </w:numPr>
      </w:pPr>
      <w:r>
        <w:t>baz</w:t>
      </w:r>
    </w:p>
    <w:sectPr w:rsidR="008E365B" w:rsidSect="008E365B">
      <w:pgSz w:h="15840" w:w="12240"/>
      <w:pgMar w:bottom="1440" w:gutter="0" w:left="1800" w:right="1800" w:top="1440"/>
    </w:sectPr>
  </w:body>
</w:document>

Там начальный абзац, а затем три строки, которые определяют numId из 1 (указывая на нумерацию, которую мы определили ранее) и уровень отступа 0. Итак, мы должны получить что-то вроде:

Это тест

  • Foo
  • бар
  • Baz

Но когда я открываю это в Microsoft Word, он вместо этого (примерно) как

Это тест

  1. Foo
  2. бар
  3. Baz

И когда я открываю его в Google Docs, он просто отображает текст:

Это тест

Foo

бар

Baz

Похоже, что я следую спецификации, изложенной в стандарте. Я не знаю, что мне не хватает. Почему пули не получают? Что я могу сделать здесь?

1 ответ

Решение

Убедитесь, что вы правильно ссылаетесь на нумерацию в своем документе. Word использует стандартную нумерацию (1, 2, 3, ...), когда не удается найти определение нумерации.

word/_rels/document.xml.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/numbering" 
                Target="numbering.xml"/>
  <!-- other relationships go here. -->
</Relationships>
Другие вопросы по тегам