반응형
Web Development · XML
XML 구조 —
의미적 태그 + 사용자 정의 완전 정리
데이터를 자기설명적으로 묶는 자료구조 언어
시작 오늘 분석할 코드
HTML이 화면 표시용이라면 XML은 데이터 구조용이다. 같은 학생 정보를 XML로 표현하면 어떤 모습일까.
<?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet type="text/css" href="student2.css"?> <studentinfo> <student_heading> <major>전공</major> <name>이름</name> <age>나이</age> <gender>성별</gender> </student_heading> <student> <major>컴퓨터학과</major> <name>홍길동</name> <age>25세</age> <gender>남</gender> </student> <student> <major>철학과</major> <name>홍리라</name> <age>21세</age> <gender>여</gender> </student> </studentinfo>
트리 구조로 본 XML
studentinfo ├── student_heading │ ├── major: 전공 │ ├── name: 이름 │ ├── age: 나이 │ └── gender: 성별 ├── student │ ├── major: 컴퓨터학과 │ ├── name: 홍길동 │ ├── age: 25세 │ └── gender: 남 └── student ├── major: 철학과 ├── name: 홍리라 ├── age: 21세 └── gender: 여
용어 핵심 키워드
XMLeXtensible Markup Language — 데이터 구조화
선언문<?xml ?> — 버전과 인코딩 명시
사용자 정의 태그<major>, <name> 등 — 임의 명명
루트 요소하나만 — 본 코드는 studentinfo
중첩태그 안에 태그 — 트리 구조
xml-stylesheetCSS 연결 — XML도 표시 가능
1 XML과 HTML — 같은 듯 다른 듯
HTML
- 태그가 고정 — div, p, span...
- 화면 표시 목적
- 의미보다 모양
- 닫는 태그 일부 생략 가능
XML
- 태그가 자유 — 사용자 정의
- 데이터 구조화 목적
- 의미가 명확 (자기설명적)
- 닫는 태그 반드시 필수
💡 한 줄 요약 — HTML은 "어떻게 보일지"를 적고, XML은 "이게 무엇인지"를 적는다.
2 선언문 — <?xml ?>
XML 파일의 가장 위 한 줄은 항상 선언문이다.
<?xml version="1.0" encoding="utf-8" ?>
version="1.0"— 거의 모든 XML이 이 버전encoding="utf-8"— 한글, 특수문자를 표현할 인코딩- 물음표(
?)로 감싸 일반 태그와 구분
3 사용자 정의 태그 — 자기설명적
HTML은 <div> 같이 의미 없는 태그를 쓴다. XML은 내용에 맞게 태그를 만들 수 있다.
// 같은 데이터, HTML식 <div class="name">홍길동</div> // XML식 — 태그 자체가 의미 <name>홍길동</name>
이게 "자기설명적(self-describing)"의 의미다 — 태그만 봐도 무엇인지 안다. 다른 시스템(서버, 앱)에 전달해도 의미가 보존된다.
4 루트 요소 — 정확히 하나
XML은 최상위에 단 하나의 요소만 허용한다. 본 코드의 <studentinfo>가 그것이다.
// ⭕ 정상 — 루트 하나 <studentinfo> <student/> <student/> </studentinfo> // ❌ 오류 — 루트 두 개 <student/> <student/>
반응형
5 엄격한 문법
HTML은 관대하다 (<br> 닫기 생략 OK). XML은 엄격하다.
- 모든 태그를 반드시 닫아야 한다 —
<tag>...</tag>또는<tag/> - 대소문자 구분 —
<Name>과<name>은 다른 태그 - 속성 값은 따옴표 필수 —
id="1"(id=1 안 됨) - 중첩 순서 정확히 —
<a><b></a></b>안 됨
⚠ 한 가지라도 어기면 파싱 실패 — 브라우저는 빨간 에러를 띄우고 표시 안 한다. HTML과 가장 큰 차이.
6 XML에 CSS 적용
XML도 CSS로 화면 표시가 가능하다 — <?xml-stylesheet?>로 연결한다.
<?xml-stylesheet type="text/css" href="student2.css"?>
다만 이건 드물게 쓰는 패턴이다. 보통 XML은 데이터 교환용이고, 화면 표시는 변환 후 HTML이 한다.
7 XML이 어디에 쓰이는가
- 설정 파일 — Maven pom.xml, Spring 설정, Android AndroidManifest.xml
- RSS 피드 — 블로그·뉴스 구독 형식
- SOAP API — 기업용 웹 서비스
- Office 파일 내부 — .docx, .xlsx는 사실 XML zip
- SVG — 벡터 이미지도 XML 기반
8 XML vs JSON
| 구분 | XML | JSON |
|---|---|---|
| 크기 | 크다 (태그 두 번) | 작다 (간결) |
| 가독성 | 좋음 (자기설명) | 좋음 (간결) |
| JS 호환 | 파싱 필요 | JSON.parse 한 줄 |
| 스키마 | XSD로 강력 | JSON Schema (옵션) |
| 모던 사용 | 레거시 / 엔터프라이즈 | 웹 API의 표준 |
⚙ 현대 웹은 거의 JSON을 쓴다. XML은 레거시·엔터프라이즈 시스템·설정 파일에 남아 있다.
9 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| 닫는 태그 누락 | 파싱 실패 | 모든 태그 닫기 |
| 루트 요소 두 개 | 오류 | 하나로 감싸기 |
| 속성에 따옴표 없음 | 오류 | id="1" 형태 |
| 대소문자 혼용 | 다른 태그로 인식 | 일관되게 |
| 특수문자 그대로 | < > & 파싱 충돌 | < > & 사용 |
핵심 한 줄 요약
XML데이터 구조화 언어 — 자기설명적 태그
사용자 정의 태그<name>, <major> 임의로 명명
루트 하나최상위 요소 정확히 하나
엄격한 문법닫기 / 따옴표 / 대소문자 / 중첩
선언문 ?xml?version + encoding 명시
대안현대 웹은 JSON 우세
반응형
'php' 카테고리의 다른 글
| XML 외부 CSS — block 레벨, 사용자 정의 태그 완전 정리 (0) | 2026.06.11 |
|---|---|
| CSS 외부 스타일시트 — th { background-color } 완전 정리 (0) | 2026.06.11 |
| HTML 학생 정보 테이블 — 외부 CSS 연결 완전 정리 (0) | 2026.06.11 |
| jQuery Mobile 도서 관리 앱 — multi-page + WebSQL 완전 정리 (0) | 2026.06.11 |
| PHP form + confirm + view — 3단계 폼 처리 완전 정리 (0) | 2026.06.11 |
왕진 블로그

댓글