Load(uri) ********** Via XDocument, then XMLDocument ********** Via Xml Document. To enable DTD proce ssing set the Prohibit Dtd property on Xml Reader Settings to false and pass the se ttings into Xml Reader. To enable DTD proce ssing set the Prohibit Dtd property on Xml Reader Settings to false and pass the se ttings into Xml Reader. Create For security reasons DTD is prohibited in this XML document. Create with settings For security reasons DTD is prohibited in this XML document.I've been doing some validating of documents against an XSD lately.
The Validation Event Handler will call you back if there's any trouble. XSD files - 64 of them - that represent a single specification.You can poke around in the document if you like, while the validation happens, but when I'm just validating I do a while(reader. I load the most-leaf node to load whole spec: I wanted an assembly that was self-contained and would hold all 64 of these XSD files internally as resources, and I didn't want to put them in a temp directory.I added all the schemas to the project, right clicked "Properties" and set them all to Embedded Resources.When you request an embedded resource you need to ask for the file using the original file name as well as the namespace.Use Reflector to determine what the ultimate fully qualified resource name is if you have trouble.
It's easy to pull the main schema out of it's resource and pass the Stream into Xml Schema. It's slightly less obvious how to get that schema to resolve its imports.
Schemas may reference other schemas like this: In this, and most, cases schema Location refers to a relative file.
However it could refer to a URL, or some custom scheme.
Personally I find the "relative filename" style to be the most flexible.
I don't like to bake too much knowledge about the outside world into my schemas. The Xml Schema class will use a File System Resolver by default and fail to find the other 63 schemas.
On this project, it's a (light) requirement that we use the specification schemas unchanged. So, I pass in a custom resolver that will find the correct schema given the URI (the value in the schema Location attribute) and return it, in this example, as a stream.