XDocument.DocumentType Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém a Definição do Tipo de Documento (DTD) para este documento.
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
Valor de Propriedade
A XDocumentType que contém o DTD para este documento.
Exemplos
O exemplo seguinte cria um documento que contém um XDocumentType.
O Visual Basic não suporta tipos de documentos dentro de literais XML. No entanto, é possível criar um documento que contenha um tipo de documento criando primeiro o documento usando literais XML e depois criando e adicionando um XDocumentType nó no local apropriado na árvore 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)
Este exemplo produz a seguinte saída:
<!--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.-->
Observações
LINQ para XML oferece suporte limitado para DTDs.
Pode preencher uma árvore XML com um documento XML que contenha um DTD. A árvore XML conterá então um DocumentType nó. Quando serializas ou guardas a árvore, o DTD também será serializado. LINQ para XML expandirá quaisquer entidades no DTD. Quando serializa ou guarda a árvore XML, as referências à entidade não são guardadas; em vez disso, os nós são guardados com as referências à entidade substituídas pelo texto da entidade.
Se o DTD contiver atributos predefinidos, os atributos são criados na árvore XML como atributos comuns.
Por defeito, o LINQ para XML não valida um documento com base no seu DTD. Para validar um documento baseado num DTD, crie um XmlReader que valide com base num DTD, e depois crie uma árvore XML a partir do XmlReader.