title: What is the reason for not allowing non-deterministic element declarations in DTDs and XSD schemas?
body: <p>The following declaration:</p>
  
  <p><code>&lt;!ELEMENT p ((b, a) | (b, c))&gt;</code></p>
  
  <p>and its XSD equivalent are both invalid because they are not deterministic, according to validators and a quick check of the spec(s). However, since every non-deterministic finite automaton has an equivalent deterministic finite automaton and since there are algorithms for converting NFAs into DFAs, what is the reason for prohibiting non-deterministic declarations?</p>