Sdílet prostřednictvím


XDocument.DocumentType Vlastnost

Definice

Získá definici typu dokumentu (DTD) pro tento dokument.

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

Hodnota vlastnosti

A XDocumentType , který obsahuje DTD pro tento dokument.

Příklady

Následující příklad vytvoří dokument, který obsahuje .XDocumentType

Jazyk Visual Basic nepodporuje typy dokumentů v literálech XML. Dokument, který obsahuje typ dokumentu, je však možné vytvořit tak, že nejprve vytvoříte dokument pomocí literálů XML a pak vytvoříte a přidáte XDocumentType uzel na příslušném místě ve stromu XML.

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)

Tento příklad vytvoří následující výstup:

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

Poznámky

LINQ to XML poskytuje omezenou podporu DTD.

Strom XML můžete naplnit dokumentem XML, který obsahuje DTD. Strom XML pak bude obsahovat DocumentType uzel. Při serializaci nebo uložení stromu bude DTD také serializován. LINQ to XML rozšíří všechny entity v DTD. Při serializaci nebo uložení stromu XML nejsou odkazy na entity uloženy; místo toho se uzly ukládají s odkazy na entity nahrazené textem entity.

Pokud DTD obsahuje výchozí atributy, atributy se vytvoří ve stromu XML jako běžné atributy.

Ve výchozím nastavení linQ to XML neověřuje dokument na základě jeho DTD. Pokud chcete ověřit dokument založený na DTD, vytvořte dokument XmlReader , který se ověří na základě DTD, a pak ze XmlReaderstromu XML .

Platí pro

Viz také