XDocument.DocumentType Egenskap

Definition

Hämtar dokumenttypsdefinitionen (DTD) för det här dokumentet.

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

Egenskapsvärde

En XDocumentType som innehåller DTD för det här dokumentet.

Exempel

I följande exempel skapas ett dokument som innehåller en XDocumentType.

Visual Basic stöder inte dokumenttyper i XML-literaler. Det går dock att skapa ett dokument som innehåller en dokumenttyp genom att först skapa dokumentet med XML-literaler och sedan skapa och lägga till en XDocumentType nod på rätt plats i XML-trädet.

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)

Det här exemplet genererar följande utdata:

<!--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.-->

Kommentarer

LINQ till XML ger begränsat stöd för DTD:er.

Du kan fylla i ett XML-träd med ett XML-dokument som innehåller en DTD. XML-trädet innehåller sedan en DocumentType nod. När du serialiserar eller sparar trädet kommer DTD också att serialiseras. LINQ till XML expanderar alla entiteter i DTD. När du serialiserar eller sparar XML-trädet sparas inte entitetsreferenserna. i stället sparas noderna med entitetsreferenserna ersatta av texten i entiteten.

Om DTD innehåller standardattribut skapas attributen i XML-trädet som vanliga attribut.

LINQ till XML verifierar som standard inte ett dokument baserat på dess DTD. Om du vill verifiera ett dokument baserat på en DTD skapar du en XmlReader som verifieras baserat på en DTD och skapar sedan ett XML-träd från XmlReader.

Gäller för

Se även