HOWTO: DTD, XDR 또는 XSD를 사용하여 XML 문서의 유효성 검사

기술 자료 번역 기술 자료 번역
기술 자료: 307379 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR307379
모두 확대 | 모두 축소

이 페이지에서

요약

본 문서에서는 DTD(Document Type Definition), Microsoft XDR(XML-Data Reduced) 스키마, XSD(XML Schema Definition Language) 스키마를 XML(eXtensible Markup Language) 문서에 적용하는 방법을 보여줍니다. 또한 XmlValidatingReader 클래스를 사용하여 XML 문서가 지정된 문법에 맞는지 검사하는 방법과 XmlSchemaCollection 클래스로 스키마를 메모리에 캐싱하여 XML 유효성 검사를 최적화하는 방법에 대해서도 설명합니다.

XML 문서는 요소와 특성을 포함하며 응용 프로그램과 조직 간에 데이터를 유연하고 강력하게 교환할 수 있는 수단을 제공합니다. 적합한 XML 문서의 구조와 내용을 지정하려면 DTD, XDR 스키마 또는 XSD 스키마를 작성해야 합니다. Microsoft .NET Framework에서는 XML 문법을 지정하는 방법으로 XSD 스키마를 권장하지만 DTD와 XDR 스키마도 지원합니다.

요구 사항

본 문서에서는 사용자가 다음 내용을 잘 알고 있다고 가정합니다.
  • Microsoft Visual C# .NET 또는 Microsoft Visual Basic .NET 구문
  • 유효성 검사 문제를 비롯한 XML 개념

XML 문서 만들기

  1. Visual Studio .NET을 시작합니다.
  2. 로컬 컴퓨터에 새 XML 파일을 만듭니다.
  3. 아래의 데이터를 XML 문서에 추가하여 카탈로그의 제품을 표현하도록 합니다.
    <Product ProductID="123">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  4. C:\MyFolder라는 새 폴더에 Product.xml이라는 이름으로 파일을 저장합니다.

DTD 사용

