XML | XML 기본 문법

S·2024년 3월 31일
0

WEB

목록 보기
5/8
post-thumbnail

XML 문서


정형화된 XML 문서 (Well-Formed XML Documents)

  • 하나의 루트 엘리먼트 존재
  • 각 엘리먼트는 시작 태그와 종료 태그를 가짐
    <student> ... </student>
    <student></student> == <student />
  • 엘리먼트들은 올바르게 중첩되어야 함

 

XML 문서 구조


XML 문서의 구조는 서두(prologe)와 엘리먼트(element), 그리고 기타(Misc) 부분으로 구성된다.

서두는 XML 선언(XMLDecl), 문서 유형 선언(doctypedecl), 기타 부분으로 구성된다.

기타 부분은 주석(Comment), PI(Processing Instruction), 공백으로 구성된다.

엘리먼트는 content를 가질 수 있다.
content는 문자데이터(CharData), 자식 엘리먼트, 참조(Reference), CDATA Section, PI, 주석 등을 포함할 수 있다.

 

XML 선언부


XML 선언 (declaration)

<?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"?>

XML 선언에서 사용되는 속성

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"?>

 

XML Element


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

엘리먼트 내용으로 올 수 있는 것들

  • 문자 데이터
  • 자식 엘리먼트
  • 엔티티 또는 문자 참조
  • CDATA 섹션
  • 프로세싱 지지자 (PI)
  • 주석
  • 공백 문자열

엘리먼트 작성시 주의 사항

시작 태그와 끝 태그는 반드시 짝을 이루어야 한다.
단, 내용이 없는 빈 엘리먼트는 시작 태그의 끝에 / 를 붙여 시작 태그인 동시에 끝 태그임을 표시한다.

속성은 만드시 속성명=속성값 형태로 사용해야 하며 속성값은 반드시 "" 또는 ''로 감싸야 한다.
한 엘리먼트에 같은 속성명은 두 개 이상 올 수 없다.

태그를 나타내는 < 문자는 엘리먼트 내용(content)인 문자 데이터 및 속성값으로 사용할 수 없다.
> 문자는 사용해도 되지만 가급적 사용하지 않는다.

시작 태그의 < 다음에 공백 문자가 올 수 없으며, 시작 태그와 끝 태그의 이름이 같아야 한다.

엘리먼트들은 올바르게 중첩되어야 한다.

태그 이름은 반드시 XML 이름 작성 규칙을 따라야 한다.

XML 이름 작성 규칙

이름은 문자(한글 포함)나 _로 시작할 수 있으나 숫자나 . 등으로 시작할 수 없다.

두 번째 문자부터는 숫자 및 _, -, . 등도 가능하다.

태그 이름은 공백 문자를 포함할 수 없다.

: 문자는 쓸 수 있지만 네임스페이스와 관련된 기호이므로 사용하지 않는 것이 좋다.

태그 이름은 대소문자를 구별한다.

태그 이름은 xml 이나 XML 로 시작할 수 없다.

 

문자 데이터


XML 프로세서가 해석할 수 있는 내용 중에서 마크업을 제외한 부분

문자 데이터 내에는 & 문자와 < 문자를 사용할 수 없음

  • & : 엔티티 참조의 시작을 의미
  • < : 엘리먼트의 태그, 혹은 CDATA 섹션의 시작 의미

XML 문서에서 특수 문자를 표현하는 방법
➡ 개체 참조, 문자 참조

개체 참조

미리 정의된(built-in) 개체 참조명

표현 문자문자 코드개체 참조명어원
<&#60;&lt;less then
>&#62;&gt;greater then
'&#39;&apos;apostrophe
"&#34;&quot;quotation marks
&&#38;&amp;ampersand

문자 참조

문자 코드(Unicode) 값을 직접 사용하여 문자를 나타냄
여러 가지 특수 기호나 특수 문자를 사용해야 할 때 유용

&#10진수 문자코드; -> 10진수로 문자 코드를 지정
&#x16진수 문자코드; -> 16진수로 문자 코드를 지정

&#x260F; -> ☎
&#x2661; -> ♡

 

CDATA Section


대부분의 문자 데이터인 PCDATA는 XML 파서가 해석(parsing)하는 데이터를 말한다.

CDATA Section 내에 정의된 문자 데이터는 XML 파서가 해석하지 않고 바로 응용 프로그램에게 전달

특수 기호가 많은 경우 CDATA 섹션을 사용하면 편리하다.

  • 오류 발생 코드
<?xml version="1.0" encoding="UTF-8"?>
<Root>
if (a > 0 && a < 3)
</Root>
  • CDATA 사용 코드
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<![CDATA[if (a > 0 && a < 3]]>
<Root>

주의 사항

<![CDATA[ 사이나 ]]> 사이에 공백을 둘 수 없다.

CDATA 섹션 안에 다른 CDATA 섹션을 포함할 수 없다.

키워드 CDATA는 반드시 대문자를 사용한다.

CDATA 섹션은 엘리먼트의 content 내의 문자 데이터 어디에나 삽입할 수 있다.
단, XML 마크업 내에서는 사용할 수 없다.

 

XML 속성


속성 (attributes)

엘리먼트에 대한 부가적인 정보나 데이터를 표현하기 위한 방법

하나의 엘리먼트가 여러 개의 속성들을 가질 수 있다.

형식
시작 태그의 일부로 표현

<element_name attribute1="value1" attribute2="value2">

구성 요소
속성명="속성값" 으로 표현

<student sid="100">

주의 사항

속성은 반드시 속성 값을 가져야 한다.
빈 문자열을 포함할 수도 있다 ("")

속성값은 큰 따옴표나 작은 따옴표를 사용해야 한다.

속성명 부여 방법은 엘리먼트의 태그명 부여 방법과 동일하다.

  • 대소문자 구별
  • xml라는 문자열로 시작할 수 없음
  • 숫자로 속성명을 시작할 수 없음

하나의 엘리먼트에 같은 이름의 속성을 두 개 이상 선언할 수 없다.

 

주석


주석은 XML 문서를 작성하는 사람과 이용하는 사람이 좀 더 쉽게 문서의 내용을 이해할 수 있도록 덧붙인 설명이다

<!-- 주석의 내용 -->

 

처리 명령어


처리 명령어 (Processiong Instruction; PI)

해당 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) 부분에서 사용된다.

profile
Someone has been here

0개의 댓글