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 |
댓글