XML 문서 작성 방법

Download Report

Transcript XML 문서 작성 방법

XML 문서 작성 방법
2008.9.2
최진명
XML 문서의 종류
• 잘 짜인 문서(Well-Formed XML
Document)
– XML 1.0 권고안에 언급되어 있는 문법(Spec)을 잘
지켜서 작성된 문서
– 시작태그와 끝 태그가 있어야 함
– 반드시 하나의 루트 element가 있어야 함
– 영역 중복이 없어야 함
– 속성값은 반드시 따옴표로 지정
XML 문서의 종류
• 유효한 문서(Valid Document)
– Well-formed 문서이면서
– XML로 개발된 특정 마크업 언어에 맞게 작성
된 문서
• 구조를 정의한 문서(DTD, Schema)와 일치
EBNF
EBNF 문법:
기호 ::= 표현식 (symbol ::= Expression)
패턴 결합:
A?
A표현이 올 수도 안 올 수도 있음(옵션)
A B
A표현이 먼저 오고 B표현이 나중에 옴(순차)
A|B
A와 B 표현 중 하나만 와야 함(선택)
A-B
A표현이 와야 되지만 B표현과는 일치되지 않아야 함
A+
A표현이 최소한 한 개 이상이 와야 함
A*
A표현이 안 올 수도 있고, 한 개 이상이 와도 됨
참고 사이트: http://www.jelks.nu/XML/xmlebnf.html
XML 문서 구조
Document(문서) ::= prolog(서두) element(엘리먼트) Misc(기타)*
• 서두
– XML 선언, 프로세싱 지시자, 문서 유형 선언으로 구성
• 엘리먼트
– 한 개의 엘리먼트(루트 엘리먼트)가 와야 함
– 다른 엘리먼트는 루트 엘리먼트의 자식(하위) 엘리먼트
로 작성
• 기타
– 주석, 프로세싱 지시자, 공백으로 구성
XML 문서 구조
<?xml version="1.0" encoding="euc-kr"?>
<!-- 문서 유형 선언 -->
<!DOCTYPE booklist SYSTEM "bml.dtd">
<!-- 문서의 구조를 xhtml 문서로 변경 -->
<?xml-stylesheet type="text/xsl" href="bml.xsl"?>
<booklist>
<!-- 책 정보 -->
<book id="b1" kind="k2">
<title>XML 기초서</title>
<author>신민철</author>
<publisher>프리렉</publisher>
</book>
<book id="b2" kind="k1">
<title>가을엔 사랑을 느끼세요</title>
<author>이사랑</author>
<publisher>가을문화사</publisher>
</book>
</booklist>
XML 선언
•
•
•
•
•
•
“<?xml” 로 시작해서 “?>” 로 끝남
version 속성 필수
encoding과 standalone 속성 선택
version, encoding, standalone 순서 준수
현재 xml 버전 : 1.0
XML 선언은 반드시 파일의 맨 처음에 위
치
– 앞에 공백 및 빈 라인이 있으면 안됨
XML 선언
<?xml
version=“버전번호” encoding=“인코딩 방식” standalone=“yes|no”?>
• Version
– XML 권고안의 버전 번호를 기술(기술 필수)
• Encoding
– XML 문서를 저장할 인코딩 방식을 지정
– 생략가능(default는 UTF-8)
• Standalone
– XML 문서 해석 시 XML 파서(Parser)에게 외부 문서
참고 여부를 알려줌
• Yes: 외부 DTD 문서를 참고할 필요 없음
• No: XML 문서 해석 시 외부 문서를 참고해서 해석(default)
XML 문서 예
<?xml version=“1.0” encoding=“euc-kr”
standalone=‘yes’?>
<영화>
<제목>와이키키브라더스</제목>
<감독>임순례</감독>
<출연>류승범,이얼,박원상</출연>
</영화>
XML 문서의 구조
•
•
•
•
•
•
•
XML 문서의 선언
Element
Attribute
Comment
CDATA
DTD 선언
Processing Instruction
Element(엘리먼트)
<시작 태그명>
내용(콘텐트)
</끝 태그명>
<참고: p.91 그림 3-3 엘리먼트 구성 요소>
• 내용
– 문자 데이터 및 자식 엘리먼트 기술 가능
• 엘리먼트의 종류
– 내용을 가지는 엘리먼트
– 내용이 없는 엘리먼트(빈 엘리먼트)
• 형태1: <시작 태그/> (p.92 참고)
• 형태2: <시작 태그></끝 태그> (p.92 참고)
* 형태2에서 시작 태그와 끝 태그 사이에 공백이 오면
안됨
Element 작성 시 주의점
• 시작 태그와 끝 태그는 반드시 짝을 이룸
– 빈 엘리먼트는 시작 태그 끝 ‘/’를 붙임
• ‘<’ 문자는 엘리먼트 내용인 문자 데이터
및 속성값으로 사용 불가(단, ‘>’는 사용 가
능)
• ‘<’와 ‘>’ 사이에 오는 시작 태그 이름 중에
공백 문자가 없수 없음
– 종료태그 ‘</’ 다음에 공백문자 올 수 없고, 반
드시 시작 태그와 같은 이름이 와야 함
• 엘리먼트는 중첩되어 작성할 수 없음
태그 이름 작성 규칙
• 첫번째 글자는 한글 및 문자(‘_’ 포함)로 시작
– 숫자 또는 ‘.’ 시작 불가
• 두번째 문자는 숫자 및 ‘_’, ‘-’, ‘.’ 등의 일부 특수
문자 가능
– ‘:’ 사용 가능하나 네임스페이스와 관련된 기호이므로
가급적 사용 자제
– 공백(blank) 문자 불가
• 태그명이 영문자인 경우 대소문자를 구분
• ‘<’에 공백 문자 불가 및 종료태그인 ‘</’에 공백
문자가 올 수 없고, 시작 태그명과 같은 이름이
와야 함
• 태그명은 xml로 시작할 수 없음
태그 이름 작성 규칙
올바른 태그명 사용 예:
<book>, <_book>, <책>, <book1>, <book-1>, <Book>
잘못된 태그명 사용 예:
<7Book>
첫 글자가 숫자로 시작
<c++>
‘_’, ‘-’, ‘.’, ‘:’ 이외의 특수 문자를 포함
<book list>
태그명에 공백 문자 포함
< book>
‘<‘ 다음에 공백 문자 포함
<xml-book>
태그명이 xml로 시작
Element 내용
<시작 태그 속성명=“속성값”>
<book kind=“computer”>
내용(문자 데이터 또는 자식 엘리먼트)
</끝 태그명>
</book>
문자 데이터(Character Data)
자식 엘리먼트(Child Element)
엔티티 또는 문자 참조(Reference)
CDATA섹션(Character Data Section)
프로세싱 지시자(Processing Instruction)
주석(Comment)
공백문자열(White Space)
Attribute(속성)
• 속성은 하나의 요소와 결합된 이름/값의 쌍
이다.
• 시작 태그에 추가
• 속성은 반드시 값을 가짐
• “ “ 또는 ‘ ‘를 사용
• 하나의 요소 안에 들어있는 속성의 이름은
유일무이
• Ex)
– <영화 장르=“액션”>미션임파서블</영화>
Attribute 예
<?xml version=“1.0” encoding=“euc-kr”
standalone=‘yes’?>
<영화 장르=“액션”>
<제목>와이키키브라더스</제목>
<감독>임순례</감독>
<출연>류승범,이얼,박원상</출연>
</영화>
Comment(주석)
• “<!--”로 시작 “-->”로 끝
• 태그 내에 주석을 쓸 수 없다
• 주석 내에 “--”를 쓸 수 없다.
Comment(주석) 예
<?xml version=“1.0” encoding=“euc-kr”
standalone=‘yes’?>
<영화 장르=“액션”>
<!-- 여기는 주석입니다. -->
<제목>와이키키브라더스</제목>
<감독>임순례</감독>
<출연>류승범,이얼,박원상</출연>
</영화>
빈 요소 (Blank Element)
• Element 의 내용이 없는 경우 끝 태그를 생략하
고 빈 요소를 사용 할 수 있음
• 빈 요소는 어떠한 내용도 포함 할 수 없으며 오
직 속성만을 포함
• 빈 요소
<middle/>
(O)
<middle />
(O)
<middle/ >
(X)
<middle / >
(X)
<브라우저 주석보이기=“예” DTD체크=“예”/>
PCDATA
• Element 에 포함된 문자열
• 유효하지 않은 PCDATA 문자들
– “<”, “&” 등
– 해결 방법
• Escape 문자
• CDATA 섹션
PCDATA : Escape 문자
• Entity Reference
–&
–<
–>
–’
–”
문자
문자
문자
문자
문자
-
&amp;
&lt;
&gt;
&apos;
&quot;
PCDATA : CDATA 섹션
• 파서나 브라우저에서 유효성 검사를 하지
는 문자열(error check 하지 않고 skip)
• CDATA(Character DATA) 섹션
– “<![CDATA[”로 시작, “]]>”로 끝
<comparison>
<less><![CDATA[2<3]]></less>
<greater><![CDATA[4>3]]></greater>
</comparison>