1

下午好,我对 XMl 和 DTD 还很陌生,但同时我也很开心。我有一个简单的任务,我将其命名为“联系人”,但我很难让 DTD 进行验证。我当然错过了一些东西,希望能得到一些提示或帮助。代码在下方,错误在代码下方。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Contacts [
<!ELEMENT Contacts (XYZ, ABC, WIZ)>
<!ELEMENT XYZ (#PCDATA)>
<!ELEMENT ABC (#PCDATA)>
<!ELEMENT WIZ (#PCDATA)>
]>
<Contacts>
<XYZ>
"XYZ Inc.",
    "Jones","Barnaby"
    "bjones@xyz.com"
    "Owner-Operator"
    "402-410-2314"
    "8923 Holmes St"
    "Omaha","NE","68222","USA"
    "<div>Prospect</div>"
    "Business"
</XYZ>

<ABC>
"ABC International"
    "Magnum","Thomas"
    "tmagnum@abcint.biz"
    "Owner-Operator"
    "402-310-2222"
    "402-571-2893"
    "3204 Plains Ave"
    "Papillion","NE","68103","USA"
    "<div>Vendor</div>"
    "Business"
</ABC>

<Wiz>"Wiz Kids"
    "Plum","Steve"
    "steve@wizkids.com"
    "Sales Rep"
    "402-555-2325"
    "402-516-2038"
    "402-333-2428"
    "1234 Main St"
    "Belluvue","NE","68201","USA
    #http://wizkids.com#
    <div>Vendor</div>"
</Wiz>
</Contacts>

错误:

  1. 必须声明元素类型“div”
  2. 意外的元素“div”。父元素类型的内容必须匹配 (#PCDATA)。
  3. 必须声明元素类型“div”
  4. 意外的元素“div”。父元素类型的内容必须匹配 (#PCDATA)。
  5. 必须声明元素类型“Wiz”
  6. 必须声明元素类型“div”
  7. 意外元素“Wiz”。父元素类型的内容必须匹配 (XYZ,ABC,WIZ)。
4

1 回答 1

0

使用 CDATA 将内容包装在 xml 中,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Contacts [
<!ELEMENT Contacts (XYZ)>
<!ELEMENT XYZ (#PCDATA)>
]>
<Contacts>
<XYZ>
<![CDATA["XYZ Inc.",
    "Jones","Barnaby"
    "bjones@xyz.com"
    "Owner-Operator"
    "402-410-2314"
    "8923 Holmes St"
    "Omaha","NE","68222","USA"
    "<div>Prospect</div>"
    "Business"]]>
</XYZ>
</Contacts>

或者将 div 添加到元素定义中:

<!ELEMENT XYZ (#PCDATA|div)>

或者在 DTD 中定义“<”和“>”实体并在内容中使用它们而不是实际的“<”和“>”:

<!ENTITY lt "<">
<!ENTITY gt ">">
<XYZ>
&lt;Prospect&gt;
</XYZ>

请记住,XML 标记区分大小写,因此要么定义元素 Wiz,要么在内容中将其称为 WIZ。

另外,请查看本教程:http ://www.w3schools.com/dtd/default.asp

于 2012-10-03T23:11:34.257 回答