XmlReaderSettings.DtdProcessing Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que determina el procesamiento de 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
Valor de propiedad
Uno de los valores de enumeración que determina el procesamiento de DTD. El valor predeterminado es Prohibit.
Ejemplos
En el ejemplo siguiente se valida un archivo XML mediante un archivo 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
En el ejemplo se usa el itemDTD.xml archivo como entrada.
<!--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>
Comentarios
La validación de definición de tipo de documento (DTD) se implementa mediante las restricciones de validez definidas en la recomendación W3C Extensible Markup Language (XML) 1.0 (cuarta edición). Los DTD usan una gramática formal para describir la estructura y la sintaxis de documentos XML compatibles; especifican el contenido y los valores permitidos para el documento XML.
La DtdProcessing propiedad puede tener uno de los siguientes valores:
- DtdProcessing.Parse para habilitar el procesamiento de DTD.
- DtdProcessing.Prohibit para lanzar una XmlException excepción cuando se encuentra un DTD.
- DtdProcessing.Ignore para deshabilitar el procesamiento de DTD sin advertencias ni excepciones.
Para realizar la validación con un DTD, XmlReader usa el DTD definido en la declaración DOCTYPE de un documento XML. La declaración DOCTYPE puede apuntar a un DTD insertado o puede ser una referencia a un archivo DTD externo. Para validar un archivo XML con un DTD:
- Establezca la propiedad XmlReaderSettings.DtdProcessing en
DtdProcessing.Parse. - Establezca la propiedad XmlReaderSettings.ValidationType en
ValidationType.DTD. - Si el DTD es un archivo externo almacenado en un recurso de red que requiere autenticación, pase un XmlResolver objeto con las credenciales necesarias al Create método .
Importante
Si la propiedad DtdProcessing está establecida en DtdProcessing.Ignore, el XmlReader no notificará los DTDs. Esto significa que el DTD/DOCTYPE se perderá en la salida del archivo.