我从头开始用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="•"/>
<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(符号•
呈现为•
)。抽象编号为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
- 巴
- 巴兹
但是当我在微软的单词中打开它时,它会(大致)呈现为
这是一个测试
- FOO
- 巴
- 巴兹
醇>
当我在Google文档中打开它时,它只是呈现文本:
这是一个测试
FOO
巴
巴兹
看起来我似乎遵循标准中规定的规范。我不知道我失踪了什么。为什么没有渲染子弹?我能在这做什么?
答案 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>