본문 바로가기
전공공부/XML

표기법과 XML문서의 구조

by 으노으뇨 2022. 4. 24.
728x90
반응형
SMALL

1. EBNF (Extended Backus-Naur Form) 문법 형태 (배커스-나우르 표기법)

EBNF 표기법 XML 1.0 권고안의 공식 문법
기호 ::= 표현식 (Symbol ::= expression)

예제

Char1이 a-z까지 한 문자를 갖는 표현식 Char1 ::=[a-z]
VersionNum이 0-9 까지 한 문자를 갖는 표현식 VersionNum ::=[0-9]
Word1이 version이라는 고정문자열을 갖는 표현식 Word1 ::="version" 또는 Word1 ::='version'
패턴 결합

표현식 : 패턴과 결합하여 좀더 복잡한 형태를 가질 수 있음

패턴 설명
A? A가 0또는 1번, 즉 A가 올 수도, 안 올 수도 있음(옵션)
A, B A가 먼저오고 B가 나중에 옴 (순차)
A | B A와 B중 하나만 와야 한다. (선택)
A+ A가 최소한 한개 이상이 와야 한다.
A* A가 0개이상, 즉 안올수도 있고, 여러개가 와도 됨

Version을 나타낼 수 있는 EBNF 문법

사용 예제 version = "1.0"
version = '1.0'
version = "v1.0"
version = 'v1.0'
EBNF 문법 (단, S는 공백을 뜻함) Version :: S 'version' Eq ("'"VersionNum "'"|"'"VersionNum"'")
Eq ::= S? '=' S?
VersionNum ::=([a-zA-Z0-9.]|'-')+

 


2. XML 문서의 구조

서두(prolog) XML 선언
PI(Processing Instruction)
문서유형 (docType)선언으로 구성됨
몸체(element) 한 개의 root element와 다수의 child element로 작성됨
기타(misc) 주석 및 PI, 공백으로 구성됨 (일반적으로 생략됨)

XML 1.0권고안의 문서에 대한 EBNF 문법

Document(문서) ::= Prolog(서두) Element(엘리먼트) Misc(기타)*

예를들어 ex2-3.xml을 권고안에 의해 작성해보면 다음과 같다.

<?xml version="1.0" encoding="UTF-8"?>		<!--서두 -->
<!DOCTYPE booklist SYSTEM "ex2-2.dtd">	 	<!--서두 -->
<booklist> 					<!-- 엘리먼트 시작-->
	<book>
		<title>Java XML</title>
		<author>홍길동</author>
		<publisher>프리렉</publisher>
		<price>20000</price>
	</book>
	<book>
		<title>숫자는 어떻게 진실을 말하는가</title>
		<author>바츨라프 스밀</author>
		<publisher>김영사</publisher>
		<price>17000</price>
	</book>
</booklist>					<!-- 엘리먼트 끝-->

3. XML 선언

XML선언 현재 작성 중인 문서가 XML 문서임을 명시적으로 표현하는 것
반드시 XML문서 첫 줄에 기술되어야 한다.
XML 선언의 시작

"<?xml" 로 시작하며, '<?' 와 'xml' 문자사이에 공백이 있으면 안된다.

<?xml version="${버전번호}" encoding="${인코딩방식}" standalone="${yes|no}"?>

버전번호나 인코딩방식, 참거짓을 넣어주면된다.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
XML 선언에서 사용되는 속성들
version xml선언에서 version 속성은 반드시 기술해야함
- 안하면 아예 안나타남
<?xml version="1.0"?>
encoding 작성하는 xml문서를 어떤 인코딩 방식으로 저장할 것인가를 지정함
생략되면 XML 프로세서는 디폴트 유니코드 인코딩 방식인 UTF-8로 처리함
<?xml version="1.0" encoding="UTF-8">
<?xml version="1.0" encoding="euc-kr">
standalone 파서가 XML문서를 해설할 때 외부 DTD 문서 참조 여부를 파서에게 전달함
생략하게 되면 XML프로세서는 디폴트로 no 값으로 처리하게됨
----------
no : 외부문서를 참고하여 XML 문서를 해석함
yes : XML 문서 해석 시 외부문서의 참고는 불필요 함
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

4. 인코딩 및 유니코드

인코딩(Encoding)

XML 문서

KSC5601 과 EUC-KR 인코딩
한국 표준 문자집합(KSC5601) 한국 표준협의회가 한국 공업표준(Korea industrial standard) 으로 정한 정보처리 분야(C)의 5601번 표준안
2byte를 사용해서 완성형 한글을 표현하는 방법을 기술함
EUC-KR 인코딩 Bell Laboratories에서 개발한 확장 유닉스 코드(Extended UNIX Code) 의 변형
유닉스 운영체제
- 영어 : KSC5636을 사용하고, 1byte로 표현함
- 한글 : KSC5601을 사용하고, 2byte로 표현함
-> ASCII 와 KSC5636의 차이는 백슬래시를 원화 기호로 부르는가 차이임
유니코드 (Unicode)
유니코드 기존 언어의 인코딩 체게를 모두 포함할 수 있도록 고안된 거대한 문자 집합

유니코드 인코딩 방식을 사용하여 문서를 작성하면, 하나의 문서를 다양한 언어로 작성할 수 있음

Windows 2000 및 XP 이상은 유니코드를 지원함

UTF-8 방식 기존의 ASCII문자 코드 체계와 호환이 가능하기 때문에 인터넷상에서 문서를 교환하기 위한 기본적인 인코딩으로 사용됨
영어로 작성된 문서인 경우에는 대부분의 문자들이 ASCII문자 인코딩에 적합하기 때문에 UTF-16보다 파일을 작게 만듦
UTF-16 방식 2byte 를 사용하여 모든 문자 코드를 표현함
영어 이외의 다른 문자로 작성된 문서인 경우에는 UTF-8보다 파일 사이즈를 더 작게 만듦
XML 문서 인코딩
XML 문서 인코딩 XML 권고안 모든 XML문소는 유니코드 인코딩 방식인 UTF-8 인코딩 방식으로 저장할 것을 기본으로 함
euc-kr 인코딩 방식 ASCII는 1byte로, 한글은 2byte로 저장됨
인코딩 속성값으로 "UTF-8"대신 "euc-kr"을 지정해도 무관하다.

 

728x90
반응형
LIST

'전공공부 > XML' 카테고리의 다른 글

DTD 개요, 문법  (0) 2022.05.02
XML 엘리먼트와 속성, 주석, 프로세싱 지시자  (0) 2022.04.27
XML 문서의 종류  (0) 2022.04.24
XML 이란?  (0) 2022.04.24

댓글