1. XML 문서의 분류
ㅁ 정형화된 XML 문서
: XML 문서 생성 규칙을 잘 지켜서 작성된 문서
- 하나의 루트 엘리먼트 존재
- 각 엘리먼트는 시작 태그와 종료 태그를 가짐
ㅇ <student> ... <\student>
ㅇ <student> ... <\student> -> </student> 로 표기 가능
- 엘리먼트들은 올바르게 중첩되어야 함 (nested property)
ㅁ 유효한 문서
: 정형화된 문서이면서, XML로 정의된 특정 마크업 언어로 작성된 문서 (DTD나 XML Schema를 통해 정의된 마크업 언어의 문법 따르는 문서)
2. XML 문서 구조
ㅁ XML Document Production Rules
[1] document ::= prolog element Misc*
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[27] Misc ::= Comment | PI | S
[39] element ::= EmptyElemTag | STag content ETag [WFC: Element Type Match] [VC: Element Valid]
[43] content ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)*
... +)WFC: Well-Formedness Constraint , VC : Validity Constraint
– [1]: XML 문서의 구조는 서두(prolog)와 (루트) 엘리먼트, 그리고 기타(Misc) 부분으로 구성됨
– [22]: 서두는 XML 선언(XMLDecl), 문서 유형 선언(doctypedecl), 기타 부분으로 구성됨
– [27]: 기타 부분은 주석(Comment), PI(Processing Instruction), 공백(S)으로 구성됨
– [39][43] : 엘리먼트는 content를 가질 수 있음,
content는 문자데이터 (CharData), 자식 엘리먼트, 참조, CDATA Section, PI, 주석등을 포함할 수 있음
3. XML 선언부
ㅇ XML 선언(declaration)
<?xml version = "버전번호" encoding="인코딩방식" standalone="yes/no"?>
- XML 선언은 반드시 XML 문서의 첫 줄에 나타나야 함
- XML 선언의 시작은 <?xml로 시작하며,
<?와 xml 문자열 사이에 공백이 있으면 안됨
ㅇ XML 선언에서 사용되는 속성
(1) version : version 속성은 반드시 명시해야함
<?xml version = "1.0"?> 또는 <?xml version = '1.0'?>
(2) encoding : default는 UTF-8 , 생략가능
(3) standalone : 다른 DTD 없이 독립적으로 사용가능한지 / default는 no , 생략가능
4. XML Element
ㅇ 기본 규칙
- 모든 XML 문서는 단 하나의 루트 엘리먼트를 가짐
- 엘리먼트는 시작 태그와 끝 태그 한쌍으로 구성, 태그명 은 동일
- 시작 태그와 끝 태그 사이에는 엘리먼트의 내용(content)로 문자데이터나 자식 엘리먼트 등이 올 수 있음
- 엘리먼트는 부가적인 정보를 나타내는 속성(attribute)를 가질 수 있음
ㅁ 엘리먼트의 종류
(1) 내용(content)를 갖는 엘리먼트
: 문자 데이터나 자식 엘리먼트를 갖는 엘리먼트
(2) 내용이 없는 빈 엘리먼트 (Empty Element)
: 문자 데이터나 자식 엘리먼트를 갖지 않은 엘리먼트
ex) <image src="C:\temp\image1.gif" />
ㅁ 엘리먼트의 종류
(1) 내용(content)를 갖는 엘리먼트
: 문자 데이터나 자식 엘리먼트를 갖는 엘리먼트
(2) 내용이 없는 빈 엘리먼트 (Empty Element)
: 문자 데이터나 자식 엘리먼트를 갖지 않은 엘리먼트
ex) <image src="C:\temp\image1.gif" />
ㅁ 엘리먼트 내용(content)로 올 수 있는 것들
- 문자 데이터(Character Data)
- 자식 엘리먼트 (Child Element)
- 엔티티 또는 문자 참조 (Reference)
- CDATA 섹션 (Character Data Section)
- 프로세징 지시사(Processing Instruction)
- 주석 (Comment)
- 공백 문자열 (White Space)
ㅇ 문자 데이터
- XML 프로세서가 해석할 수 있는 내용 중에서 마크업을 제외한 부분
- 문자 데이터 내에는 & 문자와 < 문자를 사용할 수 없음
: & 문자는 엔티티(entity) 참조의 시작을 의미
< 문자는 엘리먼트의 태그, 또는 CDATA 섹션의 시작을 의미
- XML 문서에서 특수문자를 표현 하는 방법 : 개체 참조 / 문자 참조
ㅇ 개체 참조
ㅇ 문자 참조
ㅇCDATA Section
- CDATA 섹션(Section) 내에 정의된 문자 데이터는 XML 파서가 해석하지 않고 바로 응용프로그램(application)에게 전달
- 특수기호가 많은 경우 CDATA 섹션을 사용하면 편리
※ 주의사항 ※
- '<![CDATA'[사이나 ']]>' 사이에 공백을 둘 수 없음
- CDATA 섹션 안에 다른 CDATA 섹션을 포함 할 수 없음
- CDATA 섹션은 엘리먼트 content 내의 문자 데이터 어디에나 삽입할 수 있음
단, XML 마크업 내에서는 사용할 수 없음
ㅇXML 속성
● 속성 (attribute)
- 엘리먼트에 대한 부가적인 정보나 데이터를 표현하기 위한 방법
- 하나의 엘리먼트가 여러 개의 속성들을 가질 수 있음
※ 주의사항 ※
- 속성은 반드시 속성 값을 가져야 함
-> 빈 문자열을 포함할 수도 있음 ("")
- 속성값은 큰 따옴표(")나 작은 따옴표(')를 사용해야함
- 속성명 부여 방법은 엘리먼트의 태그명 부여 방법과 동일
-> 대소문자 구별
-> 'xml'이라는 문자열로 시작 불가
-> 숫자로 속성명 시작 불가
주의 : 하나의 엘리먼트에 같은 이름의 속성 두 개 이상 선언 불가
ㅇ 주석
: 주석(comment)는 XML 문서를 작성하는 사람과 이용하는 사람이 좀더 쉽게 문서의 내용을 이해할 수 있도록 덧붙인 설명
<!-- 주석의 내용 -->
ㅇ 처리 명령어 (Processing Instruction : PI)
- 해당 XML 문서를 처리하는 응용프로그램(application)에게 XML 문서의 처리 방법을 지시함
<?name_processor instruction?>
● name_processor : 명령문이 전달되는 응용 프로그램 식별자
- '<?'와 'name_processor' 사이에 공백문자 포함 불가
● instruction : 응용프로그램이 어떻게 문서를 처리할지를 나타냄
EX) CSS, XSL
<?xml-stylesheet type="text/css" href="student_style.css"?>
※ 주의사항 ※
● name_processor 이름은 엘리먼트 이름과 동일한 규칙 사용
- 반드시 문자 또는 _로 시작, 그 뒤에 숫자, 문자, . , _ 등을 자유롭게 사용 가능
● PI는 XML 문서의 어디든지 삽입할 수 있음
- 단, 주석과 마찬가지로 마크업 내에는 삽입할 수 없음
- 일반적으로 문서의 서두(prolog) 부분에서 사용됨
'WEB' 카테고리의 다른 글
[JAVA] 클래스와 객체 02 (0) | 2024.03.21 |
---|---|
[JAVA] 클래스와 객체 01 (0) | 2024.03.20 |