【问题标题】:External dtd validation error: XML Parsing Error外部 dtd 验证错误:XML 解析错误
【发布时间】:2016-11-09 20:46:03
【问题描述】:

我已经尝试了所有我能想到的来回和前进,我一遍又一遍地计算并重新计算了我的 lt 和 gt,但是这个外部 dtd 文件一直因以下消息而无效:“XML Parsing error @line 30 (the包含“]>”的最后一行):需要开始标记,未找到“

<?xml version="1.0"?>
<!DOCTYPE items 
[
<!ELEMENT items (item+)>
<!ELEMENT item     (description, country, sellingPrice, cost, quantityOnHand, 
                    backorderedAmount, dateLastReceived, quantitySoldYearToDate, 
                    warehouseSection, warehouseShelve, remarks, supplier, supplier+)>
<!ATTLIST item itemNumber ID #REQUIRED>     
<!ELEMENT description  (#PCDATA)>
<!ELEMENT country    (#PCDATA)>
<!ELEMENT sellingPrice      (#PCDATA)>
<!ATTLIST sellingPrice saleItem (Y|N) #REQUIRED>    
<!ELEMENT cost  (#PCDATA)>
<!ELEMENT quantityOnHand (#PCDATA)>
<!ELEMENT backorderedAmount (#PCDATA)>
<!ATTLIST backorderedAmount dateOrdered NMTOKEN #IMPLIED>   
<!ELEMENT dateLastReceived   (month, day, year)>
<!ELEMENT month  (#PCDATA)>
<!ELEMENT day  (#PCDATA)>
<!ELEMENT year  (#PCDATA)>
<!ELEMENT quantitySoldYearToDate    (#PCDATA)>
<!ELEMENT warehouseSection (#PCDATA)>
<!ELEMENT warehouseShelve     (#PCDATA)>
<!ELEMENT remarks     (#PCDATA)>
<!ELEMENT supplier       (number, shipmentLeadTime, supCost)>
<!ELEMENT number  (#PCDATA)>
<!ELEMENT shipmentLeadTime  (#PCDATA)>
<!ATTLIST shipmentLeadTime unit (days|weeks) #REQUIRED>
<!ELEMENT supCost  (#PCDATA)>
]>

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    既然这是一个外部 DTD,那么您的 XML 文件中是否还有一个引用该 DTD 的 DOCTYPE 声明?如果是这样,您需要从 DTD 中删除 doctype。

    这是一个尝试将其注释掉的示例:

    <!--<!DOCTYPE items [-->
    <!ELEMENT items (item+)>
    <!ELEMENT item     (description, country, sellingPrice, cost, quantityOnHand, 
                        backorderedAmount, dateLastReceived, quantitySoldYearToDate, 
                        warehouseSection, warehouseShelve, remarks, supplier, supplier+)>
    <!ATTLIST item itemNumber ID #REQUIRED>     
    <!ELEMENT description  (#PCDATA)>
    <!ELEMENT country    (#PCDATA)>
    <!ELEMENT sellingPrice      (#PCDATA)>
    <!ATTLIST sellingPrice saleItem (Y|N) #REQUIRED>    
    <!ELEMENT cost  (#PCDATA)>
    <!ELEMENT quantityOnHand (#PCDATA)>
    <!ELEMENT backorderedAmount (#PCDATA)>
    <!ATTLIST backorderedAmount dateOrdered NMTOKEN #IMPLIED>   
    <!ELEMENT dateLastReceived   (month, day, year)>
    <!ELEMENT month  (#PCDATA)>
    <!ELEMENT day  (#PCDATA)>
    <!ELEMENT year  (#PCDATA)>
    <!ELEMENT quantitySoldYearToDate    (#PCDATA)>
    <!ELEMENT warehouseSection (#PCDATA)>
    <!ELEMENT warehouseShelve     (#PCDATA)>
    <!ELEMENT remarks     (#PCDATA)>
    <!ELEMENT supplier       (number, shipmentLeadTime, supCost)>
    <!ELEMENT number  (#PCDATA)>
    <!ELEMENT shipmentLeadTime  (#PCDATA)>
    <!ATTLIST shipmentLeadTime unit (days|weeks) #REQUIRED>
    <!ELEMENT supCost  (#PCDATA)>
    <!--]>-->
    

    在这里也可以看到这个答案:External referenced DTD in XML

    如果这不能回答您的问题,请使用minimal, complete, and verifiable example 更新它。

    【讨论】:

    • 谢谢,丹尼尔,是的,我在我的 XML 文件中引用了它。当我删除第一行和最后一行(您已注释掉)时,我收到一条不同的错误消息“XML Parsing error @line 1: Extra content at the end of the document。”我准备好尖叫了!感谢您的帮助! (很多!)
    • @ecelizzy - 你能用 XML 和更新的 DTD 更新你的问题吗?
    • 原来问题出在验证器而不是程序上。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 2018-03-25
    • 2013-02-08
    • 2016-04-01
    相关资源
    最近更新 更多