본문 바로가기
정보과학/웹서비스특론

XML 문법

by J1소프트 2023. 9. 4.
728x90

1. XML 문서의 종류

1.1 정형식 문서

정형식 문서 또는 잘 짜여진 문서(Well-Formed XML Document)는 XML 1.0 권고안에 언급되어 있는 문법(Spec)을 잘 지켜서 작성된 문서를 말한다. XML로  개발된 마크업 언어로 작성된 문서는 반드시 XML 1.0 문법을 지켜야 하며 그렇지 않을 경우 문서로 취급하지 않는다.

 

1.2 유효한 문서

유효한(valid) 문서란 정형식 문서이면서, 문서형태정의(DTD) 또는 스키마의 규칙을 따르는 문서를 말한다. 일반적으로 'XML 문서에 대해 유효성 검사를 한다' 라는 것은 XML로 개발된 DTD나 스키마의 규칙대로 잘 작성 되었는지 검증하는 것을 말한다.

한편 유효하지 않은 문서라는 것은 XML 문법/규칙을 따르지 않거나, DTD 를 포함하고 있지만 DTD 의 명세 규칙을 따르지 않는 문서를 의미한다.

 

1.3 정형식 문서와 유효한 문서의 관계

그림 1. XML 문서의 종류와 관계

<참고>:EBNF표기법

1) EBNF 문법 형태

XML 1.0 권고안의 공식 문법은 간단한 EBNF(Extended Backus-Naur Form) 표기법을 사용한다. XML을 사용하는 개발자들은 EBNF 표기법을 잘 알고 있어야 XML 스펙을 이해할 수 있게 되고, 보다 쉽게 XML을 활용할 수 있게 된다.

 

다음은 EBNF 문법 표기법이다.

기호 ::= 표현식(Symbol ::= Expression)

 

1 : 기호 Char1이 소문자 a에서 z까지 한 문자를 갖는 표현식

문법 Char1 ::= [a-z]

 

2 : 기호 VersionNum가 숫자 0에서 9까지 한 문자를 가는 표현식

문법 VersionNum ::= [0-9]

 

3 : 기호 Word1"version"이라는 고정 문자열을 갖는 표현식

문법 Word1 ::= "version" 또는 Word1 ::= 'version'

 

2) 패턴 결합

표현식은 다음과 같은 패턴과 결합되어 좀더 복잡한 형태를 가질 수 있다.

여기서 AB는 표현식 중의 하나라고 생각하면 된다.

패턴 설명
A? A 표현이 올 수도 있고 안 올 수도 있다(옵션).
A B A 표현이 먼저 오고 B 표현이 나중에 온다(순차).
A|B A B 표현 중 하나만 와야 한다(선택).
A-B A 표현이 와야 되지만 B 표현과는 일치되지 않아야 한다.
A+ A 표현이 최소한 한 개 이상이 와야 한다.
A* A 표현이 안 올 수 있고, 한 개 이상이 와도 된다.

다음은 기호 Eq(Equal)이 빈 문자열(문자가 없는 공백)을 뜻하는 표현식인 'S'가 사용되어 "=", " =", "= ", " = "의 형태를 갖는 표현식이다. 이때 S?는 빈 문자열을 하나 가질수도 있고 없을 수도 있다는 뜻이다.

문법 Eq ::= S? '=' S?

 

1 : 기호 VersionNum이 영소문자 모두, 영대문자 모두 그리고 0에서 9까지의 문자 중 한 문자를 갖는 표현식

문법 VersionNum ::= [a-zA-Z0-9]

 

2 : 기호 VersionNum이 영소문자 모두, 영대문자 모두 그리고 0에서 9까지의 문자 중 한 문자와 '-'문자를 선택해서 한 문자만이 가질 수 있는 표현식

문법 VersionNum ::= ([a-zA-Z0-9] | '-')

 

3 : 기호 VersionNum이 영소문자 모두, 영대문자 모두 그리고 0에서 9까지의 문자 중 한 문자와 '-'문자를 여러 번 선택해서 문자열을 이룰 수 있는 표현식

문법 VersionNum ::= ([a-zA-Z0-9] | '-')+

 

4 : 여러 표현식을 결합한 EBNF 문법

