为何Oxygen验证时不接受DTD文档的DOCTYPE元素?
问题根源
你遇到的报错是因为混淆了DTD文件本身的语法和XML文件中引入DTD的DOCTYPE语法规则,两种常见错误场景的修复方案如下:
场景1:你将代码保存为了.dtd后缀的DTD文件
DTD文件本身不需要XML声明,也不需要用<!DOCTYPE []>包裹,直接写元素、属性等声明即可。你给出的极简示例修改后应为:
<!ELEMENT test (#PCDATA)> <!ELEMENT vest (#PCDATA)>
你之前提到去掉<!DOCTYPE []>外层包裹后Oxygen不再报错,正是因为这才是DTD文件的正确写法。
场景2:你将代码保存为了.xml后缀的XML文件(使用内部DTD)
带内部DTD的XML文件除了声明和DOCTYPE定义,必须包含对应的根元素实例才符合XML良构要求,示例修改后应为:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE test [ <!ELEMENT test (#PCDATA)> <!ELEMENT vest (#PCDATA)> ]> <!-- 必须添加根元素内容 --> <test>你的文本内容</test>
适配语料库标注场景的推荐方案
你需要做独立的DTD作为统一标注标准的话,按场景1的规则编写独立的.dtd文件,所有待标注的XML文件在头部引入该外部DTD即可,引入语法如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 你的XML根元素名称 SYSTEM "你的DTD文件本地路径.dtd"> <!-- 后面跟你的XML标注内容 -->
内容的提问来源于stack exchange,提问作者Ingrid
相关产品推荐
相关产品推荐

