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