230 likes | 413 Vues
XML 문서 작성 방법. 2008.9.2 최진명. XML 문서의 종류. 잘 짜인 문서 (Well-Formed XML Document) XML 1.0 권고안에 언급되어 있는 문법 (Spec) 을 잘 지켜서 작성된 문서 시작태그와 끝 태그가 있어야 함 반드시 하나의 루트 element 가 있어야 함 영역 중복이 없어야 함 속성값은 반드시 따옴표로 지정. XML 문서의 종류. 유효한 문서 (Valid Document) Well-formed 문서이면서
E N D
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 선언 • Version • XML 권고안의 버전 번호를 기술(기술 필수) • Encoding • XML 문서를 저장할 인코딩 방식을 지정 • 생략가능(default는 UTF-8) • Standalone • XML 문서 해석 시 XML 파서(Parser)에게 외부 문서 참고 여부를 알려줌 • Yes: 외부 DTD 문서를 참고할 필요 없음 • No: XML 문서 해석 시 외부 문서를 참고해서 해석(default) <?xml version=“버전번호” encoding=“인코딩 방식” standalone=“yes|no”?>
XML 문서 예 <?xml version=“1.0” encoding=“euc-kr” standalone=‘yes’?> <영화> <제목>와이키키브라더스</제목> <감독>임순례</감독> <출연>류승범,이얼,박원상</출연> </영화>
XML 문서의 구조 • XML 문서의 선언 • Element • Attribute • Comment • CDATA • DTD 선언 • Processing Instruction
Element(엘리먼트) <시작 태그명> 내용(콘텐트) </끝 태그명> • 내용 • 문자 데이터 및 자식 엘리먼트 기술 가능 • 엘리먼트의 종류 • 내용을 가지는 엘리먼트 • 내용이 없는 엘리먼트(빈 엘리먼트) • 형태1: <시작 태그/> (p.92 참고) • 형태2: <시작 태그></끝 태그> (p.92 참고) * 형태2에서 시작 태그와 끝 태그 사이에 공백이 오면 안됨 <참고: p.91 그림 3-3 엘리먼트 구성 요소>
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 • & 문자 - & • < 문자 - < • > 문자 - > • ’ 문자 - ' • ” 문자 - "
PCDATA : CDATA 섹션 • 파서나 브라우저에서 유효성 검사를 하지 는 문자열(error check 하지 않고 skip) • CDATA(Character DATA) 섹션 • “<![CDATA[”로 시작, “]]>”로 끝 <comparison> <less><![CDATA[2<3]]></less> <greater><![CDATA[4>3]]></greater> </comparison>