WriteDocType (IXmlWriterLite)
Writes out the <!DOCTYPE ...> declaration with the specified name and optional attributes.
Syntax
HRESULT WriteDocType (
const WCHAR * pwszName,
const WCHAR * pwszPublicId,
const WCHAR * pwszSystemId,
const WCHAR * pwszSubset);
Parameters
pwszName
The name of the DOCTYPE. This parameter cannot be empty or NULL.
pwszPublicId
If non-NULL, this method writes PUBLIC "pubid" "sysid"
where pubid and sysid are replaced with the value of the specified pwszPublicId
and pwszSystemId
arguments. NULL indicates that the public ID is to be omitted; this is not equivalent to an empty string.
pwszSystemId
If pwszPublicId
is NULL and pwszSystemId
is non-NULL, the method writes SYSTEM "sysid"
where sysid is replaced with the value of this argument. NULL indicates that the system ID is to be omitted; this is not equivalent to an empty string.
pwszSubset
If non-NULL, the method writes [subset]
where subset is replaced with the value of this argument. If this parameter is NULL, no subset is written out. If no subset is written, the square brackets are not written either. NULL is not equivalent to an empty string; an empty string argument will cause the brackets to be written.
Remarks
The WriteDocType
method does not check for invalid characters in pwszSystemId
and pwszPublicId
values. It also does not check for valid Document Type Definition (DTD)/XML syntax.
Note that the internal subset of the DTD has no indentation or formatting. The following example shows how to format the DTD internal subset:
const WCHAR * name = L"Employees";
const WCHAR * pubid = NULL;
const WCHAR * sysid = NULL;
const WCHAR * subset =
L"<!ELEMENT Employees (Employee)+>\n"
L"<!ELEMENT Employee EMPTY>\n"
L"<!ATTLIST Employee firstname CDATA #REQUIRED>\n"
L"<!ENTITY Company 'Microsoft'>\n";
if(FAILED(hr = pWriter->WriteDocType(name, pubid, sysid, subset)))
{
wprintf(L"Error, Method: WriteDocType, error is %08.8lx",hr);
return -1;
}
This code results in the following XML:
<!DOCTYPE Employees [<!ELEMENT Employees (Employee)+>
<!ELEMENT Employee EMPTY>
<!ATTLIST Employee firstname CDATA #REQUIRED>
<!ENTITY Company 'Microsoft'>
]>
For a complete code example that uses WriteDocType
, see Universal Windows Platform (UWP) XmlLite sample.
Requirements
Header: XmlLite.h
Library: XmlLite.lib