본문 바로가기

WEB

XML 기본 문법

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