我需要一个DTD其允许元素A为具有0,1或2子元素B.我与DTD:0,1或2个元素
<!ELEMENT A (B? |(B,B))>
尝试过,但然后我得到一个错误:
validity error : Content model of A is not determinist
这是什么问题,我该如何解决它?或者不可能用DTD解决它?
我需要一个DTD其允许元素A为具有0,1或2子元素B.我与DTD:0,1或2个元素
<!ELEMENT A (B? |(B,B))>
尝试过,但然后我得到一个错误:
validity error : Content model of A is not determinist
这是什么问题,我该如何解决它?或者不可能用DTD解决它?
内容模型,如
(B? |(B,B))
或
(B?, B?)
或
(B? | (B,B) | B)
是非确定性的;解析器无法分辨哪个B
正在被匹配,而没有展望后面的内容。
XML 1.0建议中不允许使用非确定性内容模型:http://www.w3.org/TR/xml/#determinism。但是,确定性要求与SGML兼容。我想,这可能解释XML解析器之间的行为差异帮助:
参见:<!(?B1,B2)ELEMENT A>What is the reason for not allowing non-deterministic element declarations in DTDs and XSD schemas?
试试这个DTD,从而获得所需XML:
<!ELEMENT A ((B?|(B,B)|B))>
<!ELEMENT B (#PCDATA)>
同样的错误 – SPie 2013-05-02 17:04:06
试试这个 – IndoKnight 2013-04-30 15:26:41
这是我的第一个解决方案,但同样的错误再次 – SPie 2013-05-02 00:43:22