- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Fri, 12 Feb 2010 02:36:01 +0100
- To: Claudia Murialdo <cmurialdo@gmail.com>
- Cc: www-validator@w3.org
Claudia Murialdo, Wed, 10 Feb 2010 12:26:32 -0200: > I need to add a few custom attributes in some HTML elements, which is > the best way to do it in order to keep validating with w3c validation > service?. Why? How do you want to use the attributes? Do you want to access them via CSS or via Javascript or? > I want my page validates with HTML 4.01 Transitional. I read that one > way is to extend de HTML 4.0 Transitional DTD and put this in the > DOCTYPE declaration of the page (as it says in > http://htmlhelp.com/tools/validator/customdtd.html), but I would like > to know if I can do it in another way so that I can have the original > and public w3c DTD in the DOCTYPE and add my customs attributes adding > a new DTD or a namespace. Can I do that?. HTML5 has the data-myattribute="myvalue" attribute. However, I'll focus on HTML401 transitional. Her are 3 solutions, of which option 2) is the only one which is interpreted as a "real" attribute. 1) Attribute inside class attribute approach. Has simple CSS selector, when using the colon variant: p.myattr\:value{} a) <p class=" myattr=value "> Lorem ipsum</p> b) <p class=" myattr='value' "> Lorem ipsum</p> c) <p class=" myattr:value "> Lorem ipsum</p> 2) Take advantage of the "standard" misinterpretation of the HTML4 Shorthand syntax. These attributes are interpreted as real attributes of the <p> element even if they, according to the, the HTML4 validator, are just plain text inside the p element. As you can understand, this method has several syntactic gotchas. But it seems reliable in at least these browsers: IE, Opera, Firefox, Webkit and Lynx, Lobo ... Can be selected in CSS via a an attribute selector: *[myattr]{} or *[myattr=value]{}. a) <p / myattr="value" /> Lorem ipsum b) <p / myattr="value" </> Lorem ipsum 3) Nested elements - the (new) design pattern of Microformats, if I have gotten it right. Has a simple CSS selector: *.myattr > *.value {} <p class="myattr"> <span class="value"> Lorem </span> </p> Documentation: <http://målform.no/custom-html4-attributes/> The page validates as HTML4.01 transitional. Of course I expect that option 2) will be frowned upon. But it is valid. It is a hack, in the sense that it misuses a discrepancy between HTML4 and real world Web browsers - is is a clear signal that that HTML4 is ready to be updated. Would be interesting what works for you. -- leif halvard silli
Received on Friday, 12 February 2010 01:36:38 UTC