0

.DTD を使用して XML ファイルを検証しようとしていますが、次のエラーが表示されます。

「ENTITY」は予期しないトークンです。予期されるトークンは「DOCTYPE」です。行 538、位置 3。

        public static void Validate(string xmlFilename, string schemaFilename)
    {
        XmlTextReader r = new XmlTextReader(xmlFilename);
        XmlValidatingReader validator = new XmlValidatingReader(r);
        validator.ValidationType = ValidationType.Schema;

        XmlSchemaCollection schemas = new XmlSchemaCollection();
        schemas.Add(null, schemaFilename);


        validator.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);

        try
        {
            while (validator.Read())
            { }
        }
        catch (XmlException err)
        {
            Console.WriteLine(err.Message);
        }
        finally
        {
            validator.Close();
        }
    }

検証に使用する DTD im = http://www.editeur.org/onix/2.1/reference/onix-international.dtd

誰かが私を助けてくれることを願っていますありがとう!

4

2 に答える 2

0

編集:

気づいたばかりです。検証タイプも間違って設定されています。SchemaではなくValidationType.DTDに設定してみてください。

MSDNのValidationType

-

エラーは、それが述べているとおりに正確に意味します。参照されるDTDは、DTD内の他の宣言の前にDOCTYPEが存在する必要があるため、整形式ではありません。

ドキュメントタイプ定義(ウィキペディア)

DTDの紹介(w3schools)

ローカルコピーをダウンロードし、予想されるルート要素を自分で追加するように変更してから、ソースで編集したバージョンを参照することで、これを回避できる場合があります。

于 2009-10-08T15:17:16.970 に答える