DNN Blog

Aug 2

Posted by: Timo Breumelhof
Saturday, August 02, 2008  RssIcon

As Cathal posted before, a lot has been done to get core DNN XHTML (transitional) compliant.
For now we focussed on the public side of DNN, the next step will be to get the admin side XHTML compliant too.
I noticed that with the corrections on the public side, the admin side has become much more compliant already

Why XHTML
Here's why I think XHTML is important for DNN

1. XHTML pages are a good step towards more accessible pages (the alt attribute for "img" tags is mandatory for instance)
2. That's why in a lot of countries government / public service websites must be XHTML compliant.
3. XHTML is cleaner, content and style are (in general) better separated.
4. The XHTML doctype makes skinning a lot easier since it avoids some important IE style bugs.
(don't worry there are plenty left even with an XHTML doctype ;-)
5. If the core is XHTML compliant this makes it easier to "debug" (ascx) skins. A lot of cross browser problems are caused by HTML errors.
Finding a HTML error in the skin is easy if your HTML validator shows 2 errors instead of a 55 + 2
6. XHTML is the future, HTML 4 transitional is history (just like classic ASP ;-)

Modules and XHTML
We started testing the modules for XHTML compliance  in December 2007, as part of the release process (for now only the public side). We did not fail any modules though, if they where not XHTML compliant.
This will change from now on. Modules that enter the release tracker have to be XHTML compliant to pass (except for minor bug fixes).
I think this is a step forward towards full XHTML compliancy, for core and core modules.
(and yes, the new skin for DNN 5 is XHTML compliant)

Third party Modules / Skins
The XHTML status of a lot of third party DNN products is a bit like the situation for the core about a year ago (there are exceptions).
I noticed that the number of commisions with mandatory XHTML compliancy is increasing, which means XHTML compliance is becoming one of the a selection criteria.

XHTML Compliant skins
As Cathal mentioned the default doctype in DNN 5.0 will be XHTML transitional, this means people will expect a skin to be XHTML compliant too, or at least render correctly. The majority of the third party skins is not XHTML compliant.
If you don't make your skins XHTML compliant you will sell less skins in the future.

I would like to encourage  all "non core" module developers and skinners to move forward and also make their products XHTML compliant.

How to Change to XHTML
Here are some tips:

XHTML warnings in VS
A lot of errors can be avoided by using the validation options in Visual Studio. VS will warn you for invalid (X)HTML

Testing your pages
The VS option only works for static HTML, so You will have to test the module / skin on the actual page too.
You can use the W3C validator for this.
But I prefer the "Html Validator" extension for Firefox (I use it for the XHTML tests)
It integrates with FFs "Source view".
Use:
Install the extension.
Choose Tools > Html Validator option" and set
- Algorithm to "Serial"
- Enable validation in Browser, this will show an Error icon in the browser (right bottom) if there are errors.
Double-clicking the icon will open the source view, showing the errors / warnings.
If you double-click an error it shows the offending HTML in the top pane of the source view window.

Most Common XHTML problems
Here's a list of the problems I see most during the XHTML tests:

-All tags should be closed
Wrong: <br>
<hr>
<img src="test.gif" alt="test">
Correct: <br />
<hr />
<img src="test.gif" alt="test" />

-All attributes should be in lowercase
Wrong: <div Class="test">
<div onClick="myfunction">
Correct: <div class="test">
<div onclick="myfunction">

-All Attribute values should be quoted:
Wrong: <td colspan=2>
Correct: <td colspan="2">

-No alt attribute defined for images
Wrong: <img src="test.gif" />
Correct: <img src="test.gif" alt="test image" />

-Deprecated tags: Wrong: <center></center>
Correct: <div class="DNNAligncenter"></div>

-Block elements inside inline elements:
Wrong: <span><div>test</div></span>
Correct: <div><div>test</div></div>
This is often caused by the use of the label control, use the literal control instead (with a div). If you have to add a block element inside an inline element, use an inline element and set its CSS to display:block, the result is the same and it will validate. Please note that a <p> element can not contain any block element either so use divs.

-Script tags without type="text/Javascript"
Wrong: <script src="myscript.js" language="javascript"></script>
Correct: <script src="myscript.js" type="text/javascript"></script>

- Links to external CSS stylesheet inside the body of the page
A Link to an external stylesheet must be in the <head> of the page to be compliant
For modules, move all this CSS to module.css, if it's dynamic CSS, write it in the head of the page.
Skins should have all CSS in either in skin.css of "skinname".css

Tags:
Categories:

14 comment(s) so far...


Re: DNN & XHTML

Great Tutorial Timo, however i have a great headache with XHTML skins, all skins that uses DIV's surrounding panes, does not let me add modules in a page if i am using Turkish locale, there is no problem with default en-US locale.

Could you please check DNNP-8086 and comment on the issue?
http://support.dotnetnuke.com/issue/ViewIssue.aspx?id=8086&PROJID=23

Thanks.

By greenflash on   Sunday, August 03, 2008

Re: DNN & XHTML

Interesting blog.

I am interested to see if our clients are aware of XHTML compliance, so if there is a *real* need outside. I will put this in the list of questions to ask them in the next couple of weeks.

By ept on   Sunday, August 03, 2008

Re: DNN & XHTML

WOW. I love to see DNN finely going XHTML compliant. This will broaden the respect for the platform even further. :)

