diff --git a/Makefile b/Makefile
index 4a750bd6f61446f37ce66a4201e59135318203af..a2e52f1d4055fe50de7deb7f33730b30d19fced0 100644
--- a/Makefile
+++ b/Makefile
@@ -490,6 +490,13 @@ doc/core-en_US.xml: makeopts .lastclean $(XML_core_en_US)
 	@for x in $(MOD_SUBDIRS); do \
 		printf "$$x " ; \
 		for i in `find $$x -name '*.c'`; do \
+			MODULEINFO=$$($(AWK) -f build_tools/get_moduleinfo $$i) ; \
+			if [ -n "$$MODULEINFO" ] ; \
+			then \
+				echo "<module language=\"en_US\" name=\"`$(BASENAME) -s .c $$i`\">" >> $@ ; \
+				echo "$$MODULEINFO" >> $@ ; \
+				echo "</module>" >> $@ ; \
+			fi ; \
 			$(AWK) -f build_tools/get_documentation $$i >> $@ ; \
 		done ; \
 	done
diff --git a/apps/app_fax.c b/apps/app_fax.c
index d9b0a3586ff0305da52e2124c6b62fa0ac1fb937..2404773d0d10bfb07e8f665d07150f22a4ccda96 100644
--- a/apps/app_fax.c
+++ b/apps/app_fax.c
@@ -13,9 +13,9 @@
  */
 
 /*** MODULEINFO
-	<defaultenabled>no</defaultenabled>
 	<depend>spandsp</depend>
 	<conflict>res_fax</conflict>
+	<defaultenabled>no</defaultenabled>
 	<support_level>deprecated</support_level>
 	<replacement>res_fax</replacement>
 ***/
diff --git a/apps/app_speech_utils.c b/apps/app_speech_utils.c
index 2ba297e330fd77d9e7b4d2db6d3acbe9f069989b..9af8d2aee2455dbceb822ac64fa9ad79dbb7db4d 100644
--- a/apps/app_speech_utils.c
+++ b/apps/app_speech_utils.c
@@ -26,8 +26,8 @@
  */
 
 /*** MODULEINFO
-	<support_level>core</support_level>
 	<depend>res_speech</depend>
+	<support_level>core</support_level>
  ***/
 
 #include "asterisk.h"
diff --git a/cdr/cdr_syslog.c b/cdr/cdr_syslog.c
index 4f0a78ccb286ad7f506fe95e74e286ff55562e72..932d98f5f474008d9ef28148fd4c19fc255f3026 100644
--- a/cdr/cdr_syslog.c
+++ b/cdr/cdr_syslog.c
@@ -37,8 +37,8 @@
  */
 
 /*** MODULEINFO
-	<defaultenabled>no</defaultenabled>
 	<depend>syslog</depend>
+	<defaultenabled>no</defaultenabled>
 	<support_level>deprecated</support_level>
 ***/
 
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 8d5d689cad004e74892c05a6b7340ff97be4d0f3..2c7b67322dbda1865101fccdcfec2e77d117b33c 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -43,9 +43,9 @@
  */
 
 /*** MODULEINFO
-	<use type="module">res_smdi</use>
 	<depend>dahdi</depend>
 	<depend>tonezone</depend>
+	<use type="module">res_smdi</use>
 	<use type="external">pri</use>
 	<use type="external">ss7</use>
 	<use type="external">openr2</use>
diff --git a/codecs/codec_dahdi.c b/codecs/codec_dahdi.c
index 941bb1fb2515a4b2d6b85aad254181c1ace5ffcb..4494197876477157c02f72dc809ac646cc09ee33 100644
--- a/codecs/codec_dahdi.c
+++ b/codecs/codec_dahdi.c
@@ -27,8 +27,8 @@
  */
 
 /*** MODULEINFO
-	<support_level>core</support_level>
 	<depend>dahdi</depend>
+	<support_level>core</support_level>
  ***/
 
 #include "asterisk.h"
diff --git a/doc/appdocsxml.dtd b/doc/appdocsxml.dtd
index 7c7e606716189271aaab37d7a2ef4652854c1dca..cf3bc4ae79d377da827488d3ee6bb5a362c55e83 100644
--- a/doc/appdocsxml.dtd
+++ b/doc/appdocsxml.dtd
@@ -1,4 +1,4 @@
-  <!ELEMENT docs (application|function|agi|manager|managerEvent|info|configInfo)*>
+  <!ELEMENT docs (module|application|function|agi|manager|managerEvent|info|configInfo)*>
   <!ATTLIST docs xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude">
 
   <!ELEMENT xi:include (xi:fallback?) >
