> I have Span tag. I want to change its behavior to a Div.
> > I have Span tag. I want to change its behavior to a Div.
>
> It has two behaviours. One is from the HTML DTD (the nesting rules for
> elements) You can't change this.
Where can I find some information on nesting rules?
Can I include a <div> inside a <span>?
Thanks,
Miguel
> The other is for how it's displayed. This is controllable by CSS, just
> as you describe.
>
> You can make a <span> display like a block, but you still can't put a
> <p> inside it.
Andy Dingley - 28 Dec 2006 14:31 GMT
> Where can I find some information on nesting rules?
http://www.w3.org/TR/html4/sgml/dtd.html
Not the easiest thing to learn to read though! (search for "DTD
introduction" or something)
> Can I include a <div> inside a <span>?
No. Here's a small snippet of the DTD
<!--
HTML has two basic content models:
%inline; character level elements and text strings
%block; block-like elements e.g. paragraphs and lists
-->
Actually there's a third one too %flow;, which comprises both %inline;
and %block; elements
<!-- %inline; covers inline or "text-level" elements -->
<!ENTITY % special
"A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; |
%formctrl;">
So we see from this that <span> is one member of %inline; and also of
%flow; (see below)
<!ENTITY % block
"P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
<!ENTITY % flow "%block; | %inline;">
We see here that <div> is one member of %block; and thus of %flow; but
NOT %inline;
<!ELEMENT SPAN - - (%inline;)* >
<!ELEMENT DIV - - (%flow;)* >
<span> can contain anything from %inline;
<div> can contain anything from %block; or %inline;
So <div> can contain <span>, but <span> can't contain <div>
Now see if you can read the DTD yourself and see where <p> fits into
all this.
Martin Clark - 28 Dec 2006 14:32 GMT
shapper wrote...
>Where can I find some information on nesting rules?
>
>Can I include a <div> inside a <span>?
No.
A div is a block-line element whereas a span is an in-line element.
You can put an in-line element inside a block-line element, but not the
other way around.
See http://www.cs.tut.fi/~jkorpela/html/nesting.html for an indication
of hierarchy of elements.
See http://htmldog.com/guides/htmlintermediate/spandiv/ for more about
spans and divs.

Signature
Martin Clark