By ArntK on   Sunday, August 03, 2008

Re: DNN & XHTML

well, at times you have to define Css Link, in the skin file, that you place in the Skin folder, in order that the skin file uses this css file, you have to add the link in body. How do you avoid that ?

By IndianGuru on   Sunday, August 03, 2008

Re: DNN & XHTML

great tip on the HTML Validator FF plugin! Nice to see that XHTML is getting some attention in DNN 5.0

By southwo8 on   Sunday, August 03, 2008

Re: DNN & XHTML

Excellent resource. Thanks Timo!

By dworthley on   Sunday, August 03, 2008

Re: DNN & XHTML

@IndianGuru
Why can't you put your css in skin.css?

By messmail on   Sunday, August 03, 2008

Re: DNN & XHTML

BTW it seems that the XHTML awareness higher in countries where the government made it mandatory for their sites

Timo

By messmail on   Sunday, August 03, 2008

Re: DNN & XHTML

You can only imagine how happy I am to hear thet DNN5 will be xhtml compliant. I have a DNN site www.AgingSafely.com that has most of its pages xhtml compliant. It has been a lot of work to get around the basic compliance problems with DNN.

I am interensted how you plan on getting around the fact that "links" to stylesheets must appear in the head section, which today is loaded prior to the modules which usually contain a link to some module specific css.

It will be nice to see the forum module html compliant. That looks to be a real chore.

Regards,
/DaveS

By DavidWSnow on   Monday, August 04, 2008

Re: DNN & XHTML

@DavidWSnow, I think my text about the CSS links was not very clear.
I meant
"Links to external CSS stylesheet inside the body of the page"
I really don't see how that would be difficult from the module or skin perspective, but you are the second person to comment on this so we might not be talking about the same problem here...

By messmail on   Monday, August 04, 2008

Re: DNN & XHTML

Adding mutliple stylesheets to skins IS useful.

To insert a stylesheet into the head section of the document, could you not use this method?

http://blogs.snapsis.com/PermaLink,guid,eef98c82-f54d-480b-8e36-309ca6e406d8.aspx

By james on   Tuesday, August 05, 2008

Re: DNN & XHTML

Yes that would be the way to add a stylesheet link to the head, but skin.css is already in the head of the page.
I prefer to use @import in skin.css, that way you can use as many CSS files as you want, share them between skins (or not) and it works in both ascx and HTML skins.
Also it does not need any extra processing on the server.

Timo

By messmail on   Tuesday, August 05, 2008

Re: DNN & XHTML

Hi Timo,

I noticed on PokerDIY.com that as soon as I added the XHTML Doctype all my CSS become case sensitive (so a lot of styling was lost until I went over and checked it). I noticed with core styles like "DNNAligncenter" it is not really standardised (dnnaligncenter, dnn-align-center or DNNAlignCenter would be better) - just wanted to make sure people are aware of case sensitivity in CSS...

By rodneyjoyce on   Friday, August 08, 2008

Re: DNN & XHTML

@Rodney
Good point, one of these things I don't think about anymore.
I would prefer "DNNAlignCenter", but since this has been there for a while it would be a problem to change it. That's always the problem with CSS / style changes... downwards compatibility.

Timo

By messmail on   Friday, August 08, 2008
Attend A Webinar
Free Demo Site
Download DotNetNuke Professional Edition Trial
Have Someone Contact Me

Like Us on Facebook Join our Network on LinkedIn Follow DNN Corporate on Twitter Follow DNN on Twitter

Advertisers

Sponsors

DotNetNuke Corporation

DotNetNuke Corp. is the steward of the DotNetNuke open source project, the most widely adopted Web Content Management Platform for building web sites and web applications on Microsoft .NET. Organizations use DotNetNuke to quickly develop and deploy interactive and dynamic web sites, intranets, extranets and web applications. The DotNetNuke platform is available in a free Community and subscription-based Professional and Enterprise Editions with an Elite Support option. DotNetNuke Corp. also operates Snowcovered.com where users purchase third party apps for the platform.