티스토리 뷰

Spring 설정을 XML을 하다보면 schemaLocationnamespace 같은 낯선 속성들을 마주치게 됩니다. 이 글에서는 이 두 개념이 무엇을 의미하는지, 그리고 왜 필요한지 간단한 예제를 통해 정리해보겠습니다.

XSD란?

XSD(XML Schema Definition) 는 XML 문서의 구조, 데이터 타입, 태그 순서 등을 정의한 일종의 "설계도"입니다. XML은 문법만 맞으면 어떤 태그든 자유롭게 작성할 수 있기 때문에, 의도한 대로 작성되지 않으면 데이터 의미가 왜곡될 수 있습니다. 이를 방지하기 위해 XSD를 사용하여, XML 문서가 어떤 구조와 형식, 타입을 따라야 하는지 명시할 수 있습니다.

XSD 예시

<!-- XSD 예시 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="person">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string"/>
        <xs:element name="age" type="xs:integer"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

이 XSD는 person 태그 안에 nameage가 순서대로 포함되어야 하며,
name은 문자열, age는 정수여야 함을 명확히 정의합니다.

<person>
  <name>Junyoung</name>
  <age>30</age>
</person>

namespace란?

Namespace는 XML 문서에서 태그 이름의 충돌을 방지하기 위한 접두어 입니다. XML에서는 사용자가 원하는 태그를 자유롭게 만들 수 있기 때문에 다른 사용자(시스템)가 만들어 놓은 태그를 사용하는 경우 이름이 우연히 같을 수 있습니다. 이를 해결하기 위해 태그에 고유한 네임스페이스 접두어(prefix) 를 붙여 같은 이름의 태그라도 서로 다른 의미로 사용할 수 있습니다.

namespace 예시

<root xmlns:h="http://www.w3.org/TR/html4/"
      xmlns:f="http://www.w3schools.com/furniture">

  <h:table>
    <h:tr>
      <h:td>HTML 테이블입니다</h:td>
    </h:tr>
  </h:table>

  <f:table>
    <f:name>책상</f:name>
    <f:width>80</f:width>
  </f:table>

</root>

여기서 h:tablef:table은 태그 이름은 같지만, 각각 HTML과 가구(furniture) 도메인에 속한 서로 다른 개념입니다.

결론

  • XSD는 XML 문서의 형식과 규칙을 정의해주는 설계도
  • Namespace는 여러 태그가 섞여 있는 XML 문서에서 태그를 명확히 구분하는 방법

이 두 개념은 XML을 안정적으로 작성하고 읽기 위해 꼭 필요한 핵심 개념입니다.
Spring 설정 파일에서도 <beans>, <context:component-scan> 등의 태그는 각각 다른 네임스페이스를 통해 정의되고 있으며, 이 네임스페이스와 연결되는 XSD를 xsi:schemaLocation으로 명시하고 있습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함