Docx:似乎无法获得要呈现的项目符号列表

时间:2014-07-22 18:16:17

标签: docx wordprocessingml

我从头开始用XML构建DocX文档。我有一个非常简单的目标:创建一个项目符号列表,就像HTML中的ul一样。阅读WordProcessingML specification for numbered lists (section 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>

所以我有一个id为1的抽象编号,用一个级别定义了一些缩进,一个子弹定义为lvlText(符号&#8226;呈现为)。抽象编号为1由&#34;实际&#34;编号为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
  •   
  •   
  • 巴兹
  •   

但是当我在微软的单词中打开它时,它会(大致)呈现为

  

这是一个测试

     
      
  1. FOO
  2.   
  3.   
  4. 巴兹
  5.   

当我在Google文档中打开它时,它只是呈现文本:

  

这是一个测试

     

FOO

     

     

巴兹

看起来我似乎遵循标准中规定的规范。我不知道我失踪了什么。为什么没有渲染子弹?我能在这做什么?

1 个答案:

答案 0 :(得分:4)

确保您正确引用文档中的编号部分。 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>