문법 Version ::= S 'version' Eq ("'" Version "'" | '"' VersionNum '"')

        Eq ::= S? '=' S?

        VersionNum ::= ([a-zA-Z0-9.] | '-')+

 

여기서 기호 Version이 가질 수 있는 표현식은 다음과 같은 것들이다.

version="1.0" 또는 version='1.0'

version="v1.0" 또는 version='v1.0'


2. XML 문서 구조

W3C에서 정의한 XML 문서 구조는 정형화된 정형식 문서 구조로서, 일반적인 구조는 다음과 같다.

그림 2. XML 문서 구조

: 실제 XML 문서

그림 3. XML 문서의 예

XML 문서의 몸체 부분에서는 한 개의 최상위요소(루트 엘리먼트)가 와야 하고, 이 루트 엘리먼트를 제외한 다른 모든 엘리먼트는 루트 엘리먼트의 자식(하위) 엘리먼트로 작성되어 야한다. 따라서 문서에 사용된 엘리먼트들은 결국 트리 형태의 계층적인 구조를 형성하게 된다.

 

엘리먼트(요소, element)는 기본적으로 ‘<’‘>’로 둘러싼 데이터를 의미하고, 속성(attribute)는 엘리먼트에 부가적인 데이터를 표시하기 위해서 사용되는 것이다.


3. XML 선언

3.1 XML 선언의 문법

현재 작성중인 문서가 XML 문서임을 명시하여 문서가 정보를 처리할 때 어떻게 처리할 것인지를 알려주기 위해서 사용되며, XML 선언이 없어도 되지만 XML 선언을 하는 것이 W3C의 권장 사항이다.

XML 선언은 다음과 같이 XML 권고안의 버전, 문서의 인코딩 방식, 스탠드얼론 문서 여부에 대해 기술하도록 되어 있다.

<?xml 로 시작하고, 각 문자 사이에는 공백이 없어야 한다.

버전은 필수 속성(버전을 파서에게 알려주는 속성)

인코딩(선택사항)XML문서를 여러 나라의 언어로 작성할 수 있도록 제공하는 속성

독립형 여부(선택사항)를 나타내는 것으로

      - yes : 다른 파일을 의존하지 않을 것을 의미한다.

      - no : (기본값) 현재 문서에서 다른 파일을 참조할 수 있다는 것을 나타냄

 

[XML 선언 시 주의할 점]

XML 선언 이전에는 어떤 내용이든 기술되면 안 된다는 것이다.

   즉, XML 선언은 XML 문서 첫 줄에 반드시 기술되어야 한다.

XML 선언의 시작은 "<?xml" 문자열로 시작해서 "?>"로 끝나야 한다.

   이때 주의할 점<?xml 문자 사이에 공백을 두어서는 안된다.

XML 선언 속성에서 version은 반드시 표기해야하며, xml, version, encoding 순으로 소문자로 표현한다.

 

3.2 XML 선언에서 사용되는 속성

(1) version

버전 번호는 XML 권고안의 버전 번호를 기술하는 부분으로, 현재 XML 권고안의 버전은 1.0이므로 반드시 이 값을 지정해야 한다. 그리고 XML 선언에서 version 속성은 반드시 기술해야 한다.

                 <?xml version="1.0"?>

                 <?xml version='1.0'?>

 

(2) encoding

작성하는 XML 문서를 어떤 인코딩 방식으로 저장할 것인가를 지정한다. encoding 속성은 생략 가능 하다.

생략이 되면 XML 프로세서는 기본값인 유니코드 인코딩 방식의 UTF-8 방식으로 XML 문서를 처리하게 된다.

그러나 한글을 사용하려면 euc-kr (16비트 인코딩)로 지정해야 한다.

                 <?xml version="1.0" encoding="euc-kr"?>

                 <?xml version='1.0' encoding="UTF-8"?>

 

참고: [인코딩과 XML 문자 코드].

1) 인코딩

XML 문서는 단순한 텍스트 형식의 파일이기 때문에 여러 나라의 언어 형태로 작성될 수 있다. 엘리먼트의 값뿐만 아니라 엘리먼트의 태그 이름과 속성 이름도 영어 및 한글을 비롯한 여러 가지 언어로 작성 및 저장될 수 있다.

