我需要一个允许元素A包含0,1或2个子元素B的DTD。我尝试了
<!ELEMENT A (B? |(B,B))>
然后我收到一个错误:
validity error : Content model of A is not determinist
问题是什么,我该如何解决?或者用DTD解决它?
答案 0 :(得分:1)
内容模型,例如
(B? |(B,B))
或
(B?, B?)
或
(B? | (B,B) | B)
是非确定性的;如果没有展望未来,解析器无法分辨哪个B
正在匹配。
XML 1.0建议中不允许使用非确定性内容模型:http://www.w3.org/TR/xml/#determinism。但是,确定性要求是为了与SGML兼容。我想这可能有助于解释XML解析器之间的行为差异:
另请参阅:What is the reason for not allowing non-deterministic element declarations in DTDs and XSD schemas?
答案 1 :(得分:0)
尝试使用此DTD获取所需的XML:
<!ELEMENT A ((B?|(B,B)|B))>
<!ELEMENT B (#PCDATA)>