<student> ... </student>
<student></student>
== <student />
XML 문서의 구조는 서두(prologe)와 엘리먼트(element), 그리고 기타(Misc) 부분으로 구성된다.
서두는 XML 선언(XMLDecl), 문서 유형 선언(doctypedecl), 기타 부분으로 구성된다.
기타 부분은 주석(Comment), PI(Processing Instruction), 공백으로 구성된다.
엘리먼트는 content를 가질 수 있다.
content는 문자데이터(CharData), 자식 엘리먼트, 참조(Reference), CDATA Section, PI, 주석 등을 포함할 수 있다.
<?xml version="버전번호" encoding="인코딩방식" standalone="yes/no"?>
현재 작성중인 문제가 XML 문서임을 명시적으로 표현하는 것
XML 선언은 반드시 XML 문서의 첫 줄에 나타나야 함
XML 선언의 시작은 "<?xml"
로 시작하며 '<?'
와 'xml'
문자열 사이에 공백이 있으면 안 됨
<!-- XML 문서 전언 (주석) -->
<?xml version="1.0" encoding="UTF-8"?>
<? xml version="1.0" encoding="UTF-8"?>
version
version 속성은 반드시 명시해야 함
<?xml version="1.0"?>
<?xml version='1.0'?>
encoding
이 XML 문서가 어떤 인코딩 방식을 사용하는지 결정
생략 가능하며 default 값은 UTF-8
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="EUC-KR"?>
standalone
외부에 정의된 DTD 문서의 참조 필요 여부를 표시
생략 가능하며 default 값은 no
(참조 필요함)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<element_name> element content </element_name>
내용(content)을 갖는 엘리먼트
문자 데이터나 자식 엘리먼트를 갖는 엘리먼트
<book>
<title>자연과 인간</title>
</book>
내용이 없는 빈 엘리먼트(Empty Element)>
문자 데이터나 자식 엘리먼트를 갖지 않는 엘리먼트
<!-- 동일한 코드 -->
<image src="C:\temp\image1.gif"/>
<image src="C:\temp\image1.gif"></image>
엘리먼트 내용으로 올 수 있는 것들
시작 태그와 끝 태그는 반드시 짝을 이루어야 한다.
단, 내용이 없는 빈 엘리먼트는 시작 태그의 끝에 /
를 붙여 시작 태그인 동시에 끝 태그임을 표시한다.
속성은 만드시 속성명=속성값
형태로 사용해야 하며 속성값은 반드시 "" 또는 ''로 감싸야 한다.
한 엘리먼트에 같은 속성명은 두 개 이상 올 수 없다.
태그를 나타내는 <
문자는 엘리먼트 내용(content)인 문자 데이터 및 속성값으로 사용할 수 없다.
>
문자는 사용해도 되지만 가급적 사용하지 않는다.
시작 태그의 <
다음에 공백 문자가 올 수 없으며, 시작 태그와 끝 태그의 이름이 같아야 한다.
엘리먼트들은 올바르게 중첩되어야 한다.
태그 이름은 반드시 XML 이름 작성 규칙을 따라야 한다.
이름은 문자(한글 포함)나 _
로 시작할 수 있으나 숫자나 .
등으로 시작할 수 없다.
두 번째 문자부터는 숫자 및 _
, -
, .
등도 가능하다.
태그 이름은 공백 문자를 포함할 수 없다.
:
문자는 쓸 수 있지만 네임스페이스와 관련된 기호이므로 사용하지 않는 것이 좋다.
태그 이름은 대소문자를 구별한다.
태그 이름은 xml
이나 XML
로 시작할 수 없다.
XML 프로세서가 해석할 수 있는 내용 중에서 마크업을 제외한 부분
문자 데이터 내에는 &
문자와 <
문자를 사용할 수 없음
&
: 엔티티 참조의 시작을 의미<
: 엘리먼트의 태그, 혹은 CDATA 섹션의 시작 의미XML 문서에서 특수 문자를 표현하는 방법
➡ 개체 참조, 문자 참조
미리 정의된(built-in) 개체 참조명
표현 문자 | 문자 코드 | 개체 참조명 | 어원 |
---|---|---|---|
< | < | < | less then |
> | > | > | greater then |
' | ' | ' | apostrophe |
" | " | " | quotation marks |
& | & | & | ampersand |
문자 코드(Unicode) 값을 직접 사용하여 문자를 나타냄
여러 가지 특수 기호나 특수 문자를 사용해야 할 때 유용

진수 문자코드; -> 10진수로 문자 코드를 지정
진수 문자코드; -> 16진수로 문자 코드를 지정
☏ -> ☎
♡ -> ♡
대부분의 문자 데이터인 PCDATA는 XML 파서가 해석(parsing)하는 데이터를 말한다.
CDATA Section 내에 정의된 문자 데이터는 XML 파서가 해석하지 않고 바로 응용 프로그램에게 전달
특수 기호가 많은 경우 CDATA 섹션을 사용하면 편리하다.
<?xml version="1.0" encoding="UTF-8"?>
<Root>
if (a > 0 && a < 3)
</Root>
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<![CDATA[if (a > 0 && a < 3]]>
<Root>
<![CDATA[
사이나 ]]>
사이에 공백을 둘 수 없다.
CDATA 섹션 안에 다른 CDATA 섹션을 포함할 수 없다.
키워드 CDATA는 반드시 대문자를 사용한다.
CDATA 섹션은 엘리먼트의 content 내의 문자 데이터 어디에나 삽입할 수 있다.
단, XML 마크업 내에서는 사용할 수 없다.
엘리먼트에 대한 부가적인 정보나 데이터를 표현하기 위한 방법
하나의 엘리먼트가 여러 개의 속성들을 가질 수 있다.
형식
시작 태그의 일부로 표현
<element_name attribute1="value1" attribute2="value2">
구성 요소
속성명="속성값"
으로 표현
<student sid="100">
속성은 반드시 속성 값을 가져야 한다.
빈 문자열을 포함할 수도 있다 (""
)
속성값은 큰 따옴표나 작은 따옴표를 사용해야 한다.
속성명 부여 방법은 엘리먼트의 태그명 부여 방법과 동일하다.
xml
라는 문자열로 시작할 수 없음하나의 엘리먼트에 같은 이름의 속성을 두 개 이상 선언할 수 없다.
주석은 XML 문서를 작성하는 사람과 이용하는 사람이 좀 더 쉽게 문서의 내용을 이해할 수 있도록 덧붙인 설명이다
<!-- 주석의 내용 -->
해당 XML 문서를 처리하는 응용 프로그램에게 XML 문서의 처리 방법을 지시한다.
형식
<?name_processor instruction ?>
name_processor
: 명령문이 전달되는 응용 프로그램 식별자
<?
와 name_processor
사이에 공백 문자를 포함할 수 없다.
예) CSS, XSL
<?xml-stylesheet type="text/css" href="student_style.css" ?>
name_processor
이름은 엘리먼트 이름과 동일한 규칙을 사용한다.
_
로 시작해야 함.
, -
등을 자유롭게 사용할 수 있음PI는 XML 문서의 어디든지 삽입할 수 있다.
단, 주석과 마찬가지로 마크업 내에서는 삽입할 수 없다.
일반적으로 문서의 서두(prolog) 부분에서 사용된다.