여러 가지 언어 형태로 작성 및 저장된 XML 문서를 처리하기 위해서는 XML 문서가 어떤 문자 코드 체계로 작성되어 있는지를 XML 프로세서에게 알려주어야 한다. XML 선언부에 인코딩 방식을 언급하는 이유가 바로 여기에 있다.

문자 코드를 컴퓨터가 이해할 수 있는 01의 바이너리 값을 가지는 연속적인 비트 형태로 매핑시켜 주는 작업이 바로 문자 인코딩이다. 즉 컴퓨터가 이해할 수 있는 코드 형태로 만들어 주는 것을 말한다.

 

2) 유니코드

ASCII 문자는 총 128개의 문자까지만 표현하고 있으므로 7개의 비트만 가지고도 충분히 나타낼 수 있었지만, 서부 유럽권 국가에서 사용하는 문자들은 기존 ASCII 문자 집합에 포함시켜 새로운 문자 집합이 만들어졌는데 이것이 '서유럽 문자 집합' 또는 'ISO latin-1'이라고 불리는 'ISO-8859-1'이라는 문자집합이다.

서유럽 문자(ISO-8859-1) 코드를 보면, 007F까지는 ASCII 문자 코드 체계를 그대로 따르고 서유럽에서 사용하는 문자들을 A0FF까지 배정한 것이다. ASCII 문자 코드가 채택한 7비트 코드체계로 다 수용할 수가 없기 때문에 8비트(1바이트) 코드 체계를 사용한다.

이것은 영어에서 필요로 하는 문자 모두를 쉽게 다루기에 충분한 숫자이지만, 세계의 언어들 중에는 256개의 문자를 넘는 언어들이 있기 때문에 세계 모든 언어에 대한 문자 집합을 코드화시키는 것이 필요하게 되었는데, 이것이 바로 유니코드(Unicode)가 나타난 배경이다.

유니코드는 한마디로 기존 언어의 인코딩 체계를 모두 포함할 수 있도록 고안된 커다란 문자 집합이. 따라서 유니코드 문자 집합을 표현할 수 있는 인코딩 방식을 사용하여 문서를 작성하게 되면 하나의 문서 내에서 일부분은 한국어로, 또 다른 부분은 영어로, 또 다른 부분은 기타 언어 등으로 작성하는 것이 가능하게 된다.

 

3) KS C 5601EUC-KR 인코딩

한국 표준문자 집합(KS C 5601)은 한국 표준 협의회가 한국 공업 표준(Korea Industrial Standard)로 정한 정보처리 분야(C)5601번 표준안이다. 'KS C 5601' 표준의 내용을 살펴보면, 2바이트를 사용해서 완성형 한글을 표현하는 방법을 기술하고 있으며 순수한 한글 코드에 대한 내용뿐 ASCII 문자에 대한 내용은 전혀 담고 있지 않다.

ASCII 문자에 대한 표준은 'KS C 5636'에 있으며 ASCII 문자 집합에서 역슬래시 대신에 한국의 통화기호 원 표시를 대치해 넣은 것으로 사실상 ASCII 문자 집합 코드와 같다고 볼 수 있다.

EUC-KR 인코딩은 Bell Laboratories에서 확장 유닉스 코드(Extended UNIX Code)라 하여, 유닉스 운영체제에서 영어는 KS C 5636, 한글은 KS C 5601을 사용하는 것을 말한다. ASCII 문자 코드는 1바이트로 표현하고 'KS C 5601'에 언급되어 있는 한글 문자 코드는 2바이트로 표현한다. 이것은 한국 표준 협회에서 "유닉스 상에서의 한글사용"이라는 제목으로 KS C 5861로 등록되어 있다.

 

4) XML 문서 인코딩

XML 권고안은 모든 XML 문서는 유니코드 인코딩 방식인 UTF-8 인코딩 방식으로 저장할 것을 기본으로 하고 있다.

encoding 속성을 생략하면 기본으로 UTF-8 인코딩 방식으로 XML 파서가 해석 한다. XML 문서가 UTF-8 인코딩 방식으로 저장하지 않았다면 반드시 encoding 속성에 실제 인코딩 방식을 기술해야 한다. 그렇지 않으면 XML 파서는 XML 문서를 해석하지 못한다.

 

 

(3) standalone

