1

xmlns:information が含まれていない可能性のあるスキーマに対して XML ドキュメントを検証しています。では、そのようなドキュメント (またはそのスキーマ情報を持たないノード) に無効のフラグを立てるにはどうすればよいでしょうか? 私が質問しているのは、.NET では XML ドキュメントで適切に識別されたスキーマに対してのみ検証を行うことができ、スキーマに準拠していない XML が通過しないことを保証したいからです。

属性を追加したり、ファイルを保存したり、再ロードしたりすることなく、このスキーマを正確に検証するにはどうすればよいですか?

たとえば、これは機能します:

        xmlDoc.Load(file);

        xmlDoc.DocumentElement.SetAttribute("xmlns", "http://test.mysite.com/schemas/myschemas");
        xmlDoc.DocumentElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema");
        xmlDoc.DocumentElement.SetAttribute("xmlns:schemaLocation", "schemas/myschema.xsd");

        xmlDoc.Save(file);  

        XmlSchema mySchema = XmlSchema.Read(XmlReader.Create("schemas/myschema.xsd"), settings_ValidationEventHandler);

        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ValidationType = ValidationType.Schema;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
        settings.Schemas.Add(mySchema);
        settings.ValidationEventHandler += new ValidationEventHandler(settings_ValidationEventHandler);

        XmlReader reader = XmlReader.Create(file, settings);
        xmlDoc.Load(reader);

しかし、これはしません:

        xmlDoc.Load(file);

        xmlDoc.DocumentElement.SetAttribute("xmlns", "http://test.mysite.com/schemas/myschemas");
        xmlDoc.DocumentElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema");
        xmlDoc.DocumentElement.SetAttribute("xmlns:schemaLocation", "schemas/myschema.xsd");

        XmlSchema mySchema = XmlSchema.Read(XmlReader.Create("schemas/myschema.xsd"), settings_ValidationEventHandler);

        xmlDoc.Schemas.Add(mySchema);

        xmlDoc.Validate(settings_ValidationEventHandler);
4

0 に答える 0