DTD 만들기 및 XML 문서에 연결

  1. Visual Studio .NET에서 빈 텍스트 파일을 만듭니다.
  2. 아래의 DTD 선언을 파일에 추가하여 XML 문서의 문법을 설명합니다.
    <!ELEMENT Product (ProductName)>
    <!ATTLIST Product ProductID CDATA #REQUIRED>
    <!ELEMENT ProductName (#PCDATA)>
  3. C:\MyFolder 디렉터리에 Product.dtd라는 이름으로 파일을 저장합니다.
  4. Visual Studio .NET에서 Product.xml을 엽니다.
  5. 아래의 DOCTYPE 문을 Product.xml의 맨 위에 추가하여 XML 문서를 DTD 파일에 연결합니다.
    <?xml version='1.0' encoding='utf-16'?>
    <!DOCTYPE Product SYSTEM "Product.dtd">
  6. 수정된 XML 문서를 ProductWithDTD.xml로 저장합니다.

DTD를 사용하여 XML 문서의 유효성 검사

  1. Visual Studio .NET에서 ValidateXml이라는 새 Visual C# 콘솔 응용 프로그램 프로젝트를 만듭니다.
  2. 아래와 같이 두 using 문을 Class1.cs의 시작 부분에 추가합니다.
    using System.Xml;        // for XmlTextReader and XmlValidatingReader
    using System.Xml.Schema; // for XmlSchemaCollection (which is used later)
  3. 아래와 같이 Class1.cs에서 Main 메서드가 시작되기 전에 isValid라는 부울 필드를 선언합니다.
    private static bool isValid = true;      // If a validation error occurs,
                                             // set this flag to false in the
                                             // validation event handler.
  4. 아래와 같이 Main 메서드에 있는 텍스트 파일에서 XML 문서를 읽는 XmlTextReader 개체를 만든 다음 이 XML 데이터의 유효성을 검사하는 XmlValidatingReader를 만듭니다.
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithDTD.xml");
    XmlValidatingReader v = new XmlValidatingReader(r);
  5. XmlValidatingReader 개체의 ValidationType 속성은 필요한 유효성 검사 유형(DTD, XDR 또는 Schema)을 나타냅니다. 아래와 같이 이 속성을 DTD로 설정합니다.
    v.ValidationType = ValidationType.DTD;
  6. 유효성 검사 오류가 발생하면 유효성 검사 판독기가 유효성 검사 이벤트를 생성합니다. 아래의 코드를 추가하여 유효성 검사 이벤트 처리기를 등록합니다. MyValidationEventHandler 메서드는 8단계에서 구현됩니다.
    v.ValidationEventHandler += 
       new ValidationEventHandler(MyValidationEventHandler);
  7. 아래의 코드를 추가하여 XML 문서를 읽고 그 유효성을 검사합니다. 유효성 검사 오류가 발생하면 MyValidationEventHandler가 호출되어 해당 오류를 해결합니다. 이 메서드는 isValid를 false로 설정합니다(8단계 참조). 유효성 검사 후 isValid의 상태를 통해 문서가 유효한지 아니면 유효하지 않은지 확인할 수 있습니다.
    while (v.Read())
    {
       // Can add code here to process the content.
    }
    v.Close();
    
    // Check whether the document is valid or invalid.
    if (isValid)
       Console.WriteLine("Document is valid");
    else
       Console.WriteLine("Document is invalid");
  8. 아래와 같이 Main 메서드 뒷부분에 MyValidationEventHandler 메서드를 기록합니다.
    public static void MyValidationEventHandler(object sender, 
                                                ValidationEventArgs args) 
    {
       isValid = false;
       Console.WriteLine("Validation event\n" + args.Message);
    }
  9. 응용 프로그램을 빌드하고 실행합니다. 응용 프로그램에서 XML 문서가 유효하다고 보고해야 합니다.
  10. Visual Studio .NET에서 ProductWithDTD.xml을 수정하여 이 XML 문서를 유효하지 않게 만듭니다. 예를 들어, "<ProductName>Rugby jersey</ProductName>" 요소를 삭제합니다.
  11. 응용 프로그램을 다시 실행합니다. 그러면 아래의 오류 메시지가 수신됩니다.
    유효성 검사 이벤트
    'Product' 요소에 잘못된 내용이 있습니다. 'ProductName'이 필요합니다.
    file:///C:/Myfolder/ProductWithDTD.xml(4,5)에서 오류가 발생했습니다.
    문서가 잘못되었습니다.

XDR 스키마 사용

XDR 스키마 만들기 및 XML 문서에 연결

  1. Visual Studio .NET에서 빈 텍스트 파일을 만듭니다.
  2. 아래의 XDR 스키마 정의를 파일에 추가하여 XML 문서의 문법을 설명합니다.
    <?xml version='1.0' encoding='utf-16'?>
    <Schema name="ProductSchema" 
            xmlns="urn:schemas-microsoft-com:xml-data"
            xmlns:dt="urn:schemas-microsoft-com:datatypes">
    
       <ElementType name="Product" content="eltOnly">
          <attribute type="ProductID" required="yes"/>
          <element type="ProductName"/>
       </ElementType>
    
       <AttributeType name="ProductID" dt:type="int"/>
       <ElementType name="ProductName" dt:type="string"/>
    </Schema>
  3. C:\MyFolder 디렉터리에 Product.xdr이라는 이름으로 파일을 저장합니다.
  4. 원본 Product.xml 파일을 열고 아래와 같이 XDR 스키마에 연결합니다.
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" xmlns="x-schema:Product.xdr"> 
       <ProductName>Rugby jersey</ProductName>
    </Product>
  5. 수정된 XML 문서를 ProductWithXDR.xml로 저장합니다.

XDR 스키마를 사용하여 XML 문서의 유효성 검사

  1. 아래와 같이 응용 프로그램을 수정하여 XmlTextReader가 ProductWithXDR.xml을 로드하도록 합니다.
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXDR.xml");
  2. 아래와 같이 ValidationTypeXDR로 설정하여 유효성 검사 판독기가 XDR 유효성 검사를 수행하도록 합니다.
    v.ValidationType = ValidationType.XDR;
  3. 응용 프로그램을 빌드하고 실행합니다. 응용 프로그램에서 XML 문서가 유효하다고 보고해야 합니다.
  4. ProductWithXDR.xml을 수정하여 유효하지 않게 만듭니다.
  5. 응용 프로그램을 다시 빌드하고 실행합니다. 그러면 유효성 검사 오류가 수신됩니다.

XSD 스키마 사용

XSD 스키마 만들기 및 XML 문서에 연결

  1. Visual Studio .NET에서 빈 텍스트 파일을 만듭니다.
  2. 아래의 XSD 스키마 정의를 파일에 추가하여 XML 문서의 문법을 설명합니다.
    <?xml version='1.0' encoding='utf-16'?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <xsd:element name="Product">
          <xsd:complexType>
             <xsd:sequence>
                <xsd:element name="ProductName" type="xsd:string"/>
             </xsd:sequence>
             <xsd:attribute name="ProductID" use="required" type="xsd:int"/>
          </xsd:complexType>
       </xsd:element>
    </xsd:schema>
  3. C:\MyFolder 디렉터리에 Product.xsd라는 이름으로 파일을 저장합니다.
  4. 원본 Product.xml을 열고 아래와 같이 XSD 스키마에 연결합니다.
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  5. 수정된 XML 문서를 ProductWithXSD.xml로 저장합니다.

XSD 스키마를 사용하여 XML 문서의 유효성 검사

  1. 아래와 같이 응용 프로그램을 수정하여 XmlTextReader가 ProductWithXSD.xml을 로드하도록 합니다.
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXSD.xml");
  2. 아래와 같이 ValidationTypeSchema로 설정하여 유효성 검사 판독기가 XSD 스키마 유효성 검사를 수행하도록 합니다.
    v.ValidationType = ValidationType.Schema;
  3. 응용 프로그램을 빌드하고 실행하여 XSD 스키마로 XML 문서의 유효성을 검사합니다.

XSD 스키마에서 네임스페이스 사용

  1. Visual Studio .NET에서 ProductWithXSD.xml을 엽니다.
  2. 문서에서 기본 네임스페이스 urn:MyNamespace를 선언합니다. 또한 아래와 같이 XSD 링크를 수정하여 XSD 스키마로 이 네임스페이스에 있는 내용의 유효성을 검사하도록 합니다.
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="urn:MyNamespace"
             xsi:schemaLocation="urn:MyNamespace Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  3. ProductWithXSD.xml에 대한 변경 내용을 저장합니다.
  4. Product.xsd를 열고 아래와 같이 스마트 태그 <xsd:schema>를 수정하여 스키마를 네임스페이스 urn:MyNamespace에 적용합니다.
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace="urn:MyNamespace"
                elementFormDefault="qualified">
  5. Product.xsd에 대한 변경 내용을 저장합니다.
  6. 응용 프로그램을 빌드하고 실행하여 XSD 스키마로 XML 문서의 유효성을 검사합니다.

네임스페이스 캐싱

  1. Visual Studio .NET에서 Class1.cs를 엽니다. 아래와 같이 Main 메서드의 시작 부분에 XmlSchemaCollection 개체를 만듭니다.
    XmlSchemaCollection cache = new XmlSchemaCollection();
  2. XmlSchemaCollection 개체를 사용하면 스키마를 메모리에 캐싱하여 성능을 향상시킬 수 있습니다. 각 스키마마다 다른 네임스페이스에 연결됩니다. 아래의 코드를 추가하여 Product.xsd를 캐싱합니다.
    cache.Add("urn:MyNamespace", "C:\\MyFolder\\Product.xsd");
  3. XmlValidatingReader 개체를 만드는 코드 다음에 다음 문을 추가하여 스키마 캐시가 XmlValidatingReader에 추가되도록 합니다. 그러면 판독기에서는 메모리 내의 스키마를 사용할 수 있게 됩니다.
    v.Schemas.Add(cache);

작동 여부 확인

  1. 응용 프로그램을 빌드하고 실행합니다.
  2. XML 문서가 XSD 스키마에 대해 여전히 유효한지 확인합니다.
  3. ProductWithXSD.xml을 수정하여 유효하지 않게 만듭니다.
  4. 응용 프로그램이 해당 유효성 검사 오류를 감지하는지 확인합니다.

속성

기술 자료: 307379 - 마지막 검토: 2002년 3월 14일 목요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Studio .NET 2002 Professional Edition
키워드:?
kbhowto kbhowtomaster KB307379

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com