Как я могу показать код внутри задачи в DITA

Следующий фрагмент xml выдает следующую ошибку от механизма Xerces, использующего Oxygen XML Editor:

Неожиданный элемент "codeblock". Содержимое типа родительского элемента должно соответствовать "(dl|div|lcInteractionBase2|lcTrueFalse2|lcSingleSelect2|lcMultipleSelect2|lcSequencing2|lcMatching2|lcHotspot2|lcOpenQuestion2|fig|imagemap|lcInteractionBase|lcTrueFalse|lcSingleSelect|lcMultipleSelect|lcSequencing|lcMultipleSelect|lcSequencing| |изображение|линии|lq|примечание|lcInstructornote|lcInstructornote2|объект|ol|p|pre|simpletable|sl|таблица|ul|boolean|цитировать|ключевое слово|ph|b|i|через строку|над чертой|sup|sub |tt|u|q|термин|текст|tm|внешняя ссылка|состояние|данные|сортировка|данные-о|иностранные|неизвестные|черновик-комментарий|fn|indextermref|индекстерм|требуемая-очистка)".

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE learningContent PUBLIC "-//OASIS//DTD DITA Learning Content//EN" "learningContent.dtd">
<learningContent id="oc4j_learning_task1">
    <title>Task 1</title>
    <shortdesc></shortdesc>
    <learningContentbody></learningContentbody>
    <task id="oc4j_task1">
        <title>Task 1</title>
        <shortdesc/>
        <taskbody>
            <context>
                <p><b>Requirements</b></p>
            </context>
            <steps>
                <step>
                    <cmd>Login with sftp in the production server</cmd>
                </step>
                <step>
                    <cmd>Download the whole directory OC4J10 in your local directory</cmd>
                </step>
                <step>
                    <cmd>Make sure the system is using the same JDK (currently 1.6.0_45) from Oracle</cmd>
                </step>
                <step>
                    <cmd>Change the following files in /OC4J10/j2ee/home/config</cmd>
                    <substeps id="substeps_vty_xh4_dw">
                        <substep>
                            <cmd>application.xml</cmd>
                            <info>the file should point to the WAR (or expanded) files in your local
                                machine where the application modules are located as in following
                                example:
                                <codeblock>foo
                                </codeblock>
                            </info>
                        </substep>
                    </substeps>
                </step>
            </steps>
        </taskbody>
    </task>
</learningContent>

Я попытался поместить родительский элемент как div (как предполагает ошибка?), но он тоже не работает.


person arisalexis    schedule 01.06.2016    source источник
comment
Похоже, что DTD домена обучения DITA 1.2 и DITA 1.3 не включают модуль домена программирования, поэтому кодовый блок не разрешен нигде в LearningContent. Таким образом, Oxygen просто следует спецификациям, когда сообщает об ошибке проверки. Так, например, если вы посмотрите на DTD оболочки для задачи DITA: DITA-OT\dtd\technicalContent\dtd\task.dtd, она ссылается внутри области программирования (которая включает такие элементы, как блок кода или codeph), но DTD обучающей оболочки DITA- OT2.x\plugins\org.oasis-open.dita.v1_3\dtd\learning\dtd\learningContent.dtd — нет.   -  person Radu Coravu    schedule 02.06.2016
comment
хорошо, вы можете поставить это как ответ :)   -  person arisalexis    schedule 02.06.2016


Ответы (3)


Похоже, что DTD домена обучения DITA 1.2 и DITA 1.3 не включают модуль домена программирования, поэтому кодовый блок не разрешен нигде в «learningContent». Таким образом, Oxygen просто следует спецификациям, когда сообщает об ошибке проверки. Так, например, если вы посмотрите на DTD оболочки для задачи DITA: «DITA-OT\dtd\technicalContent\dtd\task.dtd», он ссылается внутри домена программирования (который включает такие элементы, как codeblock или codeph), но DTD обучающей оболочки «DITA-OT2.x\plugins\org.oasis-open.dita.v1_3\dtd\learning\dtd\learningContent.dt‌​d» — нет. Таким образом, вам, вероятно, понадобится специализация обучения и обучения dtd, которая также добавляет область программирования.

person Radu Coravu    schedule 06.06.2016

Согласно спецификации, это должно быть правильно. Вы не указываете, какую версию oXygen вы используете. Вы можете попробовать обернуть кодовый блок в элемент P, но у меня такое ощущение, что ошибка вызвана тем, что задача встроена в тему LearningContent. Возможно, набор специализаций не включает кодовый блок таким образом.

person JulioV    schedule 01.06.2016
comment
в моем понимании да, это должно быть правильно. Я использую редактор последней версии Oxygen. Я пробовал заключать в p или другие элементы, такие как div. Странно то, что задача при нахождении в отдельном файле со своим типом документа не выдает этой ошибки... - person arisalexis; 01.06.2016

Этот пример также не работает в XMetal 11 (протестирован также в Oxygen 17.0), потому что он не соответствует DTD (как сказал Раду Кораву).

person barbwire    schedule 02.06.2016