DTD requiere elementos de pedido

Quiero tener una lista de elementos necesarios en cualquier orden definido en dtd, pero no tengo idea de cómo podría hacer esto.

Por ejemplo, tengo la siguiente definición:

<!ELEMENT parent (child1, child2, child3)>

Esta declaración dtd validará con éxito la siguiente pieza de xml:

<parent>
   <child1></child1>
   <child2></child2>
   <child3></child3>
</parent>

Pero en el siguiente caso, xml no pasará la validación:

<parent>
   <child2></child2>
   <child1></child1>
   <child3></child3>
</parent>

Una de las posibles soluciones es declarar

<!ELEMENT parent (child1 | child2 | child3)>

Pero en este caso, podría faltar uno de los niños, aunque la validación será exitosa.

Necesito una correcta declaración de elemento dtd para el caso cuando la lista de elementos requeridos puede estar presente en cualquier orden.

Respuestas a la pregunta(4)

Su respuesta a la pregunta