【问题标题】:Why is the external DTD not validating to the XML file?为什么外部 DTD 不验证 XML 文件?
【发布时间】:2019-03-26 16:59:18
【问题描述】:

我需要外部 DTD 来验证 XML 文件和“选择”“电话”和“电话”一直出现错误。我知道这与我的元素顺序有关,但我无法弄清楚。

我编辑了。元素电话和电话,我相信它现在正在验证中

DTD

     [
        <!ELEMENT smartphones (choices+)>

        <!ELEMENT choices (phones,phone,name,company,price,storage,description)>
        <!ATTLIST choices phones NMTOKENS #REQUIRED>

    <!ELEMENT phones (phone)>
    <!ATTLIST phones CDATA #REQUIRED>

    <!ELEMENT phone (name,company,price,storage,description)>
    <!ATTLIST phone NMTOKENS #REQUIRED>

        <!ELEMENT name (#PCDATA)>

        <!ELEMENT company (#PCDATA)>

        <!ELEMENT price (#PCDATA)>

        <!ELEMENT storage (#PCDATA)>

        <!ELEMENT description (#PCDATA)>

        ]>

<!-- XML -->
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

<!DOCTYPE smartphones SYSTEM "Vocab1DTD.dtd">

<smartphones>

<choices>Smart Phones

   <phones>
      <phone>
         <name> </name>
         <company> </company>
         <price> </price>
         <storage> </storage>
         <description> </description>
      </phone>

  </phones>
</choices>
</smartphones>

【问题讨论】:

  • 实际错误会有所帮助,但我猜它是 DTD 文件中的 []&gt;。删除这些并重试。如果这不起作用,请添加您遇到的错误。
  • 没关系。我现在看到还有很多问题。哪个是对的? DTD 还是 XML?
  • XML 是正确的,DTD 是我遇到的问题
  • 我的回答有帮助还是您还有问题?

标签: xml validation dtd


【解决方案1】:

这是一个更新的 DTD,可以按原样与您的 XML 一起使用。

关于 XML 的小评论:在 choices 中将“Smart Phones”作为文本并没有多大意义;这可以通过choicessmartphones 的孩子来推断。此外,choicesphones 似乎是多余的;两者兼有的目的是什么?

如果您对我所做的更改有任何疑问,请告诉我。

Vocab1DTD.dtd

<!ELEMENT smartphones (choices+)>
<!ELEMENT choices (#PCDATA|phones)*>
<!ELEMENT phones (phone+)>
<!ELEMENT phone (name,company,price,storage,description)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT storage (#PCDATA)>
<!ELEMENT description (#PCDATA)>

【讨论】:

    猜你喜欢
    • 2016-04-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2014-04-18
    • 2010-11-13
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多