在XML中将属性类型声明为实体时的验证错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在XML中将属性类型声明为实体时的验证错误相关的知识,希望对你有一定的参考价值。

这是我的DTD文件。

?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v3.0.7 NT (http://www.xmlspy.com) by Manukyan (YSU) -->
<!ENTITY xxx "ccc">
<!ENTITY yyy "ddd">
<!ELEMENT book (author+, title, publisher)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ATTLIST title
    aaa ENTITY  #IMPLIED
>

这里是相应的DSD文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "C:UsersPCDesktopXMLXMLDBXMLBOOK.DTD">
<book>
    <author>asd</author>
    <title aaa="xxx"/>
    <publisher/>
</book>

我得到了一个验证错误。属性'aaa'的值部分'xxx'必须是未解析实体的名称。

答案

作为@Daniel Haley explains in his answer的类似问题,如果你为ccc添加实体声明和符号(NDATA)声明,那么XML现在是有效的:

<!DOCTYPE book [

<!NOTATION ccc SYSTEM "ccc">
<!ENTITY xxx SYSTEM "ccc" NDATA ccc>

<!ENTITY yyy "ddd">
<!ELEMENT book (author+, title, publisher)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ATTLIST title aaa ENTITY  #IMPLIED>
]>
<book>
    <author>asd</author>
    <title aaa="xxx"/>
    <publisher/>
</book>

以上是关于在XML中将属性类型声明为实体时的验证错误的主要内容,如果未能解决你的问题,请参考以下文章

在MATLAB中将XML内容解析为正确的数据类型时出现问题

在实体框架中将对象类型属性映射到 varbinary(MAX)

在 Python 中将 XML/HTML 实体转换为 Unicode 字符串 [重复]

在 Python 中将 XML/HTML 实体转换为 Unicode 字符串 [重复]

XML XSD 验证中的全局声明错误

错误 1 “object”不包含“Text”的定义,并且找不到可接受类型为“object”的第一