@@ -11,6 +11,24 @@
   accept	CDATA       #IMPLIED
   accept-language CDATA  #IMPLIED >
 
+  <!ELEMENT module (depend*,use*,conflict*,defaultenabled?,support_level?,replacement?)>
+  <!ATTLIST module name CDATA #REQUIRED>
+  <!ATTLIST module language CDATA #REQUIRED>
+
+  <!ELEMENT support_level (#PCDATA)>
+
+  <!ELEMENT depend (#PCDATA)>
+  <!ATTLIST depend type CDATA #IMPLIED>
+
+  <!ELEMENT defaultenabled (#PCDATA)>
+
+  <!ELEMENT replacement (#PCDATA)>
+
+  <!ELEMENT use (#PCDATA)>
+  <!ATTLIST use type CDATA #IMPLIED>
+
+  <!ELEMENT conflict (#PCDATA)>
+
   <!ELEMENT application (synopsis?,syntax?,description?,see-also?)>
   <!ATTLIST application name CDATA #REQUIRED>
   <!ATTLIST application language CDATA #REQUIRED>
diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c
index e38ff3e7aec53315b11fcf9204e17ae0f8fcdd98..6b90ee3b83f0b6367eb57bb2b78933ac4a948e80 100644
--- a/funcs/func_periodic_hook.c
+++ b/funcs/func_periodic_hook.c
@@ -26,11 +26,11 @@
  */
 
 /*** MODULEINFO
-	<support_level>core</support_level>
 	<depend>app_chanspy</depend>
 	<depend>func_cut</depend>
 	<depend>func_groupcount</depend>
 	<depend>func_uri</depend>
+	<support_level>core</support_level>
  ***/
 
 #include "asterisk.h"
diff --git a/funcs/func_pjsip_aor.c b/funcs/func_pjsip_aor.c
index 589f667afd01b2bdc3f25c58ea1ba39603b98233..9ae51ed87b3293550dd2645050899782eb5a8e8c 100644
--- a/funcs/func_pjsip_aor.c
+++ b/funcs/func_pjsip_aor.c
@@ -27,9 +27,9 @@
  */
 
 /*** MODULEINFO
-	<support_level>core</support_level>
 	<depend>pjproject</depend>
 	<depend>res_pjsip</depend>
+	<support_level>core</support_level>
  ***/
 
 #include "asterisk.h"
diff --git a/funcs/func_pjsip_contact.c b/funcs/func_pjsip_contact.c
index 9d4ba687696ed93c814780265c56f44ba33de608..44272e1a0c3599a1cd4e72e80df50160f3b92c63 100644
--- a/funcs/func_pjsip_contact.c
+++ b/funcs/func_pjsip_contact.c
@@ -27,9 +27,9 @@
  */
 
 /*** MODULEINFO
-	<support_level>core</support_level>
 	<depend>pjproject</depend>
 	<depend>res_pjsip</depend>
+	<support_level>core</support_level>
  ***/
 
 #include "asterisk.h"
diff --git a/funcs/func_pjsip_endpoint.c b/funcs/func_pjsip_endpoint.c
index e4a6abab36734c7fe13835504ae61b881e3d8be8..bc4f0dcb8061ec699f3a3fa3873b6a128e4c4585 100644
--- a/funcs/func_pjsip_endpoint.c
+++ b/funcs/func_pjsip_endpoint.c
@@ -27,9 +27,9 @@
  */
 
 /*** MODULEINFO
-	<support_level>core</support_level>
 	<depend>pjproject</depend>
 	<depend>res_pjsip</depend>
+	<support_level>core</support_level>
  ***/
 
 #include "asterisk.h"
diff --git a/res/res_remb_modifier.c b/res/res_remb_modifier.c
index bf56391dab82b7243cfe78fa6dde2839b58de407..7d50c798ff64f792a4602a78472963a52ca74c0f 100644
--- a/res/res_remb_modifier.c
+++ b/res/res_remb_modifier.c
@@ -25,8 +25,8 @@
  */
 
 /*** MODULEINFO
-	<support_level>extended</support_level>
 	<defaultenabled>no</defaultenabled>
+	<support_level>extended</support_level>
  ***/
 
 #include "asterisk.h"