加载带有无效字符“”的DTD-&”;

本文关键字:DTD- 无效 字符 加载 | 更新日期: 2023-09-27 17:53:31

我想加载并读取一个DTD文件,其中的内容我无法控制。这些DTD文件包含字符为"-"的行:

<!ELEMENT Test ITD-O(警告(>

所以下面的代码在的"-"位置失败

XmlReaderSettings settings = new XmlReaderSettings();
settings.CheckCharacters = false;
settings.DtdProcessing = DtdProcessing.Parse;
XmlReader reader = XmlReader.Create(strURL, settings);
XDocument xml = XDocument.Load(reader);

是否可以读取带有非法字符的DTD?

加载带有无效字符“”的DTD-&”;

您的DTD似乎是为处理SGML而不是XML的系统设计的。很难说您应该对此做些什么,但XML库拒绝DTD也就不足为奇了。

该元素声明的- O部分<!ELEMENT Test-ITD - O (warning) >提供了"最小化参数"。这意味着可以省略元素的结束标签。这是一个在SGML中可用但在XML中不可用的功能。

评论中提到了第二个有问题的元素声明:

<!ELEMENT emphasis (#PCDATA | quantity | indexFlag | emphasis | subScript | superScript | captionGroup)+ >

由于"混合内容"的限制,此构造不起作用。不能使用+量词;仅允许CCD_ 4。

参考文献:

  • http://www.w3.org/TR/NOTE-sgml-xml
  • http://www.tei-c.org/Vault/ML/mlw01.htm#ID1