독립성 여부는 XML 문서를 단독으로 사용할 수 있는지, 문서 외부의 어떠한 마크업 선언이 있어야만 애플리케이션으로 전달하는 데이터가 만들어질 수 있는지를 나타낸다. 독립성 여부는 생략이 가능하고 기본값은 no이다.

       <?xml version="1.0" encoding="euc-kr" standalone="no"?>

       <?xml version='1.0' encoding="UTF-8" standalone="yes"?>

 

속성값이 'no'이면 XML 파서로 하여금 외부 문서를 참고해서 XML 문서를 해석하라는 뜻이고, 'yes'이면 XML 파서가 해당 XML 문서를 해석할 때 외부 문서를 참고할 필요가 없다는 뜻이다. 이는 XML문서 해석 시 외부 문서의 참조가 필요함에도 불구하고 XML 선언에 standalone 속성을 'yes'로 지정하게 되면 XML 파서는 XML 문서를 해석하지 못하게 된다.


4. 엘리먼트

4.1 엘리먼트 정의와 사용법

XML에서의 기본적인 데이터의 구성 요소를 '엘리먼트(요소)'라고 한다. 엘리먼트는 XML의 가장 기본적인 빌딩 블록으로서, XML 문서 내에 데이터를 표현하기 위한 태그 정의와 데이터를 의미한다. XML 문서는 단 하나의 루트 엘리먼트(root element)를 갖고, 루트 엘리먼트는 자식 엘리먼트를 포함할 수 있으며, 자식 엘리먼트는 다시 그 자신의 자식 엘리먼트를 포함할 수 있다. 이러한 방식으로 엘리먼트들은 트리 형태의 계층 구조를 이루게 된다.

 

엘리먼트의 구성 요소는 엘리먼트의 시작을 뜻하는 시작 태그와 엘리먼트의 끝을 뜻하는 끝 태그로 이루어져 있다. 시작 태그명과 끝 태그명은 동일해야 한다. 또한 부가적인 정보를 나타내는 속성을 가지고 있다. 시작 태그와 끝 태그 사이에는 엘리먼트의 실질적인 내용이 오는데, 문자 데이터 및 자식 엘리먼트가 올 수 있다. 이러한 엘리먼트의 구성요소는 다음과 같이 표현된다.

그림 4. 엘리먼트의 구성요소

HTML에서는 태그명이 정해져 있는 반면, XML에서는 태그명을 직접 정의해서 사용한다. XML의 가장 큰 장점이며 매력이라고 할 수 있다. 태그의 이름은 보통 내용이 무엇인가에 따라 데이터의 의미를 표현할 수 있는 명칭으로 정하게 된다. 영문 혹은 한글, 한자로 나타낼 수 있다.

 

4.2 엘리먼트의 종류

(1) 내용을 가지는 엘리먼트

문자 데이터나 자식 엘리먼트를 내용으로 갖는 엘리먼트를 말한다.

다음은 <book> 엘리먼트가 <title>이라는 자식 엘리먼트를 내용으로 갖고, 다시 <title> 엘리먼트는 문자 데이터를 내용으로 가지는 경우이다.

<book>

     <title>XML 프로그래밍</title>

</book>

 

(2) 내용이 없는 엘리먼트

문자 데이터나 자식 엘리먼트를 갖지 않는 엘리먼트로서, 이런 엘리먼트를 빈 엘리먼트(empty element)라고 한다. 빈 엘리먼트는 <시작 태그/> 또는 <시작 태그></종료 태그>로서 표기하는데, 주의 해야 할 사항은 시작 태그와 종료 태그 사이에 공백이 오면 안 된다는 것이다. 왜냐하면 공백도 문자 데이터로 취급되기 때문이다.

<book title="XML 프로그래밍"/>

또는

<book title="XML 프로그래밍"></book>

 

[엘리먼트 작성 시 주의할 점]

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

2. 속성은 반드시 속성명=속성값 형태로 사용해야 하며, 속성값은 반드시 "" 또는 ''로 감싸야 한다. 한 엘리먼트 내에 같은 속성명이 두 개 이상이 사용되면 안 된다.

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

4. '<' '>' 사이에 오는 시작 태그 이름 중에 공백 문자가 올 수 없다. 마찬가지로 종료 태그의 '</' 다음에 공백 문자가 올 수 없으며 반드시 시작 태그 이름과 같은 이름이 와야 한다.

