如何在DITA中的任务中显示代码

时间:2016-06-01 12:32:40

标签: xml dita

以下xml片段使用Oxygen XML Editor从Xerces引擎产生以下错误:

  

意外的元素“codeblock”。父元素类型的内容   必须匹配   “(DL |格| lcInteractionBase2 | lcTrueFalse2 | lcSingleSelect2 | lcMultipleSelect2 | lcSequencing2 | lcMatching2 | lcHotspot2 | lcOpenQuestion2 |图|图​​像映射| lcInteractionBase | lcTrueFalse | lcSingleSelect | lcMultipleSelect | lcSequencing | lcMatching | lcHotspot | lcOpenQuestion |图片|线| LQ |记| lcInstructornote | lcInstructornote2 |对象|醇| p |预| simpletable | SL |表| UL |布尔|举|关键字| ph值| b | I |线通|划线| SUP |子| TT | U | q |术语|文| TM |外部参照|状态|数据|排序作为|数据约|国外|未知|选秀评论| FN | indextermref | indexterm |。需要,清理)”

<?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中(如错误所示?)但它也不起作用。

3 个答案:

答案 0 :(得分:2)

似乎DITA 1.2和DITA 1.3学习域DTD都不包含编程域模块,因此不允许在&#34; learningContent&#34;中的任何地方使用代码块。所以Oxygen在报告验证错误时只是遵循规范。例如,如果你看一下DITA任务的shell DTD:&#34; DITA-OT \ dtd \ technicalContent \ dtd \ task.dtd&#34;它引用了编程域(包含像codeblock或codeph这样的元素),但是学习shell DTD&#34; DITA-OT2.x \ plugins \ org.oasis-open.dita.v1_3 \ dtd \ learning \ dtd \ learningContent。 DT d&#34;才不是。 因此,您可能需要学习和培训dtd专业化,这也增加了programmind域。

答案 1 :(得分:1)

根据规范,这应该是正确的。您没有提到您正在使用的oXygen版本。您可以尝试将代码块包装在P元素中,但我感觉错误是由嵌入在learningContent主题中的任务引起的。可能是那组专业化不包括那样的代码块。

答案 2 :(得分:1)

此示例在XMetal 11中也不起作用(也在Oxygen 17.0中测试),因为它不遵循DTD(如Radu Coravu所说)。