共用方式為


使用 XmlValidatingReader 對 DTD 進行驗證

文件類型定義 (DTD) 驗證是使用全球資訊網協會 (W3C) 可延伸標記語言 (XML) 1.0 版建議事項中定義的有效性條件約束實作的。DTD 使用正式文法描述相容 XML 文件的結構和語法;它們指定可用於 XML 文件的內容和值。

XmlValidatingReader 會使用 XML 文件之 DOCTYPE 宣告中所定義的 DTD,以根據 DTD 執行驗證。DOCTYPE 宣告可以指向內嵌 DTD,也可以是外部 DTD 檔案的參考。

Note注意事項

XmlValidatingReader 類別在 Microsoft .NET Framework 2.0 版本 中已過時。您可以使用 XmlReaderSettings 類別和 Create 方法,來建立驗證 XmlReader 執行個體。如需詳細資訊,請參閱使用 XmlReader 驗證 XML 資料

範例

下列程式碼範例會建立 XmlValidatingReader,其會使用 XmlTextReader。輸入檔 HeadCount.xml 是針對外部 DTD 檔案 HeadCount.dtd 來驗證。範例中會顯示任何嚴重性類型和錯誤訊息。

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema

public class ValidationSample

      public shared sub Main()
         Dim tr As XmlTextReader = new XmlTextReader("HeadCount.xml")
         Dim vr As XmlValidatingReader = new XmlValidatingReader(tr)

         vr.ValidationType = ValidationType.DTD
         AddHandler vr.ValidationEventHandler, AddressOf ValidationCallback
         while(vr.Read())
         end while
         Console.WriteLine("Validation finished")

      end sub      

      public shared sub ValidationCallBack (sender As object, args As ValidationEventArgs)
      
         Console.WriteLine("***Validation error")
         Console.WriteLine("Severity:{0}", args.Severity)
         Console.WriteLine("Message:{0}", args.Message)
     end sub
end class
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

namespace ValidationSample
{
   class Sample
   {
      public static void Main()
      {
         XmlTextReader tr = new XmlTextReader("HeadCount.xml");
         XmlValidatingReader vr = new XmlValidatingReader(tr);

         vr.ValidationType = ValidationType.DTD;
         vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);

         while(vr.Read());
         Console.WriteLine("Validation finished");
      }

      public static void ValidationHandler(object sender, ValidationEventArgs args)
      {
         Console.WriteLine("***Validation error");
         Console.WriteLine("\tSeverity:{0}", args.Severity);
         Console.WriteLine("\tMessage  :{0}", args.Message);
      }
   }
}

以下列出了要進行驗證的輸入檔 (HeadCount.xml) 內容。

<!DOCTYPE HeadCount SYSTEM "HeadCount.dtd">
<HeadCount>
  <Name First="Waldo" Last="Pepper">
    <Name First="Salt" Last="Pepper" Relation="spouse"/>
    <Name First="Red" Last="Pepper" Relation="child"/>
  </Name>
  <Name First="&MyFirst;" Last="&MyLast;">
    <Name First="Sharon" Last="&MyLast;" Relation="spouse"/>
    <Name First="Morgan" Last="&MyLast;" Relation="child"/>
    <Name First="Shelby" Last="&MyLast;" Relation="child"/>
  </Name>
</HeadCount>

以下描述據以驗證的外部 DTD 檔案 HeadCount.dtd 的內容。

<!ELEMENT HeadCount (Name)*>
<!ELEMENT Name (Name)*>
<!ATTLIST Name First CDATA #REQUIRED>
<!ATTLIST Name Last CDATA #REQUIRED>
<!ATTLIST Name Relation (self | spouse | child) "self">
<!ENTITY MyFirst "Jeff">
<!ENTITY MyLast "Smith">

請參閱

概念

使用 XmlReader 讀取 XML

其他資源

使用 XmlReader 類別