As ADML services loader is retrieving stacks and then nodes,
there is no need to fix strict order for those elements.
Dtd must be relaxed to accept nodes and then stacks.
This is necessary because some json to xml converters could
add xml elements in alphabetical order (and then, stacks is
after node).
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
<!-- Diameter services DTD -->\n\
\n\
-<!ELEMENT services (stack*, node*)>\n\
+<!ELEMENT services ((stack*, node*)|(node*, stack*))>\n\
\n\
<!ELEMENT stack EMPTY>\n\
<!ATTLIST stack id CDATA #REQUIRED dictionary CDATA #REQUIRED validationMode (BeforeEncoding | AfterDecoding | Always | Never) #IMPLIED validationDepth (Complete | FirstError) #IMPLIED fixMode (BeforeEncoding | AfterDecoding | Always | Never) #IMPLIED ignoreFlagsOnValidation (yes | no) #IMPLIED>\n\
<?xml version="1.0" encoding="UTF-8"?>
<!-- Diameter services DTD -->
-<!ELEMENT services (stack*, node*)>
+<!ELEMENT services ((stack*, node*)|(node*, stack*))>
<!ELEMENT stack EMPTY>
<!ATTLIST stack id CDATA #REQUIRED dictionary CDATA #REQUIRED validationMode (BeforeEncoding | AfterDecoding | Always | Never) #IMPLIED validationDepth (Complete | FirstError) #IMPLIED fixMode (BeforeEncoding | AfterDecoding | Always | Never) #IMPLIED ignoreFlagsOnValidation (yes | no) #IMPLIED>