【问题标题】:Error in XML having inline DTD具有内联 DTD 的 XML 中的错误
【发布时间】:2014-05-20 02:24:19
【问题描述】:

我在 XML 文件中有内联 DTD。当我验证时,我得到错误

文档类型中包含或指向的标记声明 声明必须格式正确。

 <?xml version='1.0' encoding='ISO-8859-1'?>
 <!DOCTYPE MESSAGE [ 
 <!ELEMENT MESSAGE (USER,SMS+)>
 <!ELEMENT USER EMPTY>
 <!ELEMENT SMS (ADDRESS)>
 <!ELEMENT ADDRESS EMPTY>
 <!ATTLIST MESSAGE  VER CDATA #REQUIRED>
 <!ATTLIST USER USERNAME CDATA #REQUIRED>
 <!ATTLIST USER PASSWORD CDATA #REQUIRED>
 <!ATTLIST SMS TEXT CDATA  #REQUIRED>
 <!ATTLIST SMS ID CDATA  #REQUIRED>
 <!ATTLIST ADDRESS FROM CDATA #REQUIRED>
 <!ATTLIST ADDRESS TO CDATA #REQUIRED>
 <!ATTLIST ADDRESS SEQ CDATA #REQUIRED>
 ]>
<MESSAGE VER='1.2' ><USER USERNAME='username' PASSWORD='password'/>
<SMS TEXT='message Text' ID='1'>
<ADDRESS FROM='32323233' TO='21212445455' SEQ='11'/>
</SMS><SMS TEXT='Text' ID='2'>
<ADDRESS FROM='text1111111111' TO='9090909090' SEQ='2' />
</SMS> </MESSAGE>

【问题讨论】:

  • 您使用什么来验证您的 XML?只要在&lt;?xml 声明之前没有任何空格(包括换行符),它对我来说就很好。 (通过 oXygen 中的 Xerces 验证。)

标签: xml dtd


【解决方案1】:

这可能是由于 ?xml 之间以及 ?> 之间的额外空格造成的。

【讨论】:

    【解决方案2】:

    据我所知,您报告错误消息的最可能原因是您在 XML 声明之前有空格(空白)。删除它,以便解析器首先在文件中看到 XML 声明。

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 2011-05-11
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      相关资源
      最近更新 更多