XDocument.DocumentType プロパティ

定義

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

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

プロパティ値

XDocumentType

このドキュメントの DTD を格納する XDocumentType

次の例では、 XDocumentType.

Visual Basicでは、XML リテラル内のドキュメント型はサポートされていません。 ただし、最初に XML リテラルを使用してドキュメントを作成し、次に XML ツリー内の適切な場所にノードを作成して追加 XDocumentType することで、ドキュメントの種類を含むドキュメントを作成できます。

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 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 XMLでは、DTD のサポートが制限されています。

DTD を含む XML ドキュメントを XML ツリーに設定できます。 その後、XML ツリーにノードが DocumentType 含まれます。 ツリーをシリアル化または保存すると、DTD もシリアル化されます。 LINQ to XMLは、DTD 内のすべてのエンティティを展開します。 XML ツリーをシリアル化または保存しても、エンティティ参照は保存されません。代わりに、ノードはエンティティのテキストに置き換えられたエンティティ参照で保存されます。

DTD に既定の属性が含まれている場合、属性は通常の属性として XML ツリーに作成されます。

既定では、LINQ to XMLは DTD に基づいてドキュメントを検証しません。 DTD に基づいてドキュメントを検証するには、DTD に基づいて検証するドキュメントを作成 XmlReader し、から XML ツリーを XmlReader作成します。

適用対象

こちらもご覧ください