본문 바로가기

Back/XML

XML 간단하게 알아보기 - 6 (XML Schema Definition)

DTD 외에도 XML Schema Definition 으로 데이터 타입을 정의할 수 있다.

XSD 확장자로 선언된다.

 

현업이든 다양한 예시 파일이든, 주로 DTD 보다는 XSD 방식으로 선언하는데,

DTD 방식에는 치명적인 단점이 몇 존재하기 때문이다.

 

  • 제한된 타입만 지원 (#PCDATA, #CDATA 등)
  • 네임스페이스 미지원
  • XML 문법이 아닌 별도의 DTD 문법을 사용해야 함.
  • 재사용 및 확장이 불가능.

 

딱 이 정도 단점을 보완한 것이 XSD 방식이다.

 

  • 정수, 문자열 등 다양한 타입을 지원
  • 네임스페이스 지원
  • XML 문법을 사용
  • 재사용 및 확장이 가능

 

구체적인 예시는 다음을 보자.

 

<!-- League.xsd -->
   
<xs:element name="league">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="position" type="xs:string"/>
            <xs:element name="name" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>

 

알아볼 용어가 좀 많다. 역시 다양한 기능을 지원할수록 문법이 복잡해지는 것은 어쩔 수 없나 보다...

간단하게 알아보자.

 

xs는 xml schema의 축약어다.

complexType은 data type을 여럿 보유했다는 의미다.

sequence는 배열을 뜻한다.

element는 xml element를 뜻하며, name은 식별자, type은 여러 언어에서 사용하는 그 언어 타입을 뜻한다.

 

여기서 XML 문서에 적용하는 방법까지 알아보기에는,

DTD 양식과는 다르게 알아야만 할 것이 참 많다.

실제로도 엄청나게 많이 볼 양식이므로 (적어도 스프링을 사용한다면 그렇다) 다음 편에서 세부적인 내용을 알아보자.

 

이 편에서는 XML Schema가 무엇이고, 타입은 어떻게 선언하는지.

확장자가 xsd이며 왜 dtd 대신 사용하는지.

그 정도만 알면 충분하다.