XmlReaderSettings.DtdProcessing Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur qui détermine le traitement des DTD.
public:
property System::Xml::DtdProcessing DtdProcessing { System::Xml::DtdProcessing get(); void set(System::Xml::DtdProcessing value); };
public System.Xml.DtdProcessing DtdProcessing { get; set; }
member this.DtdProcessing : System.Xml.DtdProcessing with get, set
Public Property DtdProcessing As DtdProcessing
Valeur de propriété
Une des valeurs d’énumération qui détermine le traitement des DTD. La valeur par défaut est Prohibit.
Exemples
L’exemple suivant valide un fichier XML à l’aide d’un fichier DTD.
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;
public class Sample {
public static void Main() {
// Set the validation settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("itemDTD.xml", settings);
// Parse the file.
while (reader.Read());
}
// Display any validation errors.
private static void ValidationCallBack(object sender, ValidationEventArgs e) {
Console.WriteLine("Validation Error: {0}", e.Message);
}
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
public class Sample
public shared sub Main()
' Set the validation settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.DtdProcessing = DtdProcessing.Parse
settings.ValidationType = ValidationType.DTD
AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("itemDTD.xml", settings)
' Parse the file.
while reader.Read()
end while
end sub
' Display any validation errors.
private shared sub ValidationCallBack(sender as object, e as ValidationEventArgs)
Console.WriteLine("Validation Error: {0}", e.Message)
end sub
end class
L’exemple utilise le itemDTD.xml fichier comme entrée.
<!--XML file using a DTD-->
<!DOCTYPE store [
<!ELEMENT store (item)*>
<!ELEMENT item (name,dept,price)>
<!ATTLIST item type CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>]>
<store>
<item type="supplies" ISBN="2-3631-4">
<name>paint</name>
<price>16.95</price>
</item>
</store>
Remarques
La validation de définition de type de document (DTD) est implémentée à l’aide des contraintes de validité définies dans la recommandation W3C Extensible Markup Language (XML) 1.0 (quatrième édition). Les DTD utilisent une grammaire formelle pour décrire la structure et la syntaxe des documents XML conformes ; ils spécifient le contenu et les valeurs autorisés pour le document XML.
La DtdProcessing propriété peut avoir l’une des valeurs suivantes :
- DtdProcessing.Parse pour activer le traitement DTD.
- DtdProcessing.Prohibitpour lancer une exception XmlException lorsqu’un DTD est rencontré
- DtdProcessing.Ignore pour désactiver le traitement DTD sans avertissements ou exceptions.
Pour effectuer la validation par rapport à un DTD, le XmlReader utilise le DTD défini dans la déclaration DOCTYPE d’un document XML. La déclaration DOCTYPE peut pointer vers un DTD inline ou être une référence à un fichier DTD externe. Pour valider un fichier XML par rapport à un DTD :
- Définissez la propriété XmlReaderSettings.DtdProcessing sur
DtdProcessing.Parse. - Définissez la propriété XmlReaderSettings.ValidationType sur
ValidationType.DTD. - Si le DTD est un fichier externe stocké sur une ressource réseau nécessitant une authentification, transmettez un XmlResolver objet avec les informations d’identification nécessaires à la Create méthode.
Important
Si la propriété DtdProcessing est définie sur DtdProcessing.Ignore, alors XmlReader ne rapportera pas les DTD. Cela signifie que le DTD/DOCTYPE sera perdu en sortie.