Tony Graham > To clarify: the syntax for a "text declaration"
> is exactly the same as
> an XML declaration e.g.:
>
> <?xml version="1.0" encoding="utf-8"?>
>
> Is that correct?
It is not correct that a text declaration has exactly the same syntax
as an XML declaration. An XML declaration is used for the document entity, and it has three
parts: version information, encoding declaration, and standalone
document declaration. A fully-featured XML declaration looks like
this: <?xml version="1.0" encoding="utf-8" standalone="yes"?> The version information tells to which version of XML the document
conforms. If there is an XML declaration at the start of the
document, it has to have the version information. The encoding declaration tells the encoding of the characters making
up the current parsed entity (i.e. the current file in most cases).
It is optional if the encoding is UTF-8 or UTF-16 (since all XML
processors must be able to handle both UTF-8 and UTF-16 and the
requirement that parsed entities in UTF-16 allows the XML
processor to
reliably distinguish between UTF-8 and UTF-16). It is
required if the
encoding is not UTF-8 or UTF-16. The standalone document declaration tells whether anything in the
external subset of the document's DTD affects what the XML processor
passes to the application. Its value is either "yes" (the document
does stand alone) or "no" (the external DTD subset changes things).
It is optional, and if it is not present, "no" is assumed (unless
there is no external DTD subset, in which case the standalone document
declaration can be safely ignored). An example of when
standalone="yes" is required is when the external DTD subset declares
a default value for an attribute of an element. Without the
information in the external subset, if an element in the document
doesn't have that particular attribute, no information about the
attribute will be passed to the application. With the information in
the external subset, if an element does not have that attribute, the
default value will be supplied by the XML processor as if the
attribute with its default value had been present on that element.
The entire XML declaration can be omitted if the document entity is in
either UTF-8 or UTF-16. If the document entity is not in one of those
two encodings, the XML declaration has to be present because you have
to identify the encoding.
A text declaration is used for external parsed entities, and it has
two parts: version information and encoding declaration. It doesn't
need a standalone document declaration because external parsed
entities don't have separate DTDs. A fully-featured text declaration
looks like this: <?xml version="1.0" encoding="utf-8"?> The version information has the same meaning as in the XML
declaration, except this time the version information is optional.
The encoding declaration has the same meaning as in the XML
declaration, except this time the encoding declaration is required.
The text declaration can be omitted if the external parsed entity is
in either UTF-8 or UTF-16. If the external parsed entity is not in
one of those two encodings, the text declaration has to be present
because you have to identify the encoding. |