XML 문서
▪정형화된 XML 문서
루트 엘리면트 존재
엘리먼트는 시작태그와 종료 태그를 가짐
시작 + 종료
엘리먼트들은 서로 올바르게 중첩
▪유효한 XML 문서
-정형화된 문서 + XML로 정의된 특정 마크업 언어[DTD/XML Schema]에 의해 작성된 문서
▪XML 문서 구조
BNF
XML ::= 서두(prolog), (루트)엘리먼트, 기타(Misc)
서두 ::= XML 선언(XMLDecl)?, 문서 유형 선언(doctypedecl)?
?생략가능
기타부분 ::= 주석, PI, S(공백)
Misc ::= Comment | PI | S
엘리먼트 ::= 건텐트를 가질 수 있음, 컨텐트는 문자데이터, 자식 엘리먼트, 참조, CDATA Section, PI, 주석
[1]document ::=prologelementMisc
[22]prolog::=XMLDecl? Misc (doctypedecl Misc)? [23]XMLDecl ::=''
[27]Misc::=Comment | PI | S
[39]element::=EmptyElemTag | STag contentETag [WFC: Element Type Match][VC: Element Valid]
I(또는) STag시작 ETag끝 이름이 같아야함.
[43]content::=CharData? ((element| Reference | CDSect | PI | Comment) CharData?)
CharData문자데이터
*여러개
element
<booklist>시작태그 , 포함관계/중첩
<book id="b1" kind="k2"> book element , id/kind 속성 bookist 사이 content
<title>XML 기초서</title>
<author>신민철</author>
<publisher>프리렉</publisher>
</book>
<book id="b2" kind="k1">
<title>가을엔사랑을느끼세요</title>
<author>이사랑</author>
<publisher>가을문화사</publisher>
</book>
</booklist>끝태그코드를 입력하세요
booklist element
그 사이는 content
bool element
▪XML 선언(declaration)
-XML문서임을 명시적으로 표현
-XML 문서의 첫 줄 [주석문 먼저X]
-‘<?’와 ‘xml’ 문자열 사이에 공백 X
ML 선언부
속성
(1) version
“1.0” ‘1.1’ 1.0많이 씀, 큰따옴표나 작은따옴표
(2)encoding
UTF-8
(3)standalone
외부에 정의된 DTD문서의 참조 필요 여부를 표시
default: no
독립적이니? 독립적 = 외부 필요 없음
yes-> DTD 필요없다.
XML 문서 인코딩
-XML 권고안 XML 문서 유니코드 UTF-8방식
참고:Character Encoding
문자코드: 문자->숫자 1:1로 저으이
예) 아스키- 영문자
KS C 5601: 한글. 2바이트 16비트를 사용해서 문자 표현
KS C 5636: 아스키 코드와 동일하나 역슬래시를 원화기호로 대체
EUC-KR: KS C5601 + KS C 5636 /영문자 1byte, 한글 2byte
유니크: 여러 언어의 인코딩 체계
유니코드 평면: 유니코드는 0번~16번까지 17개의 평면 , 각 평면읜 2^16개 코드 구성
기본 다국어 평면:
유니코드의 첫 번째 평면으로, U+0000부터 U+FFFF까지의 영역을 차지함.
거의 모든 근대 문자와 특수 문자가 표함
대부분은 한중일 통합 한자와 한글(U+AC00(가) ~ U+D7A3(힣))
그림 각 칸 문자 256개
검정 = 로마자
빨강 = 동아시아에서 쓰이는 문자
밝은 빨강 = 한중일 통합 한자
UTF-16
기본다국어평면은 그대로 2byte 값으로 인코딩함
나머지 평면들은 4byte 값으로 인코딩
영어 이외의 문자로 구성된 문서의 경우 UTF-8보다 크기를 줄일 수 있음
-UTF-8
가변길이 인코딩 방식(1byte~4byte)
기본다국어평면에서 영어는 기존 아스키문자코드를 그대로 사용(1byte)
나머지 문자들은 2~3byte로 인코딩함(한중일 문자:3byte)
보조 다국어 평면:
보조 상형 문자 평면: 대, 갑골
XML Element
루트 엘리먼트를 가짐
시작태그와 끝태그 한 쌍
시작태그와 끝태그 사이에는 엘리먼트의 내용으로 문자 데이터나 자식 엘리먼트 등이 올 수 있음
엘리먼트는 부가적인 정보를 나타내는 속성을 가질 수 있음.
PLAY정보
play element 검정 play content
act content 빨강
scene element 파랑 블록 content
title의 content Intro
POSTER 시작태그이자 종료태그
이미지 속성
엘리먼트의 종류
(1)내용을 갖는 엘리먼트
-문자 데이터나 자식 엘리먼트를 갖는 엘리먼트
//부모
자연과 인간//자식
(2)내용이 없는 빈 엘리먼트
-문자 데이터나 자식 엘리먼트를 갖지 않는 엘리먼트
보통 이름 속성 가짐
xml이름작성규칙
1. 시작
문자 (o), 숫자 . (x)
2. 두 번째 숫자 - . (o)
3. 공백(x)
4. : 가능하나 네임스페이스 관련 기호라 사용 권장x
5. 대소문자 구별
6. xml XML로 시작X
▪엘리먼트의 내용
문자 데이터
자식 엘리먼트
엔티티 또는 문자 참조
CDATA 섹션 프로세싱 지시자
주석
공백 문자열
자식 엘리먼트
-자식 엘리먼트를 포함할 수 있음
문자데이터
-XML프로세스가 해석할 수 있는 내용 중에서 마크업을 제외한 부분
예)<> 시작태그, xml 선언 등
▪문자 데이터 내에에는 & < 문자 사용할 수 없음
개체참조
문자참조
-문자코드 값을 직접 사용하여 문자를 나타냄
-특수기호나 특수만자를 사용할 때 유용
CDATA Section => xml 파서가 해석하지 않고 바로 전달
‘속성
-엘리먼트 부가적 정보 데이터 표현
-하나의 엘리면트 여러 속성 가능
주의 사항
– 속성은 반드시 속성 값을 가져야 함
▪ 빈 문자열을 포함할 수도 있음 (“”)
– 속성값은 큰 따옴표(“)나 작은 따옴표(‘)를 사용해야 함
– 속성명 부여 방법은 엘리먼트의 태그명 부여 방법과 동일
▪ 대소문자를 구별
▪ ‘xml'이라는 문자열로 시작할 수 없음
▪ 숫자로 속성명을 시작할 수 없음
– 한 엘리먼트에 같은 이름의 속성을 두 개 이상 선언할 수 없음
주석문 <!-- -->
처리 명령어
처리 방법 지시함
형식
예:CSS, XSL
처리명령어
PI는 XML 문서의 어디든지 삽입할 수 있음
단. 마크업 내X
일반적으로 문서의 서두 부분
실습
XML Perspective
내장된 XML 예제 생성
XML 문서 편집
Source/Desgin 탭
XML 스키마 편집
DTD: 편집창과 Outline 뷰, Properties 뷰 이용
XML Schema: Source/Design탭, Outline 뷰, Properties 뷰 이용
편집으로는 가운데 편집창
오른쪽 상단 perspective 창열기. 열려있는 걸을 나타내는
오른쪽 키
Open Perspective – XML
invoice 주문서, 송장 같은
dtd 문법 정의 invoice 구조 정함
invoice.틔
선언
Invoice.dtd에 맞게 했는지
Invioce는 header라는 자식 element
date 날짜정보
월일년 문자데이터
header 속성가짐