Headers are optional in XML, but when included, they must
be written correctly. Although usefull to identify files, headers
are a potencial source of spelling errors, so it is often better
to not include them. Currently GAMGI includes full headers when
exporting files. The complete GML header is written as:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE gml SYSTEM "http://www.gamgi.org/dtd/gamgi.dtd">
The first line is the XML declaration, the second line is the
Document Type declaration. Even when the XML declaration is present,
the Document Type declaration is still optional, but when the Document
Type declaration is present, then the XML declaration is required.
Absolutely nothing can appear in the file before the XML declaration,
in the same line or above, not even white space. The
encoding
and
standalone parameters in the XML declaration are optional,
but when included, they must be written in the order above. Everything
is case-sensitive, except the encoding value, which could have been
written as
"utf-8", for example. No white spaces can appear
before
xml.
The
SYSTEM identifier
"http://www.gamgi.org/dtd/gamgi.dtd"
in the Document Type declaration is optional, but when included, it must
be written as above. The
DOCTYPE identifier
gml, identifying
the XML root element, must be present. No white spaces can appear before
DOCTYPE.
Good:
<?xml version="1.0"?> the encoding and standalone attributes are optional
<!DOCTYPE gml> the SYSTEM identifier is optional
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
the Document Type declaration is optional
Bad:
<?xml?> the version attribute is absent
<?xml encoding="UTF-8" version="1.0" standalone="yes"?>
the attribute order is wrong
<? xml version="1.0"?> white space before xml
<! DOCTYPE gml SYSTEM "http://www.gamgi.org/dtd/gamgi.dtd">
white space before DOCTYPE
<!DOCTYPE gml SYSTEM "http://www.gamgi.org/dtd/gamgi.dtd">
the XML declaration is missing