.NET/XML.NET

[XML.NET C# 소스] XmlSchema 클래스로 XML 스키마 파일 작성

언제나휴일 2016. 4. 18. 16:04
반응형

 XmlSchema 클래스로 XML 스키마 파일 작성


Program.cs


static void Main(string[] args)

 {

    XmlSchema schema = new XmlSchema();

 

    // <xs:element name="book" type="string"/>

    XmlSchemaElement elem_book = new XmlSchemaElement();

    schema.Items.Add(elem_book);

    elem_book.Name = "book";

    elem_book.SchemaTypeName =

        new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

 

    // <xs:element name="albumn" type="string"/>

    XmlSchemaElement elem_albumn = new XmlSchemaElement();

    schema.Items.Add(elem_albumn);

    elem_albumn.Name = "albumn";

    elem_albumn.SchemaTypeName =

        new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

 

    // <xs:element name="contents">

    XmlSchemaElement elem_contents = new XmlSchemaElement();

    schema.Items.Add(elem_contents);

    elem_contents.Name = "contents";

 

    // <xs:complexType>

    XmlSchemaComplexType complexType = new XmlSchemaComplexType();

    elem_contents.SchemaType = complexType;

 

    // <xs:choice minOccurs="0" maxOccurs="unbounded">

    XmlSchemaChoice choice = new XmlSchemaChoice();

    complexType.Particle = choice;

    choice.MinOccurs = 0;

    choice.MaxOccursString = "unbounded";

 

    // <xs:element ref="book"/>

    XmlSchemaElement ref_book = new XmlSchemaElement();

    choice.Items.Add(ref_book);

    ref_book.RefName = new XmlQualifiedName("book");

    // <xs:element ref="albumn"/>

    XmlSchemaElement ref_albumn = new XmlSchemaElement();

    choice.Items.Add(ref_albumn);

    ref_albumn.RefName = new XmlQualifiedName("albumn");

 

    XmlSchemaSet schemaSet = new XmlSchemaSet();

    schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne);

    schemaSet.Add(schema);

    schemaSet.Compile();

 

    XmlSchema compiledSchema = null;

    foreach (XmlSchema schema1 in schemaSet.Schemas())

    {

        compiledSchema = schema1;

    }

    XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());

    nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");

    FileStream fs = new FileStream("data.xsd",FileMode.Create);

    compiledSchema.Write(fs);

    fs.Close();

}

public static void ValidationCallbackOne(object sender, ValidationEventArgs args)

{

    Console.WriteLine(args.Message);

}

[소스] XML 스키마 파일 작성 예제 코드


 다음은 예제 코드로 만들어진 "data.xsd" 파일의 내용입니다.

 

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="book" type="xs:string" />

  <xs:element name="albumn" type="xs:string" />

  <xs:element name="contents">

    <xs:complexType>

      <xs:choice minOccurs="0" maxOccurs="unbounded">

        <xs:element ref="book" />

        <xs:element ref="albumn" />

      </xs:choice>

    </xs:complexType>

  </xs:element>

</xs:schema>

[문서 ] data.xsd 문서 내용


언제나 휴일 티스토리 바로가기

무료 동영상 강의 유튜브 채널 바로가기

반응형