[웹 서비스 개발] XML Schema - (1)

김광일·2024년 9월 27일

웹 서비스 개발

목록 보기
13/45
post-thumbnail

1. XML Schema

[1-1] XML Schema란?

: XML 문서의 구조를 설명하는 역할을 한다.

  • XML 스키마 언어는 XSD(XML Schema Definition)라고도 한다.

[1-2] XML와 XSD 예시

0) 코드

(1) note.xml
<?xml version="1.0"?>
<note
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="note.xsd">
  <to>Eugene</to>
  <from>Brown</from>
  <heading>Dinner Appointment</heading>
  <body>6 PM at Pine Hill</body>
</note>
  • note : XML 문서의 루트 요소로, note라는 이름을 가진 요소입니다.
  • xmlns:xsi : XML Schema 인스턴스 네임스페이스를 정의한다
    • . xsi는 XML 스키마의 인스턴스와 관련된 속성을 사용할 때 사용하는 접두사이다.
  • xsi:noNamespaceSchemaLocation : 이 속성은 XML 문서가 유효성 검사를 받을 스키마의 위치를 지정한다.
    • 여기서는 note.xsd라는 파일을 참조하고 있다.
    • 이 파일은 스키마의 정의가 포함된 외부 파일이다.
(2) note.xsd
<?xml version="1.0" encoding="UTF-8"?>
<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>

1) XML 선언

<?xml version="1.0" encoding="UTF-8"?>
  • XML 문서의 버전(1.0)과 인코딩 방식(UTF-8)을 지정한다.

2) 스키마 선언

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  • xs:schema : XSD 문서의 루트 요소로, XML 스키마의 시작을 나타낸다.
  • xmlns:xs : XML Schema 네임스페이스를 정의한다.
    • xs는 XML 스키마의 접두사로, XSD 문서 내에서 사용되는 모든 요소가 이 네임스페이스에 속함을 의미한다.

3) note 요소 정의

<xs:element name="note">
  • xs:element: XML 문서 내에서 사용할 수 있는 요소를 정의한다.
  • name="note": 요소의 이름을 note로 지정한다.

4) 복합 타입 정의

<xs:complexType>
    <xs:sequence>
  • xs:complexType: 요소가 복합 타입(하위 요소를 가질 수 있는 타입)임을 나타낸다.
  • xs:sequence: 하위 요소들이 반드시 정의된 순서대로 나타나야 함을 의미한다.

5) 하위 요소 정의

<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:elementnote 요소의 하위 요소들을 정의한다.
    • name: 요소의 이름을 지정한다.
    • type: 요소의 데이터 타입을 지정한다. 여기서는 모두 xs:string으로, 문자열 데이터를 나타낸다.

6) 요약

: 이 XML 스키마는 note라는 요소를 정의하며, 그 안에는 to, from, heading, body라는 네 개의 문자열 타입의 하위 요소가 순서대로 포함되어야 한다. 이 스키마를 사용하여 XML 문서가 올바른 구조를 따르고 있는지 검증할 수 있다.

[3] XSD validato 사이트

: https://www.freeformatter.com/xml-validator-xsd.html

[4] W3C Schema

  • XML 문서 내의 구조와 데이터를 모두 기술하고 제약한다.
  • DTD 사용을 대체하기 위해 존재한다.
  • 표준 XML 코딩 스타일을 사용한다.
  • 데이터를 보다 복잡한 데이터로 제한하는 데 사용된다.
  • 정보 유형에 대한 훨신 더 많은 제어 기능을 제공한다.

[5] XML Schema의 목적

: XML 문서의 법적 빌딩 블록을 정의하는 것이다.

  • 문서에 나타날 수 있는 요소 및 속성
  • 자식 요소의 수 (및 순서)
  • 요소 및 속성의 데이터 유형
  • 요소 및 속성의 기본값 및 고정값

[6] XML Schema게 자공하는 기본 데이터 유형

  • xs : string
  • xs : decimal
  • xs : integer
  • xs : boolean
  • xs : date
  • xs : time

[7-1] fixed

: 요소의 값을 고정시키고, 정의된 고정값으로만 설정할 수 있고, 다른 값으로 변경할 수 없다.

1) 예시

: title이라는 이름의 element는 'fixedValue'라는 고정값을 가진다.

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="workProgress">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string" fixed="fixedValue" />
        <xs:element name="phase" type="xs:string" />
        <xs:element name="importance" type="xs:decimal" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

[7-2] default

: 요소에 대한 기본값을 정의한다. 이 기본값을 해당 요소가 명시적으로 지정되지 않은 경우 사용된다.

1) 예시

: title이라는 이름의 element는 'defaultValue'라는 기본값을 가진다.

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="workProgress">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string" default="defaultValue" />
        <xs:element name="phase" type="xs:string" />
        <xs:element name="importance" type="xs:decimal" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글