Поделиться через


XDocument.DocumentType Свойство

Определение

Возвращает определение типа документа (DTD) для этого документа.

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.

Visual Basic не поддерживает типы документов в XML-литералах. Однако можно создать документ, содержащий тип документа, сначала создав документ с помощью XML-литералов, а затем создав и добавив XDocumentType узел в соответствующем месте в 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)

В примере получается следующий вывод.

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

Дерево XML можно заполнить XML-документом, содержащим DTD. Затем xml-дерево будет содержать DocumentType узел. При сериализации или сохранении дерева DTD также будет сериализован. LINQ to XML развернет все сущности в DTD. При сериализации или сохранении XML-дерева ссылки на сущности не сохраняются; Вместо этого узлы сохраняются со ссылками на сущности, замененные текстом сущности.

Если DTD содержит атрибуты по умолчанию, атрибуты создаются в дереве XML как обычные атрибуты.

По умолчанию LINQ to XML не проверяет документ на основе DTD. Чтобы проверить документ на основе DTD, создайте документ, который будет проверяться на основе DTD, а затем создайте XmlReader XML-дерево из .XmlReader

Применяется к

См. также раздел