For HTML 4, the answer is technically:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
HTML 5 is even more permissive, saying only that an id must contain at least one character and may not contain any space characters.
The id attribute is case sensitive in XHTML.
As a purely practical matter, you may want to avoid certain characters. Periods, colons and '#' have special meaning in CSS selectors, so you will have to escape those characters using a backslash in CSS or a double backslash in a selector string passed to jQuery. Think about how often you will have to escape a character in your stylesheets or code before you go crazy with periods and colons in ids.
For example, the HTML declaration <div id="first.name"></div>
is valid. You can select that element in CSS as #first\.name
and in jQuery like so: $('#first\\.name').
But if you forget the backslash, $('#first.name')
, you will have a perfectly valid selector looking for an element with id first
and also having class name
. This is a bug that is easy to overlook. You might be happier in the long run choosing the id first-name
(a hyphen rather than a period), instead.
You can simplify your development tasks by strictly sticking to a naming convention. For example, if you limit yourself entirely to lower-case characters and always separate words with either hyphens or underscores (but not both, pick one and never use the other), then you have an easy-to-remember pattern. You will never wonder "was it firstName
or FirstName
?" because you will always know that you should type first_name
. Prefer camel case? Then limit yourself to that, no hyphens or underscores, and always, consistently use either upper-case or lower-case for the first character, don't mix them.
A now very obscure problem was that at least one browser, Netscape 6, incorrectly treated id attribute values as case-sensitive. That meant that if you had typed id="firstName"
in your HTML (lower-case 'f') and #FirstName { color: red }
in your CSS (upper-case 'F'), that buggy browser would have failed to set the element's color to red. At the time of this edit, April 2015, I hope you aren't being asked to support Netscape 6. Consider this a historical footnote.
Best Answer
I found this in a forum post. Not sure about it's validity, but it seems legit.
It appears that Crystal Reports only supports a small subset of HTML tags and attributes.
The supported tags are:
html
body
div
(causes a paragraph break)tr
(causes only a paragraph break; does not preserve column structure of a table)span
font
p
(causes a paragraph break)br
(causes a paragraph break)h1
(causes a paragraph break, makes the font bold & twice default size)h2
(causes a paragraph break, makes the font bold & 1.5 times default size)h3
(causes a paragraph break, makes the font bold & 9/8 default size)h4
(causes a paragraph break, makes the font bold)h5
(causes a paragraph break, makes the font bold & 5/6 default size)h6
(causes a paragraph break, makes the font bold & 5/8 default size)center
big
(increases font size by 2 points)small
(decreases font size by 2 points if it's 8 points or larger)b
i
s
strike
u
The supported attributes are:
align
face
size
color
style
font-family
font-size
font-style
font-weight
Not sure about CSS. I'm pretty sure you can't do any styling beyond what you see here.