Xerces C++ DTD 验证总是失败
我正在尝试使用 Xerces C++ 通过外部 DTD 文件验证某些 XML。不幸的是,验证在不应该失败的时候失败了,我收到错误消息“XmlErrorHandler:第 3 行第 11 列处的 XML 错误:未知元素‘c’”。
我正在尝试
<?xml version="1.0" encoding="UTF-8"?>
<c>
<p>
<r>...</r>
<g>...</g>
<b>...</b>
</p>
<s>
<r>...</r>
<g>...</g>
<b>...</b>
</s>
<t>
<r>...</r>
<g>...</g>
<b>...</b>
</t>
<l0>...</l0>
<l1>...</l1>
<l2>...</l2>
</c>
使用以下 DTD(位于 C:\mydtd.dtd)验证以下 XML:
<!ELEMENT c (p, s, t, l0, l1, l2)>
<!ELEMENT p (r, g, b)>
<!ELEMENT s (r, g, b)>
<!ELEMENT t (r, g, b)>
<!ELEMENT r (#CDATA)>
<!ELEMENT g (#CDATA)>
<!ELEMENT b (#CDATA)>
<!ELEMENT l0 (#CDATA)>
<!ELEMENT l1 (#CDATA)>
<!ELEMENT l2 (#CDATA)>
这是加载解析器的代码:
m_pkXmlParser = XMLReaderFactory::createXMLReader();
m_pkXmlParser->loadGrammar("C:\\mydtd.dtd", Grammar::DTDGrammarType);
m_pkXmlParseHandler = new XmlParseHandler;
m_pkXmlErrorHandler = new XmlErrorHandler;
m_pkEntityResolver = new XmlEntityResolver;
m_pkXmlParser->setContentHandler(m_pkXmlParseHandler);
m_pkXmlParser->setErrorHandler(m_pkXmlErrorHandler);
m_pkXmlParser->setEntityResolver(m_pkEntityResolver);
非常感谢您提供验证失败的任何帮助。
I am trying to validate some XML with an external DTD file using Xerces C++. Unfortunately, the validation fails when it shouldn't, I get the error message "XmlErrorHandler : XML error in line 3 at column 11: Unknown element 'c'".
I am trying to validate the following XML
<?xml version="1.0" encoding="UTF-8"?>
<c>
<p>
<r>...</r>
<g>...</g>
<b>...</b>
</p>
<s>
<r>...</r>
<g>...</g>
<b>...</b>
</s>
<t>
<r>...</r>
<g>...</g>
<b>...</b>
</t>
<l0>...</l0>
<l1>...</l1>
<l2>...</l2>
</c>
with the following DTD (located at C:\mydtd.dtd):
<!ELEMENT c (p, s, t, l0, l1, l2)>
<!ELEMENT p (r, g, b)>
<!ELEMENT s (r, g, b)>
<!ELEMENT t (r, g, b)>
<!ELEMENT r (#CDATA)>
<!ELEMENT g (#CDATA)>
<!ELEMENT b (#CDATA)>
<!ELEMENT l0 (#CDATA)>
<!ELEMENT l1 (#CDATA)>
<!ELEMENT l2 (#CDATA)>
This is the code where the parser is loaded:
m_pkXmlParser = XMLReaderFactory::createXMLReader();
m_pkXmlParser->loadGrammar("C:\\mydtd.dtd", Grammar::DTDGrammarType);
m_pkXmlParseHandler = new XmlParseHandler;
m_pkXmlErrorHandler = new XmlErrorHandler;
m_pkEntityResolver = new XmlEntityResolver;
m_pkXmlParser->setContentHandler(m_pkXmlParseHandler);
m_pkXmlParser->setErrorHandler(m_pkXmlErrorHandler);
m_pkXmlParser->setEntityResolver(m_pkEntityResolver);
Any help why the validation fails is greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论