5. 엘리먼트는 중첩(overlap)되어 작성될 수 없다. 이것은 하나의 태그(시작,)가 다른 태그 내에 완전히 포함되는 것은 무방하지만, 시작 태그와 끝 태그 사이에 다른 엘리먼트의 시작 태그만 존재할 수 없다는 것을 뜻한다.

6. 태그 이름은 이름 작성 규칙을 따라야 한다.

 

[이름 작성 규칙]

다음은 이름 작성 규칙에 대한 설명이다.

이름은 영문자(한글 포함)‘_’로 시작해야한다.

두 번째 문자부터는 숫자 및 특수 문자 "-", "_", "."도 사용 가능하다.

태그 이름에 공백을 포함시킬 수는 없다.

특수 문자 중에 ':' 문자는 태그 이름에 포함할 수 있지만, 네임스페이스에 관련된 기호이므로 되도록 사용하지 않는 것이 바람직하다.

태그 이름은 대소문자를 구별하므로 철자가 같다고 해서 같은 태그가 아니다.

시작 태그의 시작인 '<' 다음에 공백 문자가 올 수 없다. 마찬가지로 종료 태그의 '</' 다음에 공백 문자가 올 수 없으며 반드시 시작 태그 이름과 같은 이름이 와야 한다.

태그 이름은 xml와 같은 예약어를 사용할 수 없다..

 

올바른 태그 이름의 예

<book>, <_book>, <>, <book1>, <book-1>, <Book>, <>

 

잘못된 태그 이름의 예

<7Book> 첫 글자는 숫자를 사용할 수 없다.
<학교&학번> '_', '-', '.', ':' 이외의 특수 문자는 사용할 수 없다.
<직 업> 태그 이름에 공백을 사용할 수 없다.
< Book> '<' 다음에 공백을 두어서는 안 된다.
<xml-book> 태그 이름이 xml로 시작하면 안 된다.
<name> </Name> 대소문자를 구별하기 때문에 시작태그와 끝태그가 다르다.

5. 속성

속성은 엘리먼트에 부가적인 정보를 표시하는 방법으로서, 속성으로 표현할 수 있는 정보와 데이터는 물론 자식 엘리먼트로도 표현할 수 있다. 자식 엘리먼트로 표현할지 속성으로 표현할 지의 여부는 새로운 마크업 언어를 정의하는 개발자에 달려 있다.

데이터를 엘리먼트로 표현하는 것과 속성으로 표현하는 것은 데이터를 표현한다는 기본적인 목적은 동일하지만, 실제 문서를 설계하고 제작할 때는 중요한 차이점이 있다.

 

먼저 속성으로 표현할 경우에는 문서 크기를 줄일 수 있다는 장점이 있지만, 속성 자체가 엘리먼트에 종속적이기 때문에 확장성이 떨어지는 단점이 있다. 따라서 표현하고자 하는 데이터가 단순하고 의존적인 경우 즉 하나의 데이터 값만을 표현하고자 하는 경우에는 속성으로 표현하는 것이 좋다. 이에 비해 엘리먼트로 표현하는 경우에는 가독성이 좋아 의미 파악이 용이하고 향후 문서 내용을 추가하거나 확장할 때 용이하다는 장점을 가진다.

 

5.1 속성 선언

속성 선언 문법

<시작_태그명 속성명 = "속성값" (또는 속성명 = '속성값')>

내용

</_태그명>

 

: 올바른 속성 선언 방법

<book author="홍길동" kind='컴퓨터'> XML </book>

<image src="풍경.gif"/>

 

5.2 속성 선언 시 주의사항

[속성 선언 시 주의사항]

속성명의 작성 규칙은 XML 권고안에 언급되어 있는 엘리먼트 이름 작성 규칙을 따른.

속성은 반드시 속성값을 가져야한다.

