Básicamente, para obtener una validación de XSD, necesitará usar un XmlReader con ReaderSettings que defina con qué archivo XSD validar y eventos para responder/detectar errores de validación.
Para leer el archivo XSD, usar algo como esto:
StreamReader xsdReader = new StreamReader(xsdFileName);
XmlSchema Schema = new XmlSchema();
Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler));
y el controlador de eventos para detectar los errores que pudieran aparecer durante la lectura de la XSD (por ejemplo, si en sí mismo no es válido) tendría este firma:
private static void XSDValidationEventHandler(object sender, ValidationEventArgs e)
El mensaje de error está en e.Message.
Una vez que tenga el XSD cargado en la memoria, una instancia de su XmlReader y utilizar los ajustes adecuados para hacer cumplir la validación XSD: controlador de eventos
XmlReaderSettings ReaderSettings = new XmlReaderSettings();
ReaderSettings.ValidationType = ValidationType.Schema;
ReaderSettings.Schemas.Add(Schema);
ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler);
Este error tiene la misma firma que la anterior.
Entonces realmente leer el fichero de principio a fin:
XmlTextReader xmlReader = new XmlTextReader(xmlFileName);
XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings);
while (objXmlReader.Read()) { }
Si algún error de validación se produjeron, el controlador de eventos se llamaba, y se puede capturar los mensajes de error allí y, por ejemplo, mostrarlos al usuario (o simplemente tener una bandera que indique si la validación fue exitosa o no; su llamada :))
Creo que esto es lo que estaba buscando. ¡Gracias! – dtc