<XML>
1. 개괄
- XML : eXtensible Markup Language
- 마크업 언어의 일종이다. 소프트웨어/하드웨어의 종류와 관계 없이 (어떤 OS를 쓰던 호환 가능) 데이터를 전송하고 저장하는 데에 사용할 수 있다.
- 즉, 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있게 해준다.
- 사용자 정의 태그이다. 즉, 사용자가 태그를 만들어서 사용할 수 있다. 그러므로 확장성이 좋다.
- XML을 기반으로 만들어진 언어: XTHML, SVG, RSS 등
- XML을 이용하는 프로그램: MyBatis, Spring, Kotlin, AJAX, React, Vue 등
- XML 표준: https://www.w3.org/TR/xml/ 참고
2. XML의 구조
- XML은 HTML과 마찬가지로 Tree 구조이다.
- 부모/자식/형제 관계 등 HTML과 전반적인 구조가 거의 동일하다.
이미지 출처: W3Schools.com
3. XML의 구성 요소
1) 요소 (element)
(1) 여는 태그, 닫는 태그
- HTML과 동일하게 여는 태그와 닫는 태그로 구성된다.
- 형식)
일반적: <여는태그 속성1="속성값" 속성2="속성 값" ... > 내용 </닫는 태그>
empty tag: <여는 태그 속성1="속성값" 속성2="속성 값" ... />
물론 속성과 속성값은 없을 수 있다.
(2) 빈 태그(empty tag)
- HTML에서 empty tag는 <br/>, <input/>, <img/>와 같이 속성으로 값을 지정하는 태그를 일컫는 말이다.
XML에서도 HTML과 같이 빈 태그들이 있다.
- 일반적 태그: <태그> 데이터 저장 </태그>
- empty tag: <태그 속성="데이터 저장"/> ← 태그 사이에 데이터가 없으니까 empty tag라고 부름.
(3) XML element naming 규칙
- 태그 이름은 대소문자를 구분한다.
- 태그 이름은 반드시 영문 혹은 '_'로 시작해야 한다.
- 태그 이름에는 영문/숫자/-/_/. 을 포함할 수 있다.
- 태그 이름은 공백을 포함할 수 없다.
2) 속성 (attribute)
(1) element 값으로 데이터를 주는 것과 속성 값으로 데이터를 주는 것의 차이?
- 즉, <element>값</element> vs <element 속성="값"></element> 두 방법의 차이?
ex) <coffee>Cafe Latte</coffee> vs <coffee type="Cafe Latte"></coffee>
: 딱히 없다.그냥 원하는대로 쓰면 된다.
다만, 속성은 여러개의 값을 가질 수 없고, 요소처럼 쉽게 확장이 불가능하다.
(2) 속성 naming 규칙
- XML 속성의 이름은 하나의 요소 내에서 중복되어서는 안 된다.
ex) <coffee type="Latte" type="Ice"/> // (X)
<coffee type="Latte" temp="Ice"/> // (O)
4. XML 사용
1) XML 선언
- XML 문서는 맨 첫줄에 <xml> 태그를 써서 이 문서가 XML 문서라는 것을 명시해야 한다. 이것을 XML 프롤로그(prolog)라고 부른다.
- <?xml version="XML 문서버전" encoding="문자셋" standalone="yes|no"?>
standalone: XML 문서가 DTD와 같은 외부 소스의 데이터에 의존하는지 아닌지를 XML 파서에 알려준다. 디폴트 값은 no이다.
2) DTD
- XML은 사용자 정의 태그로, 사용자가 자유롭게 원하는 태그를 만들 수 있다.
- XML에 어떤 태그를 사용할 지 미리 구조를 결정해둘 수 있는데, XML 구조를 작성할 때 DTD 또는 XML 스키마(XSD)를 사용한다.
- 즉, DTD(Document Type Definition, 문서 타입 정의)는 XML 문서의 요소(태그)와 속성을 정의하는 문서이다.
- DTD 선언 형식)
<!DOCTYPE 루트요소 DTD 식별자 [선언1 선언2 ...]>
XML에서 DTD는 위와 같이 <!DOCTYPE> 안에 선언된다.
- 예시)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
3) 주석: <!-- 주석 -->
- XML 태그 안에 주석 쓸 수 없음. 주의.
ex) <property name="username" value="hr"/> <!-- 주석 --> // (O)
<property name="username" <!-- 주석 --> value="hr"/> // (X). Error.
5. XML 문법
1) 최상위 태그를 가지고 있다.
ex) 위의 4.2) DTD 코드박스와 같은 <!DOCTYPE>을 가진 XML 문서는 최상위 태그가 <configuration> 이다.
2) 반드시 닫는 태그가 존재해야 한다.
- HTML은 문법이 엄격하지 않기 때문에 종료태그를 생략해도 (ex. <div><h1>제목</div>) 정상적으로 해석된다.
empty tag의 경우도 <여는 태그 속성="값"> 이렇게 닫는 태그를 쓰지 않아도 동작한다.
하지만, XML에서는 반드시 닫는 태그가 있어야 한다.
ex) <property></property>, <property name="이름"/>
3) 태그나 속성은 대소문자를 구분한다.
- 대소문자가 다르면 다른 태그, 다른 요소로 인식한다.
ex) <Coffee Type="Americano" type="Ice"></Coffee> → 'Type'과 'type'은 다른 속성이다.
<coffee Type="Americano" type="Ice"></coffee> → 위의 <Coffee>태그와 아래의 <coffee>태그는 다른 태그이다.
4) 속성값은 반드시 "" 큰따옴표 안에 써야 한다.
5) XML은 띄어쓰기를 인식한다.
ex) <h1>공 백 입 니 다</h1>
→ HTML: 공백입니다
→ XML: 공 백 입 니 다
6) 키워드(xml)는 사용할 수 없다.
6. XML Entity
- HTML과 마찬가지로 엔티티가 있다. 다만, HTML의 엔티티는 종류가 많은 반면 XML의 엔티티는 아래의 다섯가지 뿐이다.
기호 | 엔티티 | 설명 |
< | < | less than. ~보다 작은. |
> | > | greater than. ~보다 큰. |
& | & | ampersand. AND 기호. |
" | " | quotation. 인용부호. 큰 따옴표. |
' | ' | apostrophy. 작은 따옴표. |
'Programming > Etc' 카테고리의 다른 글
[Mac] 맥북 와이파이 연결 안 될 때 - "WPA2 암호가 필요합니다." (4) | 2020.06.27 |
---|---|
시간제 학교 비교 (서울사이버대 vs 방통대 vs 숭실사이버대) 및 후기 (0) | 2020.01.25 |