This topic has not yet been rated - Rate this topic

XmlDocument.CreateDocumentType Method

Returns a new XmlDocumentType object.

Namespace:  System.Xml
Assembly:  System.Xml (in System.Xml.dll)
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public virtual XmlDocumentType CreateDocumentType(
	string name,
	string publicId,
	string systemId,
	string internalSubset
)

Parameters

name
Type: System.String
Name of the document type.
publicId
Type: System.String
The public identifier of the document type or null. You can specify a public URI and also a system identifier to identify the location of the external DTD subset.
systemId
Type: System.String
The system identifier of the document type or null. Specifies the URL of the file location for the external DTD subset.
internalSubset
Type: System.String
The DTD internal subset of the document type or null.

Return Value

Type: System.Xml.XmlDocumentType
The new XmlDocumentType.

The returned node will have parsed Entities and Notations collections.

Although this method creates the new object in the context of the document, it does not automatically add the new object to the document tree. To add the new object, you must explicitly call one of the node insert methods.

According to the W3C Extensible Markup Language (XML) 1.0 recommendation (www.w3.org/TR/1998/REC-xml-19980210), DocumentType nodes are only allowed within Document nodes. Each XmlDocument can have only one DocumentType node. The DocumentType node must also be inserted before the root element of the XmlDocument (if the document already has a root element, you cannot add a DocumentType node).

If the passed parameters do not combine to build a valid XmlDocumentType, an exception is thrown.

Notes to Inheritors

This method has an inheritance demand. Full trust is required to override the CreateDocumentType method. See Inheritance Demands for more information.

This method is a Microsoft extension to the Document Object Model (DOM).

The following example creates a DocumentType node and adds it to an XML document.


using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {
    //Create the XmlDocument.
    XmlDocument doc = new XmlDocument();

    //Create a document type node and  
    //add it to the document.
    XmlDocumentType doctype;
    doctype = doc.CreateDocumentType("book", null, null, "<!ELEMENT book ANY>");
    doc.AppendChild(doctype);

    //Create the root element and 
    //add it to the document.
    doc.AppendChild(doc.CreateElement("book"));

    Console.WriteLine("Display the modified XML...");
    doc.Save(Console.Out);
  }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
w3.org 403 error
Recently, my software started to crash, generating a 403 error when calling XmlDocument.CreateDocumentType with a dtdLocation at the w3 servers. Apparently, they started blocking the many (unnecessary) request they're receiving. Any solution? (other than catching the error) $0$0 $0 $0A very good description of this issue can be found here:$0 $0http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic$0