티스토리 뷰
Spring 설정을 XML을 하다보면 schemaLocation과 namespace 같은 낯선 속성들을 마주치게 됩니다. 이 글에서는 이 두 개념이 무엇을 의미하는지, 그리고 왜 필요한지 간단한 예제를 통해 정리해보겠습니다.
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 태그 안에 name과 age가 순서대로 포함되어야 하며,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:table과 f:table은 태그 이름은 같지만, 각각 HTML과 가구(furniture) 도메인에 속한 서로 다른 개념입니다.
결론
- XSD는 XML 문서의 형식과 규칙을 정의해주는 설계도
- Namespace는 여러 태그가 섞여 있는 XML 문서에서 태그를 명확히 구분하는 방법
이 두 개념은 XML을 안정적으로 작성하고 읽기 위해 꼭 필요한 핵심 개념입니다.
Spring 설정 파일에서도 <beans>, <context:component-scan> 등의 태그는 각각 다른 네임스페이스를 통해 정의되고 있으며, 이 네임스페이스와 연결되는 XSD를 xsi:schemaLocation으로 명시하고 있습니다.
'라이브러리&프레임워크 > Spring' 카테고리의 다른 글
| AOP란? (0) | 2025.05.02 |
|---|---|
| CustomException 설계와 Spring 예외 처리 전략 (0) | 2025.04.25 |
| Spring 데이터 영속성 예제 (0) | 2025.04.07 |
| MVC 구조 웹 애플리케이션 개발 (0) | 2025.03.23 |
| Spring Framework 주요 모듈 (0) | 2025.03.23 |
