-
XSD (XML Schema Definition language)EDI 관련 기술 용어 2022. 9. 23. 10:30
XML과 XPath에 이어, XSD에 대해 알아보도록 하겠습니다.
XML에 대한 내용은 아래 포스팅에서 확인해주시면 됩니다!
(XPath도 궁금하시다면 아래 링크를 클릭해주세요↓)
XSD 정의
XSD는 XML Schema Definition language의 약자로 확장성 마크업 스키마 정의 언어라고 합니다.
줄여서 XML 스키마 정의라고도 합니다.
XML(확장성 마크업 언어) 기반으로 문서 구조와 각 구성 요소의 마크업을 원하는 대로 정의할 수 있어, 데이터 검증과 재사용이 용이한 스키마 언어입니다.
기존 XML 문서형 정의(DTD: Document Type Definition) 언어의 단점을 보완한 스키마 언어로 국제 웹 표준화 단체인 월드 와이드 웹 컨소시엄(W3C: World Wide Web Consortium)에서 개발했습니다.
스키마 요소
요소 선언(Element declarations)
요소 선언이란 요소의 속성(properties)을 정의하는 것으로, 요소 이름과 대상 네임스페이스를 포함합니다.
요소의 종류(type)가 중요한 속성으로, 요소가 어떤 속성과 자식(children)을 가질 수 있는 지를 제한합니다.
요소는 대체 그룹(substitution group)에 속할 수 있으며, 요소는 무결성 조건(integrity constraints)을 가질 수 있습니다.
속성 선언(Attribute declarations)
속성의 속성을 정의하는 것으로, 속성 이름과 대상 네임스페이스를 포함합니다.
속성의 타입은 속성이 가질 수 있는 값을 제한합니다.
속성 선언에 기본값을 지정하거나, 값을 고정할 수 있습니다.
다른 더 특수화된 구성요소들로 주석(annotations), 표명(assertions), 표기법(notations), 스키마 전체에 대한 정보를 포함하는 스키마 구성요소(schema component)가 있습니다.
네임스페이스(namespace)
모든 이름이 달린 스키마 구성 요소는 대상 네임스페이스에 속하며, 그 대상 네임스페이스는 스키마 문서 전체의 속성 중 하나입니다.
스키마 문서는 네임스페이스가 같은 다른 스키마 문서를 포함할 수 있습니다.
또한 다른 네임스페이스의 스키마 문서를 불러 올 수 있습니다.
XSD가 필요한 이유
기존 XML 문서 구조를 정의할 때 사용된 XML DTD(XML Document Type Definition)는 XML 문법과 다르기 때문에 DTD 문법에 대한 별도의 지식이 필요하고, 텍스트 형태의 데이터 유형(data type)만을 사용해야 한다는 제한이 있습니다.
DTD는 데이터 유효성 검증이 어렵고, 새로운 데이터 타입을 추가로 정의하거나 재사용하기 어렵다는 단점이 있습니다.
하지만 XSD는 DTD의 단점을 보완해주는 강력한 대안입니다.
1. 데이터 유형 지원
XSD는 데이터 유형을 지원합니다.
따라서 허용되는 문서 내용을 설명하는 것이 더 쉽고, 데이터의 정확성을 검증하기도 쉽습니다.
데이터에 대한 제한 사항을 정의하거나, 데이터 패턴을 정의하는 것이 쉽습니다.
또한 서로 다른 데이터 유형 간에 데이터를 변환하는 것이 더 쉽습니다.
2. XML 구문 사용
XSD는 XML로 작성되기 때문에 새로운 언어를 배울 필요없이, XML 편집기를 사용하여 스키마 파일을 편집할 수 있습니다.
또한 XML로 작정되었기 때문에 확장도 가능합니다.
확장 가능한 XSD를 사용하면 다른 스키마에서 스키마를 재사용할 수도 있고, 표준 유형에서 파생된 고유한 데이터 유형을 생성하기도 합니다.
또한 동일한 문서에서 여러 스키마를 참조할 수도 있습니다.
따라서 XSD를 사용하면, 개발자는 원하는 문서 구조와 마크업을 보다 쉽게 정의하고 다양하게 활용할 수 있습니다.
[참고 자료]
'EDI 관련 기술 용어' 카테고리의 다른 글
SSL/TLS (0) 2022.10.14 REST와 SOAP 비교 (1) 2022.10.07 XPath (0) 2022.09.16 HTML (Hypertext Markup Language) (0) 2022.09.02 JSON (JavaScript Object Notation) (0) 2022.08.26