속성값은 큰 따옴표(")나 작은 따옴표(')를 사용해서 표현한다.

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

한 엘리먼트에 서로 다른 여러 개의 속성을 표현할 때는 콤마(,)를 사용하지 않고 공백으로 구분한다.


6. 개체 참조와 문자 참조

6.1 개체 참조

개체 참조(entity reference)XML 문서에서 특수 문자를 표현하는 방법으로서, 미리 정해진 특별한 코드나 이름을 사용해서 표현할 때 쓰이는 개념이다. 개체에 할당한 이름이 개체명이다. 예를 들면, '<' 기호에 대응되는 'lt'라는 개체명은 'less than'의 머리글자를 가지고 개체명을 정의한 것이다.

 

사용 형식

개체 참조는 &;를 사용하여 다음과 같이 표현한다.

&entity_reference_name;

 

그림 5. 개체 참조의 예

6.2. 문자 참조

XML 문서에서는 특수 기호로 취급하는 '&' 혹은 '<', '>' 이외에도 여러 가지 특수 기호나 특수 문자를 사용해야 할 때가 있다. 예를 들면, 회사 마크나 문자표에 나와 있는 심볼 등을 생각해 볼 수 있. 이러한 심볼은 일반적인 키보드에도 나와 있지 않으므로 표현하기가 상당히 어렵다. 따라서 XML서는 문자코드를 사용해서 문자를 지정하는 방법을 사용한다.

그림 6. 문자 참조의 예

[문자 참조 코드를 손쉽게 사용 하는 방법]

문자 참조에서 사용하는 문자 코드는 엄청나게 많다. 물론, 자주 사용하는 코드는 일부 외워서 사용할 수 있겠지만, 무척 어려울 것이다. 따라서 그림과 같이 일반적인 워드 편집기에 있는 문자표를 사용하면 편리하게 문자 코드를 알아낼 수가 있다.

 

참고: 미리 정의된 5가지 개체명과 이에 대응하는 문자 참조 및 사용 방법

문자 개체 참조 문자 참조 어원 사용 예
< &lt; 16진수(&#x3C;)
10진수(&#60;)
less then <> 3 &lt; 5 </>
<> 3 &#x3C; 5 </>
> &gt; 16진수(&#x3E;)
10진수(&#62;)
greater
then
<> 5 &gt; 3 </>
& &amp; 16진수(&#x26;)
10진수(&#38;)
ampersand <title> XML &amp; Java </title>
" &quot; 16진수(&#x22;)
10진수(&#34;)
quotation
marks
<book kind="&quot;computer&quot;">
' &apos; 16진수(&#x27;)
10진수(&#39;)
apostrophe <book kind="이관용&apos;s book'>

7. CDATA 섹션

개체 또는 문자 참조를 사용하면 여러 가지 문자나 기호를 사용하여 XML 문서를 작성할 수 있다. 러나 XML 문서의 데이터를 표현하다 보면, 더 많은 특수 기호를 사용해야 할 때가 있다. 이런 경우 해당 특수 기호 문자 코드를 일일이 찾아 사용하기란 쉬운 일이 아니다. 특수 기호가 많이 사용되는 경우에는 CDATA 섹션을 사용하여 쉽게 표현할 수 있다. CDATA 섹션(Section)이라는 것은 문자나 기호를 태그 형식이나 코드로 인식하지 않고 문자 데이터를 그대로 표현하는 것을 말한다.

PCDATA(Parsed Character DATA)XML 파서가 해석된 또는 대치된 데이터라는 뜻으로, 해석한다라는 의미는 문자 데이터 안에 XML 권고안에 규정되어 있는 문자로 쓰여졌는지 조사하고, 또한 개체 참조가 있다면 개체 참조에 해당하는 값으로 치환하는 작업을 말한다.

대부분의 경우 문자 데이터는 PCDATA로서 XML 프로세서가 해석하는데, CDATA 섹션내에 정의된 문자 데이터는 XML 프로세서가 해석하지 않고 바로 응용프로그램으로 전달한다. 그래서 문자 데이터로 사용할 수 없는 '<' 문자와 '&' 문자도 CDATA 섹션 내에서는 마음대로 사용할 수 있고, 공백 문자의 길이도 보존되며, 캐리지 리턴, 라인 피드 문자도 보존된다. 즉 사용자가 작성한 데이터의 형태 그대로 응용 프로그램에 전달한다.

 

7.1 CDATA 섹션의 문법

<![CDATA[

... 여기에 내용을 적는다 ...

]]>

 

: CDATA 섹션의 사용 여부에 따른 문서의 출력 결과의 차이

그림 7. CDATA 섹션을 사용하지 않는 문서
그림 8. CDATA 센션을 사용한 문서

7.2 CDATA 섹션 사용 시 주의사항

[CDATA 섹션 사용 시 주의사항]

'<![CDATA['사이에 공백이 없어야 하고, 끝부분 ']]>'에도 공백이 없어야 한다.

CDATA 섹션 안에 CDATA 섹션을 포함하지 않아야 한다.

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

CDATA 구역은 엘리먼트 콘텐츠 내의 문자 데이터 어디에나 삽입할 수 있다.

(, XML 마크업(태그) 내에서는 사용할 수 없다)


8. 주석

주석(comment)은 일반 프로그래밍 언어의 주석의 기능과 동일한 것으로서, XML 문서를 작성하는 사람은 물론 XML 문서를 읽는 사람에게 문서를 보다 쉽게 이해하기 위한 보조 설명이다. 주석은 XML선언부 이후에는 어느 위치에나 올 수 있으며, DTDXML 스키마 같은 문서 정의 문서에서도 사용이 가능하다. 보통 XML 문서를 처리하는 XML 파서는 주석 부분을 무시하고 있으며 XML 주석의 형식은 다음과 같다.

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

 

주석을 사용할 때 주의할 점은 주석의 내용에는 '--'를 사용하면 안 되고, XML 선언 이전에 주석을

사용해서도 안 된다.

[ 잘못된 주석 표현 ]
<!-- 잘못 사용한 주석 -->
<?xml version="1.0" encoding="euc-kr"?>
<students <!-- 잘못 사용한 주석 -->>
<!-- 잘못 사용한 -- 주석 -->
XML 선언 이전에 표현됨
다른 요소의 내부에 표현
주석 내부에 "--" 문자 사용

정리

 

정형식 XML 문서란 XML 문법에 따라서 작성된 모든 XML 문서를 의미하며, XML 문서는 XML선언부, 스키마/네임스페이스 선언(선택사항), 그리고 XML 태그와 데이터로 구성되는 몸체의 세 부분으로 구성된다.

 

XML 선언부 선언 시 version 속성은 필수이며 encoding, standalone 속성은 선택표현이고, <?xml 로 시작해야 하며 공백은 없어야 한다.

 

XML 엘리먼트는 XML 문서 내에 데이터를 표현하기 위한 태그 정의와 데이터를 의미한다. XML엘리먼트 정의와 사용에 대한 중요한 사항은 다음과 같다.

모든 시작 태그는 대응되는 끝 태그를 가진다.

모든 이름은 대소문자를 구별한다.

태그를 겹쳐 사용하는 것을 허용하지 않는다.

루트 엘리먼트는 하나여야 한다.

이름은 XML 이름 부여 규칙에 적합해야한다.

 

XML 속성은 부가적인 정보나 데이터를 표현하기 위한 방법이다.

속성은 반드시 값을 가져야한다.

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

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

이름 부여 방법은 엘리먼트 이름 부여 방법과 동일하다.

한 엘리먼트에 여러 개의 속성이 사용되는 경우에는 공백으로 각각을 구분한다.

 

개체 참조란 XML 문서에서 기호나 문자열을 개체라고 하는데, 미리 정해진 특별한 코드 또는 이름을 사용하여 표현하기 위해 쓰이는 개념이다. 개체 참조는 ‘&’, ‘;’를 사용하여 나타내고 있으며, 개체 참조를 사용함으로써 특수 문자를 표현할 수 있다.

 

CDATAXML 파서에 의해서 해석되지 않고 문자 데이터를 그대로 표현하는 것을 말한다.

 

XML 주석은 XML 선언보다 먼저 사용할 수 없으며 다른 요소의 내부에 사용할 수 없다. 또한 주석 내부에 ‘--’ 문자를 사용할 수 없다.

 

XML 관련 참고 사이트

* http://www.w3.org/XML/

- Introduction, Working Group, Other Resources

* http://www.w3.org/TR/2004/REC-xml-20040204/

- W3C Recommendation of Extensible Markup Language (XML) 1.0 (Third Edition)

* http://www.xml.com

- A Technical Introduction to XML

- The Annotated XML 1.0 Specification

 

'정보과학 > 웹서비스특론' 카테고리의 다른 글

SOAP  (0) 2023.09.07
XML 스키마 (2)  (0) 2023.09.06
XML 스키마 (1)  (0) 2023.09.05
XML 네임스페이스  (0) 2023.09.05
웹 서비스 개요  (1) 2023.09.02