0

我的 XML-DTD 未能验证此代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE init[
<!ELEMENT init(a)>
<!ELEMENT a(b,c,(d|e))>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
<!ELEMENT e (#PCDATA)>
]>
<init>
<a>
dolor
<b> Lorem </b>
dolor
<c> Ipsum </c>
<d> hi </d>
dolor
</a>
</init>

如何通过 DTD 验证中间文本?

PD:对不起,我编辑了问题——我的问题没有解决。

PD2:我用它来验证 dtd-html:http: //validator.w3.org/check

4

1 回答 1

1

我看到了几件事:

  1. 您需要在元素名称和内容模型(左括号)之间添加空格。
  2. 您需要声明a混合内容模型。

例子...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE init [
<!ELEMENT init (a)>
<!ELEMENT a (#PCDATA|b|c)*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<init>
    <a>
        dolor
        <b> Lorem </b>
        dolor
        <c> Ipsum </c>
        dolor
    </a>
</init>

示例 #2...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE init [
<!ELEMENT init (a)>
<!ELEMENT a (#PCDATA|b|c|d|e)*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
<!ELEMENT e (#PCDATA)>
]>
<init>
    <a>
        dolor
        <b> Lorem </b>
        dolor
        <c> Ipsum </c>
        <d> hi </d>
        dolor
    </a>
</init>
于 2014-12-01T17:18:39.523 回答