这个 dtd 语法有什么问题?

What's wrong with this dtd syntax?

我无法理解 - 为什么 xmllint 抱怨这个 dtd 语法,特别是 et_snote 行。 - 我在这里做错了什么?

<!ELEMENT et_snote (is_required?, (#PCDATA | vis? | ri?)*) >
<!ELEMENT is_required ( #PCDATA ) >

我收到这个错误:

schema.dtd:166: parser error : expected '>'
<!ELEMENT et_snote (is_required?, ( #PCDATA | vis? | ri? )+) >

这是命令我运行:

xmllint --noout --nowarning --nonet --dtdvalid schema.dtd my.xml

您已将 et_snote 的类型声明为元素内容,根据定义 cannot have character data,删除 #PCDATA 或将类型更改为混合内容。