Текст в docx (сгенерированный OpenXML SDK) не редактируется - PullRequest
2 голосов
/ 21 марта 2012

Я создал документ DOCX, используя OpenXML SDK.Он содержит групповые элементы управления содержимым, чтобы иметь возможность иметь вложенную структуру документа.Элементы управления содержимым группы могут содержать другие элементы управления содержимым группы или обычные текстовые абзацы или оба.Структура получившегося 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-коде, я попытался установить для свойства lock значения SdtBlocks значение unlocked.Я также попытался не использовать все свойство блокировки, но все с тем же результатом: если я пытаюсь отредактировать один из заголовков в абзацах, Word отображает ошибку «это изменение не разрешено, потому что выбор заблокирован».

Я что-то здесь не так делаю или как убедиться, что текст в абзацах можно редактировать?

Заранее спасибо.Ruben.

1 Ответ

2 голосов
/ 22 марта 2012

На случай, если кому-то это понадобится в будущем, я выяснил, кто виноват. Отсутствие w: group в свойствах sdt (sdtPr) решает эту проблему. Из документации: «Этот элемент указывает, что родительский структурированный тег документа должен быть ограниченной группой при отображении в документе». Так что это действительно имеет смысл, но это было трудно понять. Надеюсь, это сэкономит кому-то еще драгоценное время в будущем.

Ruben.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...