【问题标题】:Beginner issues with DTD referencesDTD 引用的初学者问题
【发布时间】:2012-10-05 01:21:08
【问题描述】:

下午好,我对 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)。

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    使用 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

    【讨论】:

    • 这实际上有帮助,但是,当我添加“Vendor
      ]]>”时,它会出错并显示“包含或指向的标记声明文档类型声明必须格式正确。​tacts [ 供应商
      ]]>
  • 您不能将元素声明为“作为 CDATA”。 &lt;!ELEMENT XYZ (#CDATA)&gt; 是语法错误。 CDATA section 是您只需使用的东西;您没有为此在 DTD 中声明任何内容。
  • 在 DTD 中声明 gtlt 实体是没有意义的。他们是predefined
  • 猜你喜欢
    • 2020-12-06
    • 2020-01-04
    • 2020-11-23
    • 2015-03-16
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多