Yes, struts-config.xml invalid according to the schema, but as the application works, this is only a validation problem. To find out why this is unacceptable in the context of the order of the children - if the validator tells you that ...
The content of the struts-config element type must match "(Data source ?, Form-beans ?, global-forward ?, action-mapping?")
... then this means, for example, (abridged examples for brevity):
<struts-config> <datasource>...</datasource> <form-beans>...</form-beans> <global-forwards>...</global-forwards> <action-mapping>...</action-mapping> </struts-config>
... is a valid implementation of the circuit, while, for example, ...
<struts-config> <datasource>...</datasource> <global-forwards>...</global-forwards> <form-beans>...</form-beans> <action-mapping>...</action-mapping> </struts-config>
... no. This, by the way, is due to the fact that Struts 1.0 DTD in the question says ...
<!ELEMENT struts-config (data-sources?,form-beans?,global-forwards?,action-mappings?)>
... and thus requires a certain order of children. This is not something that DTD authors do unintentionally, but because:
Declaring unordered lists with restrictions on appearance in DTDs will often lead to long or complex looking applications. 1