我正在尝试使用Oxygen XML Editor工具在DTD上验证XML文档 在我的代码结束时,会出现一条错误消息 E {XERCES} ENTITY" myent"没有解开。
有谁知道这个错误意味着什么,如果是这样,如何修复它以使其运行以便我可以验证XML?
参数已关闭,其示例如下所示。
<authentication board="myent"/>
非常感谢任何帮助!
答案 0 :(得分:3)
Xerces错误说的基本上是ENTITY&#34; myent&#34;未被声明为未解析的实体。
最有可能的情况(我猜测,因为您还没有提供DTD),属性board
被声明为类型ENTITY
。类型为ENTITY
的属性必须与DTD中声明的相应未解析实体的名称匹配。
属性类型ENTITY
有效性约束:
ENTITY类型的值必须匹配名称生成,类型的值 ENTITIES必须匹配名称;每个名字必须与一个名字相匹配 在DTD中声明的未解析实体。
spec中未解析实体的定义:
未解析的实体是其内容可能或的资源 可能不是文本,如果是文本,可能不是XML。每个未解析的 实体具有关联的符号,由名称标识。超越 要求XML处理器为实体制作标识符 和应用程序可用的符号,XML没有约束 关于未解析实体的内容。
这是board
属性被声明为类型ENTITY
而没有相应的未解析实体声明的示例:
<!DOCTYPE authentication [
<!ELEMENT authentication EMPTY>
<!ATTLIST authentication
board ENTITY #REQUIRED>
]>
<authentication board="myent"/>
以上示例将生成错误(使用下面的第一个示例直接从oXygen复制):
E [Xerces] ENTITY "myent" is not unparsed.
如果我们添加实体声明(和表示法(NDATA)声明;请参阅spec),XML现在有效:
<!DOCTYPE authentication [
<!ELEMENT authentication EMPTY>
<!ATTLIST authentication
board ENTITY #REQUIRED>
<!NOTATION bar SYSTEM "bar">
<!ENTITY myent SYSTEM "FOO" NDATA bar>
]>
<authentication board="myent"/>