The standalone Declaration
The standalone attribute has the value yes or no. If no standalone declaration is present, then no is the default.
A yes value means that no declarations in the external DTD subset affect the content of the document in any way. Specifically, the following four conditions apply.
Table 1-1. Character Set Names Defined in XML
If these conditions hold, the parser may choose not to read the external DTD subset, which can save a significant amount of time when the DTD is at a remote and slow web site.
A nonvalidating parser will not actually check that these conditions hold. For example, it will not report an error if an element does not have an attribute for which a default value is provided in the external DTD subset. Obviously the parser can't find mistakes that are apparent only when it reads the external DTD subset if it doesn't read the external DTD subset.
A validating parser is supposed to report a validity error if standalone has the value yes and any of these four conditions are not true.
It is always acceptable to set standalone to no, even if the document could technically stand alone. If you don't want to be bothered figuring out whether all of the above four conditions apply, just set standalone="no" (or leave it unspecified because the default is no). This is always correct.
The standalone declaration only applies to content read from the external DTD subset. It has nothing to do with other means of merging in content from remote documents such as schemas, XIncludes, XLinks, application-specific markup like the img element in XHTML, or anything else. It is strictly about the DTD.
Whatever values you pick for the version , encoding , and standalone attributes, and whether you include encoding and standalone attributes at all, you should provide an XML declaration. It only takes a few bytes and makes it much easier for both people and parsers to process your document.