XDocument.DocumentType プロパティ

定義

このドキュメントのドキュメント型定義 (DTD: Document Type Definition) の名前を取得します。Gets the Document Type Definition (DTD) for this document.

public:
 property System::Xml::Linq::XDocumentType ^ DocumentType { System::Xml::Linq::XDocumentType ^ get(); };
public System.Xml.Linq.XDocumentType DocumentType { get; }
member this.DocumentType : System.Xml.Linq.XDocumentType
Public ReadOnly Property DocumentType As XDocumentType

プロパティ値

XDocumentType

このドキュメントの DTD を格納する XDocumentTypeA XDocumentType that contains the DTD for this document.

次の例では、XDocumentTypeを含むドキュメントを作成します。The following example creates a document that contains an XDocumentType.

Visual Basic は、XML リテラル内のドキュメント型をサポートしていません。Visual Basic does not support document types within XML literals. ただし、まず XML リテラルを使用してドキュメントを作成し、次に XML ツリー内の適切な場所に XDocumentType ノードを作成して追加することで、ドキュメントの種類を含むドキュメントを作成することができます。However, it is possible to create a document that contains a document type by first creating the document using XML literals, and then creating and adding an XDocumentType node in the appropriate place in the XML tree.

string internalSubset = @"<!ELEMENT Pubs (Book+)>  
<!ELEMENT Book (Title, Author)>  
<!ELEMENT Title (#PCDATA)>  
<!ELEMENT Author (#PCDATA)>";  
  
string target = "xml-stylesheet";  
string data = "href='mystyle.css' title='Compact' type='text/css'";  
  
XDocument doc = new XDocument(  
    new XComment("This is a comment."),  
    new XProcessingInstruction(target, data),  
    new XDocumentType("Pubs", null, null, internalSubset),  
    new XElement("Pubs",   
        new XElement("Book",  
            new XElement("Title", "Artifacts of Roman Civilization"),  
            new XElement("Author", "Moreno, Jordao")  
        ),  
        new XElement("Book",  
            new XElement("Title", "Midieval Tools and Implements"),  
            new XElement("Author", "Gazit, Inbar")  
        )  
    ),  
    new XComment("This is another comment.")  
);  
doc.Declaration = new XDeclaration("1.0", "utf-8", "true");  
Console.WriteLine(doc);  
  
doc.Save("test.xml");  
Dim internalSubset = _  
        "<!ELEMENT Pubs (Book+)>" & Environment.NewLine & _  
        "<!ELEMENT Book (Title, Author)>" & Environment.NewLine & _  
        "<!ELEMENT Title (#PCDATA)>" & Environment.NewLine & _  
        "<!ELEMENT Author (#PCDATA)>"  
  
Dim doc As XDocument = _  
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>  
    <!--This is a comment.-->  
    <?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>  
    <Pubs>  
        <Book>  
            <Title>Artifacts of Roman Civilization</Title>  
            <Author>Moreno, Jordao</Author>  
        </Book>  
        <Book>  
            <Title>Midieval Tools and Implements</Title>  
            <Author>Gazit, Inbar</Author>  
        </Book>  
    </Pubs>  
    <!--This is another comment.-->  
  
doc.Nodes().Skip(1).First().AddAfterSelf(New XDocumentType("Pubs", Nothing, Nothing, internalSubset))  
Console.WriteLine(doc)  

この例の結果は、次のようになります。This example produces the following output:

<!--This is a comment.-->  
<?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>  
<!DOCTYPE Pubs [<!ELEMENT Pubs (Book+)>  
<!ELEMENT Book (Title, Author)>  
<!ELEMENT Title (#PCDATA)>  
<!ELEMENT Author (#PCDATA)>]>  
<Pubs>  
  <Book>  
    <Title>Artifacts of Roman Civilization</Title>  
    <Author>Moreno, Jordao</Author>  
  </Book>  
  <Book>  
    <Title>Midieval Tools and Implements</Title>  
    <Author>Gazit, Inbar</Author>  
  </Book>  
</Pubs>  
<!--This is another comment.-->  

注釈

LINQ to XMLLINQ to XML は、Dtd を限定的にサポートします。provides limited support for DTDs.

DTD を含む XML ドキュメントを XML ツリーに読み込むことができます。You can populate an XML tree with an XML document that contains a DTD. XML ツリーには、DocumentType ノードが含まれます。The XML tree will then contain a DocumentType node. ツリーをシリアル化または保存すると、DTD もシリアル化されます。When you serialize or save the tree, the DTD will also be serialized. LINQ to XMLLINQ to XML によって、DTD 内のすべてのエンティティが展開されます。will expand any entities in the DTD. XML ツリーをシリアル化または保存しても、エンティティ参照は保存されません。代わりに、エンティティのテキストで置き換えられたエンティティ参照を使用してノードが保存されます。When you serialize or save the XML tree, the entity references are not saved; instead, the nodes are saved with the entity references replaced by the text of the entity.

DTD に既定の属性が含まれている場合、属性は通常の属性として XML ツリー内に作成されます。If the DTD contains default attributes, the attributes are created in the XML tree as ordinary attributes.

既定では、LINQ to XMLLINQ to XML は DTD に基づいてドキュメントを検証しません。By default, LINQ to XMLLINQ to XML does not validate a document based on its DTD. DTD に基づいてドキュメントを検証するには、DTD に基づいて検証する XmlReader を作成し、XmlReaderから XML ツリーを作成します。To validate a document based on a DTD, create an XmlReader that will validate based on a DTD, and then create an XML tree from the XmlReader.

適用対象

こちらもご覧ください