c# convert pdf to image free library : How to save fillable pdf form in reader control Library system web page asp.net .net console print95-part2152

12The HTML syntax
12.1 Writing HTML documents
This section only applies to documents, authoring tools, and markup generators. In particular, it does not apply to conformance checkers;
conformance checkers must use the requirements given in the next section ("parsing HTML documents").
Documents must consist of the following parts, in the given order:
1. Optionally, a single U+FEFF BYTE ORDER MARK (BOM) character.
2. Any number ofcommentsp962
andspace charactersp64
.
3. ADOCTYPEp951
.
4. Any number ofcommentsp962
andspace charactersp64
.
5. Thedocument element
, in the form of anhtmlp134
elementp952
.
6. Any number ofcommentsp962
andspace charactersp64
.
The various types of content mentioned above are described in the next few sections.
In addition, there are some restrictions on howcharacter encoding declarationsp151
are to be serialised, as discussed in the section on that topic.
Many strings in the HTML syntax (e.g. the names of elements and their attributes) are case-insensitive, but only foruppercase ASCII lettersp64
and
lowercase ASCII lettersp64
. For convenience, in this section this is just referred to as "case-insensitive".
ADOCTYPEis a required preamble.
A DOCTYPE must consist of the following components, in this order:
1. A string that is anASCII case-insensitivep63
match for the string "<!DOCTYPE".
2. One or morespace charactersp64
.
3. A string that is anASCII case-insensitivep63
match for the string "html".
4. Optionally, aDOCTYPE legacy stringp952
or anobsolete permitted DOCTYPE stringp952
(defined below).
5. Zero or morespace charactersp64
.
6. A U+003E GREATER-THAN SIGN character (>).
This section only describes the rules for resources labeled with anHTML MIME typep43
. Rules for XML resources are discussed in the
section below entitled "The XHTML syntaxp1063
".
Note
Space characters before thehtmlp134
element, and space characters at the start of thehtmlp134
element and before theheadp135
element, will be dropped when the document is parsed; space charactersafterthehtmlp134
element will be parsed as if they were at the
end of thebodyp156
element. Thus, space characters around thedocument element
do not round-trip.
It is suggested that newlines be inserted after the DOCTYPE, after any comments that are before the document element, after the
htmlp134
element's start tag (if it is notomittedp956
), and after any comments that are inside thehtmlp134
element but before theheadp135
element.
Note
DOCTYPEs are required for legacy reasons. When omitted, browsers tend to use a different rendering mode that is incompatible with
some specifications. Including the DOCTYPE in a document ensures that the browser makes a best-effort attempt at following the relevant
specifications.
Note
12.1.1 The DOCTYPE
951
How to save fillable pdf form in reader - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
java read pdf form fields; extract pdf form data to excel
How to save fillable pdf form in reader - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
make pdf form editable in reader; extract table data from pdf
For the purposes of HTML generators that cannot output HTML markup with the short DOCTYPE "<!DOCTYPE html>", aDOCTYPE legacy
stringmay be inserted into the DOCTYPE (in the position defined above). This string must consist of:
1. One or morespace charactersp64
.
2. A string that is anASCII case-insensitivep63
match for the string "SYSTEM".
3. One or morespace charactersp64
.
4. A U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (thequote mark).
5. The literal string "about:legacy-compatp86
".
6. A matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeled
quote mark).
TheDOCTYPE legacy stringp952
should not be used unless the document is generated from a system that cannot output the shorter string.
To help authors transition from HTML4 and XHTML1, anobsolete permitted DOCTYPE stringcan be inserted into the DOCTYPE (in the position
defined above). This string must consist of:
1. One or morespace charactersp64
.
2. A string that is anASCII case-insensitivep63
match for the string "PUBLIC".
3. One or morespace charactersp64
.
4. A U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (thefirst quote mark).
5. The string from one of the cells in the first column of the table below. The row to which this cell belongs is theselected row.
6. A matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE character (i.e. the same character as in the earlier step labeledfirst
quote mark).
7. If the cell in the second column of theselected rowis not blank, one or morespace charactersp64
.
8. If the cell in the second column of theselected rowis not blank, a U+0022 QUOTATION MARK or U+0027 APOSTROPHE character
(thethird quote mark).
9. If the cell in the second column of theselected rowis not blank, the string from the cell in the second column of theselected row.
10. If the cell in the second column of theselected rowis not blank, a matching U+0022 QUOTATION MARK or U+0027 APOSTROPHE
character (i.e. the same character as in the earlier step labeledthird quote mark).
Allowed values for public and system identifiers in anobsolete permitted DOCTYPE stringp952
.
Public identifier
System identifier
-//W3C//DTD HTML L 4.0//EN
-//W3C//DTD HTML L 4.0//EN
http://www.w3.org/TR/REC-html40/strict.dtd
-//W3C//DTD HTML L 4.01//EN
-//W3C//DTD HTML L 4.01//EN
http://www.w3.org/TR/html4/strict.dtd
-//W3C//DTD XHTML 1.0 0 Strict//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
-//W3C//DTD XHTML 1.1//EN
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd
ADOCTYPEp951
containing anobsolete permitted DOCTYPE stringp952
is anobsolete permitted DOCTYPE. Authors should not useobsolete
permitted DOCTYPEsp952
, as they are unnecessarily long.
There are five different kinds ofelements:void elementsp952
,raw text elementsp952
,escapable raw text elementsp952
,foreign elementsp953
, and
normal elementsp953
.
Void elements
areap387
,basep137
,brp241
,colp403
,embedp315
,hrp188
,imgp280
,inputp434
,keygenp494
,linkp138
,metap143
,paramp324
,sourcep278
,
trackp330
,wbrp242
Raw text elements
scriptp564
,stylep152
escapable raw text elements
textareap489
,titlep136
In other words,<!DOCTYPE html>, case-insensitively.
Note
In other words,<!DOCTYPE html SYSTEM "about:legacy-compat">or<!DOCTYPE html SYSTEM 'about:legacy-
compat'>, case-insensitively except for the part in single or double quotes.
Note
12.1.2 Elements
952
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
An advanced .NET control to change ODT, ODS, ODP forms to fillable PDF formats in Visual C# .NET. Description: Convert to PDF/TIFF and save it on the disk.
extract data from pdf into excel; using pdf forms to collect data
C# Create PDF Library SDK to convert PDF from other file formats
file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc. Create fillable PDF document with fields.
extract data from pdf c#; how to flatten a pdf form in reader
Foreign elements
Elements from theMathML namespacep97
and theSVG namespacep97
.
Normal elements
All other allowedHTML elementsp43
are normal elements.
Tagsare used to delimit the start and end of elements in the markup.Raw textp952
,escapable raw textp952
, andnormalp953
elements have astart
tagp953
to indicate where they begin, and anend tagp954
to indicate where they end. The start and end tags of certainnormal elementsp953
can be
omittedp956
, as described below in the section onoptional tagsp956
. Those that cannot be omitted must not be omitted.Void elementsp952
only have a
start tag; end tags must not be specified forvoid elementsp952
.Foreign elementsp953
must either have a start tag and an end tag, or a start tag that is
marked as self-closing, in which case they must not have an end tag.
Thecontentsp115
of the element must be placed between just after the start tag (whichmight be implied, in certain casesp956
) and just before the end
tag (which again,might be implied in certain casesp956
). The exact allowed contents of each individual element depend on thecontent modelp115
of
that element, as described earlier in this specification. Elements must not contain content that their content model disallows. In addition to the
restrictions placed on the contents by those content models, however, the five types of elements have additionalsyntacticrequirements.
Void elementsp952
can't have any contents (since there's no end tag, no content can be put between the start tag and the end tag).
Raw text elementsp952
can havetextp961
, though it hasrestrictionsp961
described below.
Escapable raw text elementsp952
can havetextp961
andcharacter referencesp961
, but the text must not contain anambiguous ampersandp962
. There
are alsofurther restrictionsp961
described below.
Foreign elementsp953
whose start tag is marked as self-closing can't have any contents (since, again, as there's no end tag, no content can be put
between the start tag and the end tag).Foreign elementsp953
whose start tag isnotmarked as self-closing can havetextp961
,character
referencesp961
,CDATA sectionsp962
, otherelementsp952
, andcommentsp962
, but the text must not contain the character U+003C LESS-THAN SIGN
(<) or anambiguous ampersandp962
.
Normal elementsp953
can havetextp961
,character referencesp961
, otherelementsp952
, andcommentsp962
, but the text must not contain the character
U+003C LESS-THAN SIGN (<) or anambiguous ampersandp962
. Somenormal elementsp953
also haveyet more restrictionsp960
on what content
they are allowed to hold, beyond the restrictions imposed by the content model and those described in this paragraph. Those restrictions are
described below.
Tags contain atag name, giving the element's name. HTML elements all have names that only usealphanumeric ASCII charactersp64
. In the HTML
syntax, tag names, even those forforeign elementsp953
, may be written with any mix of lower- and uppercase letters that, when converted to all-
lowercase, matches the element's tag name; tag names are case-insensitive.
12.1.2.1 Start tags
Start tagsmust have the following format:
1. The first character of a start tag must be a U+003C LESS-THAN SIGN character (<).
The HTML syntax does not support namespace declarations, even inforeign elementsp953
.
For instance, consider the following HTML fragment:
<p>
<svg>
<metadata>
<!-- this is invalid -->
<cdr:license xmlns:cdr="http://www.example.com/cdr/metadata" name="MIT"/>
</metadata>
</svg>
</p>
The innermost element,cdr:license, is actually in the SVG namespace, as the "xmlns:cdr" attribute has no effect (unlike in XML). In
fact, as the comment in the fragment above says, the fragment is actually non-conforming. This is because the SVG specification does not
define any elements called "cdr:license" in the SVG namespace.
Note
953
VB.NET Create PDF Library SDK to convert PDF from other file
Create and save editable PDF with a blank page, bookmarks, links, signatures, etc. Create fillable PDF document with fields in Visual Basic .NET application.
extract pdf form data to xml; how to type into a pdf form in reader
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Convert multiple pages PowerPoint to fillable and editable PDF documents. Description: Convert to PDF/TIFF and save it on the disk. Parameters:
can reader edit pdf forms; exporting data from excel to pdf form
2. The next few characters of a start tag must be the element'stag namep953
.
3. If there are to be any attributes in the next step, there must first be one or morespace charactersp64
.
4. Then, the start tag may have a number of attributes, thesyntax for whichp954
is described below. Attributes must be separated from each
other by one or morespace charactersp64
.
5. After the attributes, or after thetag namep953
if there are no attributes, there may be one or morespace charactersp64
. (Some attributes
are required to be followed by a space. See theattributes sectionp954
below.)
6. Then, if the element is one of thevoid elementsp952
, or if the element is aforeign elementp953
, then there may be a single U+002F
SOLIDUS character (/). This character has no effect onvoid elementsp952
, but onforeign elementsp953
it marks the start tag as self-
closing.
7. Finally, start tags must be closed by a U+003E GREATER-THAN SIGN character (>).
12.1.2.2 End tags
End tagsmust have the following format:
1. The first character of an end tag must be a U+003C LESS-THAN SIGN character (<).
2. The second character of an end tag must be a U+002F SOLIDUS character (/).
3. The next few characters of an end tag must be the element'stag namep953
.
4. After the tag name, there may be one or morespace charactersp64
.
5. Finally, end tags must be closed by a U+003E GREATER-THAN SIGN character (>).
12.1.2.3 Attributes
Attributesfor an element are expressed inside the element's start tag.
Attributes have a name and a value.Attribute namesmust consist of one or more characters other than thespace charactersp64
, U+0000 NULL,
U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), U+003E GREATER-THAN SIGN (>), U+002F SOLIDUS (/), and U+003D EQUALS
SIGN (=) characters, thecontrol charactersp64
, and any characters that are not defined by Unicode. In the HTML syntax, attribute names, even
those forforeign elementsp953
, may be written with any mix of lower- and uppercase letters that are anASCII case-insensitivep63
match for the
attribute's name.
Attribute valuesare a mixture oftextp961
andcharacter referencesp961
, except with the additional restriction that the text cannot contain an
ambiguous ampersandp962
.
Attributes can be specified in four different ways:
Empty attribute syntax
Just theattribute namep954
. The value is implicitly the empty string.
If an attribute using the empty attribute syntax is to be followed by another attribute, then there must be aspace characterp64
separating the
two.
Unquoted attribute value syntax
Theattribute namep954
, followed by zero or morespace charactersp64
, followed by a single U+003D EQUALS SIGN character, followed by
zero or morespace charactersp64
, followed by theattribute valuep954
, which, in addition to the requirements given above for attribute values,
must not contain any literalspace charactersp64
, any U+0022 QUOTATION MARK characters ("), U+0027 APOSTROPHE characters ('),
In the following example, thedisabledp511
attribute is given with the empty attribute syntax:
<input disabled>
Example
954
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Create fillable and editable PDF documents from Excel in both .NET WinForms and ASP.NET. Description: Convert to PDF/TIFF and save it on the disk.
save pdf forms in reader; how to fill out pdf forms in reader
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Convert multiple pages Word to fillable and editable PDF documents in both .NET WinForms and ASP.NET. Description: Convert to PDF/TIFF and save it on the
flatten pdf form in reader; how to make a pdf form fillable in reader
U+003D EQUALS SIGN characters (=), U+003C LESS-THAN SIGN characters (<), U+003E GREATER-THAN SIGN characters (>), or
U+0060 GRAVE ACCENT characters (`), and must not be the empty string.
If an attribute using the unquoted attribute syntax is to be followed by another attribute or by the optional U+002F SOLIDUS character (/)
allowed in step 6 of thestart tagp953
syntax above, then there must be aspace characterp64
separating the two.
Single-quoted attribute value syntax
Theattribute namep954
, followed by zero or morespace charactersp64
, followed by a single U+003D EQUALS SIGN character, followed by
zero or morespace charactersp64
, followed by a single U+0027 APOSTROPHE character ('), followed by theattribute valuep954
, which, in
addition to the requirements given above for attribute values, must not contain any literal U+0027 APOSTROPHE characters ('), and finally
followed by a second single U+0027 APOSTROPHE character (').
If an attribute using the single-quoted attribute syntax is to be followed by another attribute, then there must be aspace characterp64
separating the two.
Double-quoted attribute value syntax
Theattribute namep954
, followed by zero or morespace charactersp64
, followed by a single U+003D EQUALS SIGN character, followed by
zero or morespace charactersp64
, followed by a single U+0022 QUOTATION MARK character ("), followed by theattribute valuep954
, which,
in addition to the requirements given above for attribute values, must not contain any literal U+0022 QUOTATION MARK characters ("), and
finally followed by a second single U+0022 QUOTATION MARK character (").
If an attribute using the double-quoted attribute syntax is to be followed by another attribute, then there must be aspace characterp64
separating the two.
There must never be two or more attributes on the same start tag whose names are anASCII case-insensitivep63
match for each other.
When aforeign elementp953
has one of the namespaced attributes given by the local name and namespace of the first and second cells of a row
from the following table, it must be written using the name given by the third cell from the same row.
Local name
Namespace
Attribute name
actuate
XLink namespacep97
xlink:actuate
arcrole
XLink namespacep97
xlink:arcrole
href
XLink namespacep97
xlink:href
role
XLink namespacep97
xlink:role
show
XLink namespacep97
xlink:show
title
XLink namespacep97
xlink:title
type
XLink namespacep97
xlink:type
lang
XML namespacep97
xml:lang
space
XML namespacep97
xml:space
xmlns
XMLNS namespacep97
xmlns
xlink
XMLNS namespacep97
xmlns:xlink
No other namespaced attribute can be expressed inthe HTML syntaxp951
.
In the following example, thevaluep438
attribute is given with the unquoted attribute value syntax:
<input value=yes>
Example
In the following example, thetypep436
attribute is given with the single-quoted attribute value syntax:
<input type='checkbox'>
Example
In the following example, thenamep510
attribute is given with the double-quoted attribute value syntax:
<input name="be evil">
Example
Whether the attributes in the table above are conforming or not is defined by other specifications (e.g. the SVG and MathML
specifications); this section only describes the syntax rules if the attributes are serialised using the HTML syntax.
Note
955
C# PDF Text Box Edit Library: add, delete, update PDF text box in
Able to create a fillable and editable text box Annot_9.pdf"; // open a PDF file PDFDocument the page PDFAnnotHandler.AddAnnotation(page, annot); // save to a
extract data out of pdf file; pdf data extraction tool
12.1.2.4 Optional tags
Certain tags can beomitted.
Anhtmlp134
element'sstart tagp953
may be omitted if the first thing inside thehtmlp134
element is not acommentp962
.
Omitting an element'sstart tagp953
in the situations described below does not mean the element is not present; it is implied, but it is still
there. For example, an HTML document always has a roothtmlp134
element, even if the string<html>doesn't appear anywhere in the
markup.
Note
For example, in the following case it's ok to remove the "<html>" tag:
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>Welcome to this example.</p>
</body>
</html>
Doing so would make the document look like this:
<!DOCTYPE HTML>
<head>
<title>Hello</title>
</head>
<body>
<p>Welcome to this example.</p>
</body>
</html>
This has the exact same DOM. In particular, note that white space around thedocument element
is ignored by the parser. The following
example would also have the exact same DOM:
<!DOCTYPE HTML><head>
<title>Hello</title>
</head>
<body>
<p>Welcome to this example.</p>
</body>
</html>
However, in the following example, removing the start tag moves the comment to before thehtmlp134
element:
<!DOCTYPE HTML>
<html>
<!-- where is this comment in the DOM? -->
<head>
<title>Hello</title>
</head>
<body>
<p>Welcome to this example.</p>
</body>
</html>
With the tag removed, the document actually turns into the same as this:
<!DOCTYPE HTML>
<!-- where is this comment in the DOM? -->
Example
956
Anhtmlp134
element'send tagp954
may be omitted if thehtmlp134
element is not immediately followed by acommentp962
.
Aheadp135
element'sstart tagp953
may be omitted if the element is empty, or if the first thing inside theheadp135
element is an element.
Aheadp135
element'send tagp954
may be omitted if theheadp135
element is not immediately followed by aspace characterp64
or acommentp962
.
Abodyp156
element'sstart tagp953
may be omitted if the element is empty, or if the first thing inside thebodyp156
element is not aspace characterp64
or acommentp962
, except if the first thing inside thebodyp156
element is ametap143
,linkp138
,scriptp564
,stylep152
, ortemplatep579
element.
Abodyp156
element'send tagp954
may be omitted if thebodyp156
element is not immediately followed by acommentp962
.
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>Welcome to this example.</p>
</body>
</html>
This is why the tag can only be removed if it is not followed by a comment: removing the tag when there is a comment there changes the
document's resulting parse tree. Of course, if the position of the comment does not matter, then the tag can be omitted, as if the
comment had been moved to before the start tag in the first place.
Note that in the example above, theheadp135
element start and end tags, and thebodyp156
element start tag, can't be omitted, because
they are surrounded by white space:
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>Welcome to this example.</p>
</body>
</html>
(Thebodyp156
andhtmlp134
element end tags could be omitted without trouble; any spaces after those get parsed into thebodyp156
element anyway.)
Usually, however, white space isn't an issue. If we first remove the white space we don't care about:
<!DOCTYPE HTML><html><head><title>Hello</title></head><body><p>Welcome to this
example.</p></body></html>
Then we can omit a number of tags without affecting the DOM:
<!DOCTYPE HTML><title>Hello</title><p>Welcome to this example.</p>
At that point, we can also add some white space back:
<!DOCTYPE HTML>
<title>Hello</title>
<p>Welcome to this example.</p>
This would be equivalent to this document, with the omitted tags shown in their parser-implied positions; the only white space text node
that results from this is the newline at the end of theheadp135
element:
<!DOCTYPE HTML>
<html><head><title>Hello</title>
</head><body><p>Welcome to this example.</p></body></html>
Example
957
Anlip196
element'send tagp954
may be omitted if thelip196
element is immediately followed by anotherlip196
element or if there is no more
content in the parent element.
Adtp200
element'send tagp954
may be omitted if thedtp200
element is immediately followed by anotherdtp200
element or addp201
element.
Addp201
element'send tagp954
may be omitted if theddp201
element is immediately followed by anotherddp201
element or adtp200
element, or if
there is no more content in the parent element.
App186
element'send tagp954
may be omitted if thepp186
element is immediately followed by anaddressp173
,articlep157
,asidep165
,
blockquotep191
,detailsp544
,divp206
,dlp198
,fieldsetp505
,figcaptionp204
,figurep201
,footerp171
,formp429
,h1p167
,h2p167
,h3p167
,
h4p167
,h5p167
,h6p167
,headerp170
,hgroupp168
,hrp188
,mainp204
,menup548
,navp162
,olp194
,pp186
,prep190
,sectionp159
,tablep394
, orulp196
element, or if there is no more content in the parent element and the parent element is anHTML elementp43
that is not anap207
,audiop329
,
delp267
,insp266
,mapp386
,noscriptp577
, orvideop325
element, or anautonomous custom elementp651
.
Anrtp224
element'send tagp954
may be omitted if thertp224
element is immediately followed by anrtp224
orrpp224
element, or if there is no more
content in the parent element.
Anrpp224
element'send tagp954
may be omitted if therpp224
element is immediately followed by anrtp224
orrpp224
element, or if there is no more
content in the parent element.
Anoptgroupp485
element'send tagp954
may be omitted if theoptgroupp485
element is immediately followed by anotheroptgroupp485
element, or
if there is no more content in the parent element.
Anoptionp486
element'send tagp954
may be omitted if theoptionp486
element is immediately followed by anotheroptionp486
element, or if it is
immediately followed by anoptgroupp485
element, or if there is no more content in the parent element.
Amenuitemp551
element'send tagp954
may be omitted if themenuitemp551
element is immediately followed by amenuitemp551
,hrp188
, or
menup548
element, or if there is no more content in the parent element.
Acolgroupp403
element'sstart tagp953
may be omitted if the first thing inside thecolgroupp403
element is acolp403
element, and if the element is
not immediately preceded by anothercolgroupp403
element whoseend tagp954
has been omitted. (It can't be omitted if the element is empty.)
Acolgroupp403
element'send tagp954
may be omitted if thecolgroupp403
element is not immediately followed by aspace characterp64
or a
commentp962
.
Acaptionp402
element'send tagp954
may be omitted if thecaptionp402
element is not immediately followed by aspace characterp64
or a
commentp962
.
Atheadp405
element'send tagp954
may be omitted if thetheadp405
element is immediately followed by atbodyp404
ortfootp406
element.
Atbodyp404
element'sstart tagp953
may be omitted if the first thing inside thetbodyp404
element is atrp407
element, and if the element is not
immediately preceded by atbodyp404
,theadp405
, ortfootp406
element whoseend tagp954
has been omitted. (It can't be omitted if the element is
empty.)
Atbodyp404
element'send tagp954
may be omitted if thetbodyp404
element is immediately followed by atbodyp404
ortfootp406
element, or if
there is no more content in the parent element.
Atfootp406
element'send tagp954
may be omitted if there is no more content in the parent element.
Atrp407
element'send tagp954
may be omitted if thetrp407
element is immediately followed by anothertrp407
element, or if there is no more
content in the parent element.
Atdp409
element'send tagp954
may be omitted if thetdp409
element is immediately followed by atdp409
orthp410
element, or if there is no more
content in the parent element.
Athp410
element'send tagp954
may be omitted if thethp410
element is immediately followed by atdp409
orthp410
element, or if there is no more
content in the parent element.
We can thus simplify the earlier example further:
<!DOCTYPE HTML><title>Hello</title><p>Welcome to this example.</p>
Example
Example
958
The ability to omit all these table-related tags makes table markup much terser.
Take this example:
<table>
<caption>37547 TEE Electric Powered Rail Car Train Functions (Abbreviated)</caption>
<colgroup><col><col><col></colgroup>
<thead>
<tr>
<th>Function</th>
<th>Control Unit</th>
<th>Central Station</th>
</tr>
</thead>
<tbody>
<tr>
<td>Headlights</td>
<td>✔</td>
<td>✔</td>
</tr>
<tr>
<td>Interior Lights</td>
<td>✔</td>
<td>✔</td>
</tr>
<tr>
<td>Electric locomotive operating sounds</td>
<td>✔</td>
<td>✔</td>
</tr>
<tr>
<td>Engineer's cab lighting</td>
<td></td>
<td>✔</td>
</tr>
<tr>
<td>Station Announcements - Swiss</td>
<td></td>
<td>✔</td>
</tr>
</tbody>
</table>
The exact same table, modulo some white space differences, could be marked up as follows:
<table>
<caption>37547 TEE Electric Powered Rail Car Train Functions (Abbreviated)
<colgroup><col><col><col>
<thead>
<tr>
<th>Function
<th>Control Unit
<th>Central Station
<tbody>
<tr>
<td>Headlights
<td>✔
<td>✔
<tr>
<td>Interior Lights
959
However, astart tagp953
must never be omitted if it has any attributes.
12.1.2.5 Restrictions on content models
For historical reasons, certain elements have extra restrictions beyond even the restrictions given by their content model.
Atablep394
element must not containtrp407
elements, even though these elements are technically allowed insidetablep394
elements according
to the content models described in this specification. (If atrp407
element is put inside atablep394
in the markup, it will in fact imply atbodyp404
start tag before it.)
<td>✔
<td>✔
<tr>
<td>Electric locomotive operating sounds
<td>✔
<td>✔
<tr>
<td>Engineer's cab lighting
<td>
<td>✔
<tr>
<td>Station Announcements - Swiss
<td>
<td>✔
</table>
Since the cells take up much less room this way, this can be made even terser by having each row on one line:
<table>
<caption>37547 TEE Electric Powered Rail Car Train Functions (Abbreviated)
<colgroup><col><col><col>
<thead>
<tr> <th>Function                              <th>Control Unit     <th>Central Station
<tbody>
<tr> <td>Headlights                            <td>✔                <td>✔
<tr> <td>Interior Lights                       <td>✔                <td>✔
<tr> <td>Electric locomotive operating sounds  <td>✔                <td>✔
<tr> <td>Engineer's cab lighting               <td>                 <td>✔
<tr> <td>Station Announcements - Swiss         <td>                 <td>✔
</table>
The only differences between these tables, at the DOM level, is with the precise position of the (in any case semantically-neutral) white
space.
Returning to the earlier example with all the white space removed and then all the optional tags removed:
<!DOCTYPE HTML><title>Hello</title><p>Welcome to this example.
If thebodyp156
element in this example had to have aclassp122
attribute and thehtmlp134
element had to have alangp125
attribute,
the markup would have to become:
<!DOCTYPE HTML><html lang="en"><title>Hello</title><body class="demo"><p>Welcome to this example.
Example
This section assumes that the document is conforming, in particular, that there are nocontent modelp115
violations. Omitting tags in the
fashion described in this section in a document that does not conform to thecontent modelsp115
described in this specification is likely to
result in unexpected DOM differences (this is, in part, what the content models are designed to avoid).
Note
960
Documents you may be interested
Documents you may be interested