2012-03-21 66 views
2

我使用OpenXML SDK創建了一個docx文檔。它包含組內容控件以便能夠具有嵌套的文檔結構。組內容控件可以包含其他組內容控件或普通文本段落或兩者。 所產生的document.xml中的結構是這樣的:docx(OpenXML SDK生成)中的文本不可編輯

<?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的鎖定屬性設置爲「解鎖」。我也嘗試將整個鎖屬性取消,但所有結果都一樣:如果我嘗試編輯段落中的某個標題,Word會顯示錯誤「因爲選擇被鎖定而不允許此修改」。

我在這裏做錯了什麼或如何確保段落中的文本是可編輯的?

在此先感謝。 Ruben。

回答

2

如果有人在將來需要這個,我想出了罪魁禍首是什麼。 退出sdt屬性(sdtPr)中的w:組可解決此問題。 從文檔中獲得:「此元素指定在文檔中顯示時,父級結構化文檔標記應爲受限制的分組。」所以它確實有道理,但很難弄清楚。希望將來可以爲別人節省一些寶貴的時間。

Ruben。