我使用OpenXML SDK创建了一个docx文档。它包含组内容控件,以便能够具有嵌套的文档结构。组内容控件可以包含其他组内容控件或普通文本段落或两者。 生成的document.xml的结构如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:sectPr>
<w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:gutter="0" w:footer="720" w:header="720" w:left="1440" w:bottom="1440" w:right="1440" w:top="1440"/>
<w:cols w:space="720"/><w:docGrid w:linePitch="360"/>
</w:sectPr>
<w:sdt>
<w:sdtPr>
<w:alias w:val="deel"/>
<w:tag w:val="deel"/>
<w:lock w:val="unlocked"/>
<w:group/>
</w:sdtPr>
<w:sdtContent>
<w:p>
<w:pPr>
<w:pStyle w:val="DeelTitel"/>
<w:tabs>
<w:tab w:val="clear" w:pos="360"/>
<w:tab w:val="num" w:pos="1987"/>
</w:tabs>
</w:pPr>
<w:r>
<w:t>Some paragraph text here</w:t>
</w:r>
</w:p>
<w:sdt>
<w:sdtPr>
<w:alias w:val="hoofdstuk"/>
<w:tag w:val="hoofdstuk"/>
<w:lock w:val="unlocked"/>
<w:group/>
</w:sdtPr>
<w:sdtContent>
<w:p>
<w:pPr>
<w:pStyle w:val="HoofdstukTitel"/>
<w:tabs>
<w:tab w:val="clear" w:pos="360"/>
<w:tab w:val="num" w:pos="1987"/>
</w:tabs>
</w:pPr>
<w:r>
<w:t>Another title here one level deeper</w:t>
</w:r>
</w:p>
etc. etc.
Word中的结果看起来不错,但问题是所有文本似乎都被锁定了。正如您在上面的XML中看到的,我尝试将SdtBlocks的lock属性设置为值“unlocked”。我也尝试将整个锁属性删除,但所有结果都相同:如果我尝试编辑段落中的其中一个标题,Word会显示错误“由于选择被锁定,因此不允许进行此修改。”
我在这里做错了什么,或者如何确保段落中的文字是可编辑的?
提前致谢。 鲁
答案 0 :(得分:2)
如果将来有人需要这个,我会弄清楚罪魁祸首是什么。 退出sdt属性(sdtPr)中的w:group可以解决此问题。 从文档中:“此元素指定父结构化文档标记在文档中显示时应为限制分组。”所以它确实有道理,但很难弄明白。希望它能在未来节省一些宝贵的时间。
鲁