XML 스키마 자습서
XML 스키마란 무엇입니까?
XML 스키마는 XML 문서의 구조를 설명합니다.
XML 스키마 언어는 XSD(XML 스키마 정의)라고도 합니다.
XSD 예
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML 스키마의 목적은 XML 문서의 법적 빌딩 블록을 정의하는 것입니다.
- 문서에 나타날 수 있는 요소 및 속성
- 자식 요소의 수(및 순서)
- 요소 및 속성의 데이터 유형
- 요소 및 속성의 기본값 및 고정 값
왜 XML 스키마를 배우는가?
XML 세계에서는 수백 가지의 표준화된 XML 형식이 매일 사용됩니다.
이러한 XML 표준의 대부분은 XML 스키마에 의해 정의됩니다.
XML 스키마는 DTD에 대한 XML 기반(그리고 더 강력한) 대안입니다.
XML 스키마는 데이터 유형을 지원합니다.
XML 스키마의 가장 큰 장점 중 하나는 데이터 유형에 대한 지원입니다.
- 허용되는 문서 내용을 설명하는 것이 더 쉽습니다.
- 데이터의 정확성을 검증하는 것이 더 쉽습니다.
- 데이터 패싯(데이터에 대한 제한 사항)을 정의하는 것이 더 쉽습니다.
- 데이터 패턴(데이터 형식)을 정의하는 것이 더 쉽습니다.
- 서로 다른 데이터 유형 간에 데이터를 변환하는 것이 더 쉽습니다.
XML 스키마는 XML 구문을 사용합니다.
XML 스키마의 또 다른 큰 장점은 XML로 작성된다는 것입니다.
- 새로운 언어를 배울 필요가 없다
- XML 편집기를 사용하여 스키마 파일을 편집할 수 있습니다.
- XML 파서를 사용하여 스키마 파일을 구문 분석할 수 있습니다.
- XML DOM을 사용하여 스키마를 조작할 수 있습니다.
- XSLT를 사용하여 스키마를 변환할 수 있습니다.
XML 스키마는 XML로 작성되었기 때문에 확장 가능합니다.
확장 가능한 스키마 정의를 사용하여 다음을 수행할 수 있습니다.
- 다른 스키마에서 스키마 재사용
- 표준 유형에서 파생된 고유한 데이터 유형 생성
- 동일한 문서에서 여러 스키마 참조
XML 스키마 보안 데이터 통신
발신자에서 수신자에게 데이터를 보낼 때 두 부분이 내용에 대해 동일한 "기대"를 가져야 합니다.
XML 스키마를 사용하여 발신자는 수신자가 이해할 수 있는 방식으로 데이터를 설명할 수 있습니다.
"03-11-2004"와 같은 날짜는 일부 국가에서는 3.November로 해석되고 다른 국가에서는 11.March로 해석됩니다.
그러나 다음과 같은 데이터 유형을 가진 XML 요소:
<date type="date">2004-03-11</date>
XML 데이터 유형 "날짜"에는 "YYYY-MM-DD" 형식이 필요하기 때문에 내용의 상호 이해를 보장합니다.
잘 형성된 것만으로는 충분하지 않습니다
잘 구성된 XML 문서는 다음과 같은 XML 구문 규칙을 준수하는 문서입니다.
- XML 선언으로 시작해야 합니다.
- 하나의 고유한 루트 요소가 있어야 합니다.
- 시작 태그에는 일치하는 종료 태그가 있어야 합니다.
- 요소는 대소문자를 구분합니다
- 모든 요소를 닫아야 합니다.
- 모든 요소는 적절하게 중첩되어야 합니다.
- 모든 속성 값은 따옴표로 묶어야 합니다.
- 엔터티는 특수 문자에 사용해야 합니다.
문서가 제대로 구성되어 있더라도 여전히 오류가 포함될 수 있으며 이러한 오류는 심각한 결과를 초래할 수 있습니다.
다음 상황을 생각해 보십시오. 5대의 레이저 프린터 대신 총 5대의 레이저 프린터를 주문합니다. XML 스키마를 사용하면 이러한 오류의 대부분은 유효성 검사 소프트웨어에서 포착할 수 있습니다.