There are 2 ways to force DotNetNuke to use an XHTML doctype:
A. You can set the doctype for a specific skin by including a doctype.xml file.
The name of this file should be: "skinname".doctype.xml.
So of every HTML / ASCX file you will have to add an XML file.
The content of this file should be:
<SkinDocType>
<![CDATA[<!DOCTYPE>]]>
</SkinDocType>
The <!DOCTYPE> part should be replaced with the HTML doctype.
XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
B. You can set the Fallback doctype from the host settings.
Choose Host > Host Settings and select the doctype under “Fallback Skin doctype”.
This will force all skins on all portals without a doctype.xml file to use the doctype you set.
Please beware that this could potentially lead to unwanted effects if there are non XHTML skins in other portals then the one you are targeting.
Xml Namespace for XHTML skins
If you use an XHTML doctype, the Xml Namespace will be added automatically to the HTML element by the Framework. (Result: <html xmlns="http://www.w3.org/1999/xhtml" >)