XML-A~Z까지_1 다운로드

Report
XML 소개
XML A에서 Z까지
XML 이란?
• XML(eXtensible Markup Language)은 1998년 2월에 W3C(World
Wide Web Consortium)에서 제정한 확장형 마크업 언어이다. 여기서 ‘
확장가능’이란 간단히 말해서 ‘기존에 없던 것을 새로 만들 수 있는’으로
해석하면 되고, 마크업 언어란 문서의 내용을 구체적으로 전달하기 위한
추가적인 정보 표시 언어를 말한다. 실제로 XML은 새로운 마크업 언어
를 개발하기 위한 수단으로 사용된다.
2/126
XML의 특징 및 장점
• XML의 특징은
첫째, 내용과 표현이 분리된 것인데, HTML 태그가 주로 화면 표현을 기술하는 반면
, XML 태그는 내용을 기술하며, XSL(eXtensible StyleSheet Language)을 이용해
다양한 XML 문서를 여러 가지 화면으로 표현, 수정, 편집이 가능하다.
둘째, 단순성인데 사람이 이해하기 쉽고 다루기도 쉽다.
셋째, 확장성을 들 수 있는데 고정된 태그가 없어서 필요에 따라 언제든지 새롭게
만들 수 있다는 것이다.
넷째, 데이터의 대체성을 들 수 있는데 문자, 음성, 동화상 등 각종 데이터 구조를 대
체할 수 있으며, 각종 데이터간의 병합, 추출이 가능하여 필요한 정보만을 선택하여
볼 수 있다.
마지막으로 데이터 처리의 자동화가 가능하다는 것인데, XML의 구조는 컨텐츠의
의미를 해석할 수 있게 하는 정보를 포함하여 제공하기 때문에 사람을 배제한 자동
화 작업을 좀 더 효율적으로 지원할 수 있다.
3/126
XML의 특징 및 장점
4/126
XML의 관련 표준
(1) XSL(Extensible StyleSheet Language)
앞서 설명한 것처럼 XML 문서에는 표현(presentation) 정보가 들어있지 않다.
XML 문서에는 오직 데이터와 구조화 만이 들어있기 때문에 웹 브라우저나 프린터
, PDA와 같은 출력 매체에 표현하기 위해서는 XML 문서 내에 들어 있는 각 데이
터에 대한 레이아웃 처리를 별도로 지정해야 한다. 이렇게 XML 문서내의 데이터
내용을 어떠한 모습으로 표시되도록 할 것인가를 지정한 정보를 스타일시트
(StyleSheet)라 한다.
(2) XLink(XML Linking Language)와 XPointer(XML Pointer Language)
XLink와 XPointer는 XML 링크에 관련된 기술들이다. XLink는 XML 문서들 간의
링크를 생성하고 연결하기 위해 필요한 정보를 기술하는 마크업 언어이다.
(3) XML Schema
XML Schema는 문서내의 데이터 구조를 정의하기 위해서 사용한다. 즉, 문서 내
에서 사용되는 데이터들의 계층적인 구조 및 관계, 그리고 속성(attribute)들을 규
정한다. 또한 데이터의 자료형을 지정하거나 정의할 수 있어 문서 내에서 사용되
는 데이터들의 자료형을 제한하거나 확장할 수 있게 한다.
5/126
XML의 관련 표준
(4) XML Namespace
XML Namespace(이름공간)는 동일한 앨리멘트나 속성의 이름을 사용하는 문서
들 사이에서 이름 충돌 문제가 발생하는 것을 방지하기 위해 사용한다.
(5) XPath
XPath는 XML 언어로 쓰여진 XML의 직접적인 확장은 아니다. 즉, 비XML 언어이
다. 그러나 XML 문서의 특정 부분을 가리키고 식별하기 위해 사용되는 XML과 관
련된 유용한 기술이다. XPath에서는 XML 문서를 트리 구조로 인식하며, 문서 트
리내의 특정 내용이나 구조를 참조하는 표현식(expression)을 지정할 수 있다.
6/126
XML의 활용 분야
1) 개방형 재정 정보 교환(Open Financial Exchange: OFE or OFX)
인터넷을 통하여 금융기관과 기업, 고객 간의 금융 데이터의 교환을 목적으로 개
발된 XML 응용이다.
2) XML/EDI(Electronic Data Interchange)
전통적인 EDI에서 사용되는 UN/EDIFACT 표준안의 메시지 교환 형태를 XML 형
식으로 대체하여 인터넷을 통한 기업간 전자상거래를 위한 메시지 교환 방법을 정
의하고 있는 표준적인 프레임워크이다.
3) ebXML(Electronic Business XML)
UN/CEFACT와 OASIS에 의해 제안되어졌으며, 전 세계의 모든 전자상거래 데이
터 교환을 위하여 XML을 이용한 단일화된 개방형 국제적 표준을 만들 목적으로
만들어진 프레임워크이다.
7/126
XML의 활용 분야
1) 채널 정의 포맷(Channel Definition Format: CDF)
사용자가 웹 채널(인터넷에서 사용자의 컴퓨터로 컨텐츠를 배달하도록 설계된 웹
사이트)을 표준적인 방법으로 정의할 수 있도록 마이크로소프트사에서 제안한 파
일 형식이다.
2) 개방형 소프트웨어 기술(Open Software Description: OSD)
인터넷을 통하여 다양한 플랫폼에 존재하는 패키지 소프트웨어의 갱신을 편리하
게 하도록 제안된 XML 응용이다. OSD는 자동화된 소프트웨어 배포 환경에 유용
할 것이며 특히 PC 소프트웨어와 같은 프로그램들을 쉽게 설치하고 유지 관리하
는데 많은 이점을 제공할 것이다.
3) 무선 마크업 언어(Wireless Markup Language: WML)
휴대폰 또는 호출기와 같이 표시 화면이 작은 무선 통신 장치들에서 정보를 표시
하고 관리하기 위한 마크업 언어이다.
4) 배포 및 복제 프로토콜(Distribution and Replication Protocol: DRP)
인터넷상에서 정보 전달의 속도를 빠르게 하고 최적화하기 위한 프로토콜이며
XML 응용이다.
8/126
XML의 활용 분야
1) 동기식 멀티미디어 통합 언어
(Synchronized Multimedia Integration Language: SMIL)
멀티미디어 자료의 시간적, 공간적 관계를 정의하고 표현하기 위한 마크업 언어로 일련의 개
별적 멀티미디어 객체를 동기화된 멀티미디어 프레젠테이션으로 통합할 수 있도록 하고 있
다. 즉, SMIL을 사용하여 프레젠테이션의 시간적 행동과 레이아웃 및 하이퍼링크를 미디어
객체와 결합하는 표현을 기술할 수 있다.
2) 벡터 그래픽 언어(Vector Markup Language: VML)
벡터 그래픽 정보의 화면 디스플레이 및 편집을 위한 마크업과 벡터 정보의 부호화를 위한
포맷을 정의한다.
3) 악보 교환 포맷(MusicXML)
인터넷상에서 음악 소프트웨어 프로그램들 간에 악보 데이터(예를 들면, 악보 편집, 시퀀서,
음악 교육, 음악 데이터베이스)를 쉽게 교환할 수 있도록 정의된 악보 교환을 위한 포맷이다.
4) 정밀 그래픽 마크업 언어(Precision Graphics Markup Language: PGML)
웹을 위한 경량급의 2차원 그래픽 언어이다. PGML은 웹 상에서 그래픽 디자이너가 표현한
2차원 그래픽이 최종 사용자 시스템에 정확히 나타나도록 보장한다.
9/126
XML 준비하기
XML A에서 Z까지
XML 문서 구조
• XML 문서는 크게 두 개의 주요한 부분으로 구성된다. 즉, 프롤로그
(prolog)와 문서 앨리멘트(document element)로 구성된다(문서 앨리멘
트는 루트 앨리멘트라 불리기도 한다). 프롤로그는 XML 문서에 대한 선
언과 문서의 실질적인 내용이 어떠한 구조로 구성되었는지를 나타내는
헤더 정보이다. 문서 앨리멘트는 마크업으로 구성되는 문서의 실질적인
내용을 나타낸다.
• XML 1.0의 권고안의 문법은 간단한 EBNF(Extended Backus-Naur
Form) 표기법을 사용한다. 그래서 XML을 사용하는 개발자들은 EBNF
표기법을 잘 알고 있어야 XML 스펙을 이해할 수 있게 되고, 보가 쉽게
XML을 활용할 수 있게 된다. 다음은 EBNF 표기법이다.
• 기호 ::= 표현식 (Symbol ::= Expression)
11/126
XML 문서 구조
• 표현식은 다음과 같은 패턴과 결합하여 좀 더 복잡한 형태를 가질 수 있다
. 여기서 A와 B는 표현식 중의 하나라고 생각하면 된다.
패턴
설명
A
A 표현은 반드시 한번은 기술되어야 한다.
A?
A 표현은 기술될 수도 있고 되지 않아도 된다.
AB
A 표현이 먼저 기술되고 B 표현이 나중에 기술된다.
A|B
A와 B 표현 중 하나만 기술되어야 한다.
A-B
A 표현이 기술될 때 B 표현과는 일치되지 않아야 한다.
A+
A 표현이 최소한 한 개 이상이 기술되어야 한다.
A*
A 표현은 기술하지 않아도 되고, 한 개 이상이 기술되어도 된다.
• 다음의 예는 기호 PatternNum이 영소문자, 영대문자 그리고 0에서 9까
지의 문자 중 한 문자를 갖는 표현식이다.
PatternNum ::= [a-zA-Z0-9]
12/126
XML 문서 구조
document(문서) ::= prolog(프롤로그) element(앨리멘트) Misc(기타)*
13/126
XML 선언
• 선언에는 XML 권고안의 버전, 문서의 인코딩 방식, 그리고 스탠드얼론
(standalone) 문서 여부에 대해 기술하도록 되어 있다.
<?xml
version=“버전번호”
encoding=“인코딩방식”
standalone=“yes|no” ?>
• XML 선언을 할 때 주의할 점은 첫째로 XML 선언 이전에는 어떤 내용이
든 기술해서는 안된다. 즉, XML 선언은 반드시 XML 문서의 첫 줄에 기술
되어야 한다. 둘째로 XML 선언의 시작은 ‘<?xml' 문자열로 시작한다. 이
때 주의할 점은 ’<?‘ 와 ’xml' 문자 사이에 공백을 두어서는 안 된다.
<?xml version="1.0" encoding="EUC-KR" standalone="yes"?>
14/126
XML 앨리멘트
• XML 문서에서 앨리멘트(element)는 문서의 논리적 구조를 나타내며, 문
서의 내용을 표현한다. 앨리멘트는 시작 태그(start-tag), 끝 태그(endtag), 그리고 앨리멘트 내용으로 구성된다. 시작 태그명과 끝 태그명은 동
일해야 한다.
<시작 태그명>
내용(컨텐트)
</끝 태그명>
15/126
Well-Formed Document의 구성 앨리멘트
• 잘 구성된 문서란 XML 문서를 구성하기 위한 최소의 필수적 문법 요건을
충족시키는 문서를 말한다.
○ 루트 앨리멘트에 대한 잘못 사용한 예
<?xml version="1.0" encoding="EUC-KR"?>
<이름>홍길동</이름>
<성별>남자</성별>
<나이>25</나이>
• 위의 예제 문서에는 루트 앨리멘트를 포함하고 있지 않다. 그러므로 문법
적으로 오류를 일으킬 것이다. 다음의 예처럼 XML 문서 내에 루트 앨리멘
트가 반드시 포함되어야 한다.
<?xml version="1.0" encoding="EUC-KR"?>
<개인정보>
<이름>홍길동</이름>
<성별>남자</성별>
<나이>25</나이>
</개인정보>
16/126
Valid Document의 구성앨리멘트
• 유효한 문서는 잘 구성된 문서보다는 더 엄격한 검증 절차를 거치는 문서
라 할 수 있다. 즉, 유효한 문서가 되기 위해서는 문서 내에
DTD(Document Type Definition) 선언을 포함하고 있어야 하며, 또한 이
DTD에 정의된 마크업 규칙에 따라 문서를 구성해야 한다.
DTD
마크업 규칙 적용
XML 문서
마크업 규칙 참조
유효성 검증
XML 파서
17/126
Valid Document의 구성앨리멘트
• 유효한 문서는 잘 구성된 문서에 비하여 사용하기가 다소 복잡하게 보이
지만 대신 많은 장점을 제공한다. 그 중의 하나는 유효한 문서의 DTD는
문서 클래스를 만들기 위한 문법으로 유용하게 사용되어질 수 있다는 점
이다. 여기서 문서 클래스(document class)란 비슷한 종류의 문서를 만
들기 위한 공통적 특징을 담고 있는 구조적 정보를 말한다.
XML
Memory
DTD
협조문
내부
기안문서
Book
DTD
동화책
Project
DTD
수필집
프로젝트 A
개발문서
프로젝트 B
개발문서
18/126
기본적인 XML문서의 작성 방법
• 작성할 XML 문서의 준비
이름
휴대전화
주소
홍길동
010-1234-5678
마산시 회원구 회원동
성춘향
010-4321-8765
대구시 수성구 만촌동
이몽룡
010-9876-5432
경북 영주시 휴천동
• 편집기를 이용하여 문서 작성
19/126
기본적인 XML문서의 구성 요소
• 속성(Attribute)
XML 문서를 작성하는데 있어서 같은 유형의 앨리멘트를 쉽게 구분하기 위해 색인
의 개념으로 식별자를 지정하거나, 앨리멘트에 새로운 정보를 추가하기 위해 사용
되는 앨리멘트의 특성을 속성이라고 한다.
• 엔티티(Entity) 선언
엔티티란 문서 내에서 참조할 수 있는 문자 집합의 단위로 다음과 같은 기능을 나
타낸다.
• 처리 명령
처리 명령은 문서가 응용 프로그램의 명령을 포함하도록 허용한다.
• CDATA
CDATA 부분은 문자 데이터가 발생하는 어느 곳에든 올 수 있다. 이는 문자를 포함
하고 있는 텍스트 블록을 회피하기 위해 사용되는데 만약 그렇지 않으면 텍스트는
마크업으로 인식된다.
20/126
프로세싱 명령문
• 프로세싱 명령문(processing instruction)은 XML 응용에게 정보를 전달
하기 위해 사용된다. XML 파서는 XML 문서 내에 들어있는 프로세싱 명
령문을 응용 프로그램 또는 모듈에게 그대로 전달한다.
<?Target Instruction?>
• 프로세싱 명령문의 시작과 종료 구분자는 ‘<?’과 ‘?>’이다. Target은 명령
문을 처리할 응용 프로그램 또는 모듈의 이름이다. Instruction은 응용에
게 전달할 명령문이다.
21/126
주석
• 주석(comment)은 문서의 내용에 주석을 달거나, 전체적으로 문서에 대
한 일반적인 설명을 덧붙이기 위하여 사용된다. 즉, 문서를 읽는 사람에게
가독성을 높이기 위하여 사용된다.
<!-- 주석문자들 -->
• 주석의 시작과 종료 구분자 사이에는 더블 하이픈(--)을 제외한 어떠한 문
자라도 사용될 수 있다. 이 사이에 놓여 있는 모든 문자들은 주석으로 처
리된다.
• 주석은 마크업의 내부가 아니면 어디에서든 사용할 수 있다. 프로세싱 명
령문을 사용할 수 있는 위치와 동일하다.
22/126
DTD를 이용한 MarkUp언어 이해하기
XML A에서 Z까지
DTD의 의미
• DTD(Document Type Definition)는 다른 마크업 언어를 정의하기 위한
문법이라 할 수 있다. 여기서 마크업 언어란 문서 구조를 구성하는 앨리
멘트들 즉, 앨리멘트와 속성, 엔터티의 규칙을 정의하는 언어를 말한다.
• 잘 구성된 문서는 XML 문서의 구조를 나타내는 DTD를 가지고 있지 않
다. 최소한의 XML의 문법적 규약에 따라 문서를 작성하기만 하면 된다.
그러나 유효한 XML 문서는 반드시 DTD를 포함하고 있어야 한다.
24/126
DTD의 의미
• 문서가 유효하다고 하는 것은 이미 약속된 규칙에 따라 그 문서가 명확히
작성되었다는 것을 보장한다는 것과 동일하다. 그러므로 문서의 유효성
은 데이터 교환과 같은 응용을 위해 매우 중요하다.
25/126
DTD의 의미
• 문서를 유효하게 만드는 방법은 여러 가지가 있다. 문서 작성자 자신이 문
서 편집기를 통해 DTD에 정해진 마크업 규칙에 따라 직접 작성하거나, 전
용 XML 편집기를 사용하거나, DTD 구조를 이해하고 있는 응용 프로그램
에서 직접 생성해내거나, 문서 관리 시스템에서 자동으로 만들 수도 있다.
하지만 반드시 문서가 DTD 규칙에 맞게 작성되었는지 유효성을 검증할
필요가 있다. 이를 위해 유효성 검사를 위한 XML 파서를 사용한다.
26/126
내부 DTD 서브셋 작성 위치
• 마크업 언어에 대한 정의가 XML 문서 내부에서 작성되는 것을 내부 DTD
서브셋이라 한다. 일반적으로 새로운 마크업 언어를 개발하기 위해서 내
부 DTD 서브셋을 작성하지는 않는다. 내부 DTD 서브셋은 주로 외부
DTD 서브셋의 일부 내용을 재정의해서 XML 문서에 적용할 목적으로 이
용된다.
27/126
외부 DTD 서브셋
• xml 문서 중에서 DTD 정의를 외부의 별도 파일로 저장하여 사용할 수 있
으며, 우리가 일반적으로 DTD 문서라고 부르는 것은 바로 외부 DTD 서
브셋을 의미한다.
• 외부 DTD 파일은 가급적 확장명을 ‘dtd’로 사용하고, 같은 폴더에 수록하
여 사용하기 쉬도록 정의하는 것이 좋다.
․ 텍스트(Text) 선언
․ 앨리멘트(Element) 선언
․ 속성(Attlist) 선언
․ 엔티티(Entity) 선언
․ 노테이션(Notation) 선언
․ 프로세싱 인스트럭션(Processing Instruction)
․ 파라미터 엔티티 참조(Parameter Entity Reference)
․ 주석(Comment)
․ 공백(Space)
․ 컨디셔널 섹션(Conditional Section)
28/126
#PCDATA
• PCDATA라는 것은 Parsed Character DATA의 약자로 그 앨리멘트가 파
싱된(parsed) 문자 데이터를 사용한다는 것을 파서에게 알리는 역할을
한다
• ‘#PCDATA’는 시작과 종료 태그 안에 포함되어 있는 내용과 연결되어 있
으며, 다음과 같은 문자가 내용에 포함되어 있으면 오류가 발생하므로 대
체 문자를 사용하여 파싱하면 해당 문자가 나타난다.
대체문자
유효하지 않는 문자
&lt;
<
&gt;
>
&amp;
&
&apos;
'
&quot;
"
29/126
EMPTY
• 앨리멘트의 내용을 포함하지 않을 때 EMPTY 단어를 사용하며 XML 문서
를 나타낼 때는 빈 앨리멘트로 나타내며, 내용을 나타내면 파서 에러가 나
타난다.
• EMPTY앨리멘트를 문서에서 사용할 때는 굳이 시작/종료 태그를 쌍으로
나타낼 필요 없이 슬래시를 이용한 약식 표기법으로 사용할 수 있다.
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE 명세[
<!ELEMENT 명세 (코드*)>
<!ELEMENT 비고 EMPTY>
]>
<명세>
<코드>1111</코드>
<코드>2222</코드>
<코드>3333</코드>
<비고/>
</명세>
30/126
ANY
• ANY는 어떠한 종류의(#PCDATA도 포함) 내용도 허용한다는 뜻으로,
EMPTY와 마찬가지로 ANY도 괄호나 예약된 이름 지시자를 넣지 않고,
어떤 앨리멘트의 형태든지 허용한다는 의미로 모든 데이터의 형을 포함
한다.
31/126
앨리멘트 선언 문법
• 앨리멘트를 선언할 경우 앨리멘트의 내용을 정의 하면 하위의 자손 앨리
멘트들을 포함할 수 있으며, 앨리멘트의 순서 또는 표현 횟수를 정의할 수
있다.
기호
기호타입
설명
예제
예제 설명
|
세로막대
or 조건
A|B
A와 B중 하나만 반드시 나타남
,
쉼표
명시된 순서대로 나타남
A,B
A가 나타난 다음에 뒤에 B가 나타남
?
물음표
안 나타나거나 한번은 나타날 수 있음
A?
A가 나타나지 않거나 나타날 수 있음
기호 없음
반드시 한번 나타남
A
A가 반드시 나타남
수도 있음
A*
A가 없을 수도 있고 여러번 나타날 수도 있음
A+
A가 반드시 있어야 하고 여러번 나타날 수 있음
안 나타날 수도 있고 여러 번 나타날
*
별표
+
덧셈
최소 1번 이상 나타남
()
괄호
그룹 앨리멘트
(A|B), C
A나 B 중 하나가 반드시 나타나야 하고 그 뒤에 C가
나온다
32/126
DTD 유효성 검사
• XML 문서가 해당 DTD 문서에 정의되어 있는 구조에 맞게 작성되었는지
검사하는 것을 유효성 검사라고 한다. 유효성 검사 결과 이상이 없는 XML
문서를 ‘해당 DTD 문서에 대해 유효한 문서’라고 부른다. Well-Formed
문서는 웹브라우저를 이용하여 곧바로 검증을 할 수 있어서 WellFormed 문서를 만족하면 계층 구조의 내용을 나타내고, 그렇지 않으면
오류를 발생하여 준다.
33/126
Attribute의 선언
• 속성 리스트 선언은 다음과 같은 목적을 위해 사용한다.
-
주어진 앨리멘트 유형(element type)에 속하는 속성들의 집합을 정의한다
이러한 속성들의 유형을 제한한다.
속성들의 기본값(default value)을 제공한다.
• 속성 리스트 선언 방법은 다음과 같다.
<ATTLIST 앨리멘트명, 속성명, 속성형, default>
- 앨리멘트 명(element-name) : 속성이 속한 앨리멘트의 형
- 속성 명(attribute-name) : 실제 속성이 갖는 이름
- 속성 형(attribute-type) : 속성이 갖는 타입
- default : 속성의 존재 여부를 나타내기 위한 항목으로 초기값, #IMPLIED,
#REQUIRED, #FIXED가 있다.
34/126
Attribute의 선언
• 속성의 유형 선언
속성의 유형은 선언된 속성의 유형을 의미하며, 속성타입에는 다음과 같이 세 종류가
있다.
문자열유형
속성중에서 가장 일반적인 형태로 문자 데이터만 포함한다.
토큰화유형
키워드를 사용하여 속성 값을 제한하여 사용할 수 있다.
열거형유형
텍스트를 나열한 후 하나만 선택하여 지정할 수 있다.
• 문자열 유형
속성 유형 중에서 일반적인 유형으로 ‘CDATA’ 문을 사용하여 유형을 선언하며, 문자
데이터만 포함할 수 있다.
35/126
Attribute의 선언
• 토큰화 유형
특별한 의미를 갖는 문자로 여러 가지 방법으로 나타낼 수 있으며 그 유형의 종류
는 다음과 같다.
유형
ID
IDREF
내용
유일한 문자를 의미하며, 앨리멘트를 구분한다.
문서안에 선언된 ID를 참조한다.
IDREFS
공백으로 분리된 여러 ID를 참조한다.
ENTITY
외부 이미지 자료를 참조한다.
NMTOKEN
NMTOKENS
사용문자가 알파벳, 숫자, 마침표, 하이픈을 의미한다.
공백으로 분리된 값들을 허용한다.
• 열거형 유형
열거형은 문자열 목록에서 한 가지를 선택하는 것으로 ‘|’ 연산자를 사용하여 선택
값을 나열하고 그 값들 중에서 하나를 적용하는 것이다.
36/126
XML 네임스페이스
XML A에서 Z까지
이름공간의 이해
• 구조가 서로 다른 문서들을 하나의 문서로 통합할 때 동일한 이름의 앨리
멘트나 속성 이름들이 중복되어 사용됨으로서 이름 충돌 문제가 발생 할
수 있다. 이름충돌이란 이름이 같음으로 인해서 구조상 오류를 일으키거
나 잘 못 해석할 수 있게 만드는 것을 말한다.
문서A
문서B
<item-list>
<title>Best Classic</title>
<artist>Various artists</artist>
<price>17000</price>
</item-list>
<item-list>
<title>The XML Handbook</title>
<author>Goldfarb</author>
<publisher>PTR PH</publisher>
</item-list>
통합문서
<item-list>
<item>
<title>Best Classic</title>
<artist>Various artists</artist>
<price>17000</price>
</item>
<item>
<title>The XML Handbook</title>
<author>Goldfarb</author>
<publisher>PTR PH</publisher>
</item>
</item-list>
38/126
이름공간의 선언
• 이름공간을 사용하기 위해서는 먼저 이름공간에 대한 선언이 있어야 한
다. 이름공간의 선언 형식은 앨리멘트의 시작 태그 내에서 속성 값을 지정
하는 형식과 유사하다.
xmlns:접두사 ="URI"
• 'xmlns'는 XML의 이름공간(XML namespace)를 나타내는 예약어이다.
이 예약어와 그 다음의 접두사 사이에는 콜론(:) 문자가 나와야 한다.
• 접두사(prefix)는 사용자에 의해서 지정되는 이름공간의 속성 이름이다.
이를 이름공간 식별자(namespace identifier)라 부른다. 접두사는 이름
공간의 실제 이름인 "URI"를 간략한 이름으로 지정하기 위한 약어
(abbreviation) 이다.
• ‘URI’는 이름공간의 속성 값이다. 이는 이름공간의 실제 이름을 나타낸다.
<item-listxmlns:cdlist="http://www.cdworld.com">
․․․
</item-list>
- 이 예에서는 ‘item-lis’t라는 앨리멘트 내에서 이름공간을 선언하고 있다.
39/126
이름공간의 사용
• 이름공간이 선언되고 나면 문서 내의 앨리멘트와 속성 이름 앞에 이름공
간의 접두사를 지정할 수 있다. 이렇게 접두사를 이름 앞에 지정함으로써
지역이름이 한정된 의미를 갖도록 한다. 이를 한정된 이름(qualified
name)이라 한다. 한정된 이름은 다음과 같이 콜론(:)으로 구분되는 두 개
의 이름으로 구성된다. 다음은 한정된 이름의 형식을 나타낸다.
접두사:지역이름
• 접두사는 이름공간 선언에서 정의된 이름이다.
• 지역 이름은 앨리멘트나 속성이름이다.
40/126
이름공간의 적용규칙
• 이름공간의 선언과 사용 형식은 비교적 간단하다. 하지만 사용에 있어 몇
가지 주의해야 할 규칙들이 있다.
<?xmlversion="1.0"encoding="UTF-16"?>
<cdlist:item-listxmlns:cdlist="http://www.cdworld.com">
․․․
</cdlist:item-list>
• 이 예제에서 ‘cdlist’라는 이름공간이 ‘item-list’ 루트 앨리멘트에서 선언되어졌다. 그러므로 ‘cdlist’라는
이름공간의 접두사를 루트 앨리멘트 이하에 있는 모든 하위 앨리멘트에서 사용할 수 있다.
• 이름공간이 앨리멘트나 속성에 사용되어 질 때는 반드시 한정된 이름 형식을 가져야 한다. 즉, 동일한 접
두사가 시작태그와 종료태그에서 동시에 사용되어져야 하며, 또한 생략되어서는 안 된다.
<cdlist:title>BestClassic</title>
<cdlisttitle>BestClassic</cdlisttitle>
• 종료 태그에 cdlist 접두사를 사용하지 않았고, 두 번째 예는 접두사를 콜론(:)으로 구분하지 않았기 때문
에 잘못된 사용이다.
41/126
이름공간의 적용규칙
• 기본 이름공간(default namespace)은 접두사 없이 선언되는 이름공간을
말한다. 기본 이름공간도 선언된 앨리멘트와 그 하위의 앨리멘트들에 적
용된다. 단, 접두사를 사용하지 않는다. 따라서 기본 이름공간은 접두사
사용에 따른 번거로움을 없앨 수 있으며 더 간결한 방식으로 앨리멘트들
에 이름공간을 표현할 수가 있게 된다.
• 특정 앨리멘트의 제외
• 이름공간을 지정할 때 빈 URI를 가지도록 선언할 수 있다. 빈 URI를 가지
는 이름공간은 부모 앨리멘트에 지정된 이름공간의 영향을 받지 않도록
제외시킬 때 사용한다.
42/126
속성과 이름공간
• 속성(attribute)에 대해서도 앨리멘트와 마찬가지로 이름공간을 지정할
수 있다. 속성 이름에 특정한 이름공간을 지정하면, 그 속성은 앨리멘트와
는 다른 이름공간을 사용할 수 있다.
• 그러나 접두어를 갖지 않는 속성들은 앨리멘트의 이름공간에 속하지 않
는다는 사실에 주의하자. 또한 이러한 속성들은 기본 이름공간에도 속하
지 않는다. 따라서 접두어 없는 속성들은 이름공간이 전혀 없는 것이다.
43/126
DTD와 이름공간
•
•
•
일반 XML 문서에서와 마찬가지로 DTD 내에서도 앨리멘트와 속성에 대하여 이름
공간을 지정할 수 있다. 하지만 DTD에서 사용되는 모든 이름공간에 대한 선언은
반드시 DTD에 나타나야 한다. 즉, 그것이 기본 이름공간이든 접두사를 가지는 이
름공간이든 그에 대한 선언이 반드시 있어야 한다.
DTD내에서 사용되어지는 이름공간의 선언 방식은 XML 문서에서 지정하는 방식
과 약간 다르다. DTD의 앨리멘트에 사용되는 이름공간의 선언은 속성 선언목록
에 나타나야 한다.
다음은 DTD내에서의 이름공간 선언에 대한 일반적인 형식을 나타낸다.
• <!ATTLIST접두사:앨리멘트_이름 xmlns:접두사 CDATA#FIXED"URI">
•
•
이처럼 DTD에서 정의되는 이름공간의 접두사는 ‘xmlns:접두사’ 형식으로 표현
하며, 이 접두사와 연관되는 URI는 문자열인 ‘CDATA’ 형식의 속성 값 즉, 리터럴
로 표현 된다.
속성 값에 대한 디폴트 값은 위의 선언 형식처럼 ‘#FIXED’로 지정하여 고정 값을
가지게 할 수도 있으며, 또한 ‘#IMPLIED’, ‘#REQUIRED’와 같은 키워드를 지정할
수도 있다.
44/126
XML 스키마
XML A에서 Z까지
XML 스키마의 이해
• XML Schema Definition Language(XSD)로 불리어지는 XML Schema
는 W3C에서 제정한 표준이다. 이 표준은 XML 문서의 구조와 내용에 대
한 규칙을 정의하기 위한 언어이다. 즉, 문서의 구조를 나타내는 앨리멘
트나 속성에 대한 규칙과 이들 앨리멘트들에서 사용되는 데이터에 대한
제한 규칙 등을 정의하는 언어이다.
• DTD가 XML 언어와는 다른 문법과 구조를 이용하여 정의되었다는 것이
다. 그리고 다른 측면은 다양한 데이터타입을 제공하고 있지 못하다는 사
실이다. 그로 인해서 DTD를 사용하여 폭 넓은 응용을 개발하려는 소프트
웨어 개발자들은 DTD의 한계성으로 인해 많은 불편을 느껴왔다.
46/126
DTD의 단점
첫째, 문서 작성자 측면에서 보면 DTD를 이용하는 것은 매우 번거롭다.
둘째, DTD 자체가 XML이 아니기 때문에 DTD를 처리하기 위한 별도의 소프
트웨어 모듈 및 개발 과정이 필요하다.
셋째, DTD는 이름공간을 지원하지 못한다.
넷째, DTD에서 지원되는 데이터타입은 몇 가지로 한정되어있다
47/126
XML 스키마의 장점
• XML Schema는 DTD에서 많은 제한된 사항과 단점을 개선한 언어로서
더욱 강력하고 유연한 특성을 가지고 있다.
 XML Schema는 XML 문법으로 정의되어 있으므로, XML Schema 문서
와 적용되는 XML 문서 인스턴스는 동일한 문법으로 작성되어진다.
 XML Schema는 XML 표준 문법을 따르므로 XML 프로세서를 이용하
여 처리될 수 있다.
 XML Schema 문서 내에서 이름공간을 사용하여 구조가 다른 동일한
이름을 갖는 여러 개의 앨리멘트를 선언할 수 있다.
 정수, 실수, 시간, 날짜와 같은 많은 기본 데이터타입을 제공하고 있으
며, 사용자 정의 데이터타입을 정의할 수 있다.
48/126
스키마의 주요 구성 앨리멘트
• 문서의 유형 정의
• XML Schema에서는 두 가지의 문서 유형을 정의할 수 있도록 하고 있다.
ㆍsimpleType
ㆍcomplexType
• ‘simpleType’은 데이터 값만을 가지는 앨리멘트나 또는 속성 타입을 나타낸다.
• ‘complexType’은 자식 앨리멘트나 속성을 포함 할 수 있는 타입이다.
• 데이터타입
• XML Schema는 44개의 미리 정의된 다양한 데이터타입을 제공하고 있
다. 이들 데이터타입은 크게 네 가지 범주로 구분된다.

수치 데이터타입

문자열 데이터타입

날짜 및 시간 데이터타입

기타 데이터타입
• 전역과 지역 앨리멘트
• DTD와 스키마의 중요한 차이점 중의 하나는 전역과 지역 앨리멘트의 사
용에 관한 것이다. DTD에서 모든 앨리멘트 선언은 전역적 특성을 갖는다.
49/126
기본 스키마 문서
50/126
스키마 문서의 프롤로그
• 스키마 문서는 표준 XML 문서이다. 즉, XML 스키마 언어는 XML 언어를
이용하여 정의된 XML의 한 응용으로 스키마의 문서구조는 XML 문서구
조를 따른다.
• 그러므로 스키마 문서의 처음부분은 일반 XML 문서와 같이 프롤로그로
구성된다. 프롤로그에는 XML 선언문, 주석 등이 나올 수 있다.
• 일반적으로 XML 선언문은 다음과 같은 형태로 선언되어진다.
<?xmlversion="1.0"encoding="euc-kr"?>
51/126
스키마 문서의 루트 앨리멘트
• XML 선언문 다음에는 스키마 문서에 대한 실질적인 내용 즉, 스키마에서
정의되는 앨리멘트 선언들이 나온다. 일반 XML 문서와 같이 스키마 문서
도 루트 앨리멘트로 시작되며, 그 아래에는 여러 하위 앨리멘트들을 포함
한다.
• 스키마의 표준 루트 앨리멘트의 이름은 ‘schema’이고, 표준 이름공간의
접두사는 ‘xsd’이다. 접두사의 이름은 XML 이름규칙에만 맞으면 어떤 것
을 사용해도 무방하다. 하지만 접두사에 지정되는 URI 즉, 표준 이름공간
은 반드시 다음의 주소형식을 사용하여야 한다. 즉, 임의로 바꾸어서 사용
할 수 없다는 의미이다.
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
52/126
스키마 이름공간
• 스키마 이름공간은 스키마에서 사용되는 앨리멘트, 데이터타입 등을 지
정하기 위해 사용되는 이름공간이다. 이 스키마 이름공간은 schema 루
트 앨리멘트에 반드시 필수적으로 지정되어야 한다.
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
• 일반적으로 ‘xsd’를 접두사로 많이 사용하고 있지만, 접두사로 사용되는
이름은 고정되어 있지 않으므로 어떠한 이름이든 자유롭게 사용할 수 있
다. 그러나 이름공간으로 지정되는 URI는
‘http://www.w3.org/2001/XMLSchema’로 선언되어야 한다. 사용자가
이 값을 임의로 변경할 수 없다는 의미이다.
• 스키마 이름공간을 선언함으로써 W3C XML Schema 표준에 정의되어
있는 앨리멘트나 데이터타입들을 사용할 수 있다. 즉, ‘schema,
element’, ‘simpleType’, ‘complexType’ 등의 내장된 앨리멘트와
‘sequence’, ‘string’, decimal’, ‘boolean’, ‘date’, ‘time’ 등의 미리 정의
된 데이터타입들을 사용할 수 있게 된다.
53/126
기본 이름공간
• 기본 이름공간을 사용할 때는 접두사를 사용하지 않는다. 기본 이름공간을 사용함
으로써 스키마 문서와 스키마를 적용하는 문서 인스턴스를 작성할 때 좀 더 편리
하게 작업할 수 있다.
• 스키마 문서에 대한 기본 이름공간은 기본적으로 루트 앨리멘트에 지정한다. 그
이유는 루트 앨리멘트에 선언된 기본 이름공간은 하위의 모든 앨리멘트들에 영향
을 미치기 때문이다.
• 이러한 기본 이름공간을 선언하는 형식은 다음과 같이 접두사를 갖지 않는 이름공
간을 schema 루트 앨리멘트에 지정하면 된다.
<schemaxmlns="http://www.w3.org/2001/XMLSchema">
• 타겟 이름공간
타겟 이름공간은 스키마에서 사용자정의 앨리멘트가 속해 있는 특정 이름공간을 지정하는
것이다. 타겟 이름공간을 지정하기 위하여 ‘targetNamespace’ 속성을 사용한다. 이
‘targetNamespace’ 속성에 정의할 수 있는 URI는 하나이며, 스키마 문서 내에서 유일해야
한다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.mybook.com">
․․․
</xsd:schema>
54/126
스키마와 XML 문서의 연결
• XML 문서에서 ’schemaLocation’ 속성을 사용하여 스키마 문서를 직접
참조할 수 있다. 스키마 문서를 참조한다는 의미는 XML 문서가 어떠한 스
키마의 규칙을 따르고 있다는 것을 선언하는 것이다. 이로써 XML 프로세
서는 XML 문서에 연결된 스키마의 규칙을 파악하고, 해당 XML 문서가
지정된 스키마 규칙에 맞게 작성되어 있는지 검증할 수 있게 된다.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
• 여기서 ‘xsi’는 XML 스키마 인스턴스 이름공간의 표준 접두어이고, ‘http://www.
w3.org/2001/XMLSchema-instancesms’ 스키마 인스턴스에 대한 표준 URI를 나타낸다.
• 스키마 인스턴스 이름공간이 선언되고 나면, 스키마의 위치를 지정하는
‘schemaLocation’ 속성을 사용할 수 있게 된다. 즉, ‘schemaLocation’
은 스키마 인스턴스 이름공간에 속해 있는 미리 정의된 속성이다.
xsi:schemaLocation="XML_문서의_이름공간 스키마_위치"
• 이 ‘schemaLocation’ 속성은 두 부분으로 구성된 값을 가진다. 첫째 부분은 XML 문서의 이름공간을 나
타낸다. 일반적으로 기본 이름공간과 같은 URI를 지정한다. 두 번째 부분은 스키마 문서가 위치하는 URI
를 나타낸다.
55/126
스키마 파일 포함하기
•
•
•
일반적으로 스키마의 분량이 커지게 되면 하나의 커다란 스키마의 정의를 여러 개의 파일로
나누어서 저장한다. 즉, 각 파일은 스키마의 부분집합(subset)을 저장한다. 그런 다음 스키
마의 최상위 파일에서는 이들 개별 스키마 파일을 불러들여 스키마의 일부로 포함시켜서 스
키마 문서를 구성할 수 있다.
이처럼 스키마의 부분집합으로 스키마의 문서 내에 파일의 내용을 포함시키기 위해서는 포
함하려는 스키마와 포함되는 스키마가 동일한 타겟 이름공간을 참조해야만 한다.
XML Schema의 ‘include’ 앨리멘트는 스키마 파일을 불러들여 스키마 정의 내에 포함되게
한다. include문의 형식은 다음과 같다.
<xsd:include schemaLocation="스키마위치“/>
• 다른 타겟 이름공간에 속해 있는 여러 스키마 파일을 불러들여 단일 스키
마를 정의할 수 있다. 이를 위해서는 ’xsd:import’ 앨리멘트를 사용한다.
이 앨리멘트의 사용 형식은 다음과 같다.
<xsd:importnamespace="스키마위치“
xsi:schemaLocation="XML_문서의_이름공간 스키마_위치"/>
• 여기서 ‘namespace’ 속성에는 가져오려는 스키마의 이름공간 URL을 값으로 지정하고,
’xsi:schemaLocation’ 속성은 문서의 기본이름공간과 가져오려는 스키마의 실제 위치를 나타내는 두
부분으로 구성된 값을 가진다. 이 속성을 사용하기 위해서는 스키마 인스턴스 이름공간이 선언되어 있어
야 한다.
56/126
스키마문서의 타입 정의
XML A에서 Z까지
simpleType 정의
• 앨리멘트 선언
• 데이터 값만을 가지며 자식을 갖지 않는 단순한 형태의 앨리멘트는
‘simpleType’으로 정의되며, 그 선언 형식은 다음과 같다.
<xsd:elementname="앨리멘트_이름"type="xsd:앨리멘트_타입"/>
• 여기서 ‘앨리멘트_이름’은 앨리멘트의 이름을 나타내며, ‘앨리멘트_타입’은 앨리멘트의 내용으로 사용
되는 데이터타입을 나타낸다.
• 데이터타입은 XML Schema에 미리 정의된 데이터타입이나 또는 사용자 정의 데이터타입일 수 있다.
• 그리고 ‘xsd’는 XML Schema의 스키마 이름공간 접두사를 나타낸다.
• 앞서 설명한 것처럼 ‘xsd’가 아닌 다른 이름이 스키마 이름공간의 접두사로 정의되어 있다면 그 이름을
사용할 수도 있으며, 아니면 접두사 없이 기본 이름공간이 사용될 수도 있다.
<xsd:elementname="customer"type="xsd:string">
• 이 예는 ‘customer’라 불리는 앨리멘트가 ‘string’ 타입의 데이터를 내용으로 가진다는 것을 정의하고
있다.
58/126
앨리멘트의 기본 값과 고정 값 선언
• 앨리멘트의 기본 값(default)은 XML 문서에서 앨리멘트에 아무런 값도
지정되지 않았을 때 자동으로 부여되는 값을 말한다. 스키마의 앨리멘트
선언에서 ‘default’ 속성을 사용하여 기본 값을 지정한다. 다음은 앨리멘
트의 기본 값을 ‘computer’로 설정하는 예이다.
<xsd:elementname="dept"type="xsd:string"default="computer"/>
• 위와 같은 선언이 있다고 할 때 XML 문서에서 다음과 같이 ‘dept’ 앨리멘트에 아무런 값도 지정되어 있
지 않으면, XML 프로세서는 앨리멘트의 내용으로 기본 값을 지정하게 된다.
59/126
빈 앨리멘트 선언
• 내용을 갖지 않는 앨리멘트를 빈 앨리멘트라 하며, XML Schema에서는
‘nill’ 속성을 사용하여 빈 앨리멘트를 지정한다. 이 속성에는 ‘true’ 또는
‘false’의 boolean 값을 지정할 수 있다. 기본적으로 이 속성은 ‘false’로
설정되어 있다. 그러므로 빈 앨리멘트를 지정하기 위해서는 ‘nill’ 속성에
‘true’를 지정해야 한다. 다음은 ‘sample’이라는 앨리멘트가 내용을 갖지
않음을 선언하는 예이다.
<xsd:elementname="sample"type="xsd:string"xsi:nill="true"/>
• ‘nill’ 속성을 사용할 때 한 가지 주의할 점이 있다. 이 속성은 스키마 인스턴스 이름공간을 참조하므로 반
드시 스키마에 이름공간이 선언되어 있어야 하고 해당 접두사를 사용하여야 한다.
60/126
속성 선언
• XML Schema에서 모든 속성은 ‘simple’ 타입으로 선언되며
‘complexType’으로 정의되는 앨리멘트의 한 부분으로 나타난다. 왜냐하
면 속성은 앨리멘트의 한 구성앨리멘트로서 사용되어지기 때문에
‘complexType’ 내에 정의되어야 한다.
• 속성 선언 형식은 다음과 같이 속성 이름과 속성의 데이터타입 부분으로
구성된다.
<xsd:attributename="속성_이름"type="xsd:속성_타입"/>
• 여기서 ‘속성_이름’은 속성의 이름을 나타내며, ‘속성_타입’은 속성의 데이터타입을 나타낸다. 데이터타
입은 XML Schema에 미리 정의된 데이터타입이나 또는 사용자 정의 데이터타입일 수 있다.
61/126
사용자 정의 타입의 선언
1) 제약조건을 갖는 사용자정의 타입 선언
XML Schema에서 제공되는 표준 데이터타입에 사용자가 원하는 제약조건을 추
가적으로 지정하여 사용자 정의 타입을 선언할 수 있다. 이를 위해 XML 스키마는
데이터타입에 대한 여러 가지의 제약조건들을 제공하고 있다.
2) List를 사용한 사용자정의 타입 선언
표준 simple 타입으로 정의된 앨리멘트나 속성은 하나의 값만을 가질 수 있다. 그
러나 여러 개의 값들을 포함할 수 있도록 하기 위해서는 ‘simple’ 타입을 ‘lis’t로 정
의해야 한다.
3) Union을 사용한 사용자정의 타입 선언
표준 simple 타입 선언문은 기본적으로 하나의 데이터타입만을 지정하도록 되어
있다. 그런데 어떤 앨리멘트나 속성에서 여러 개의 데이터타입으로 구성되는 값을
요구한다면, 그 앨리멘트나 속성을 위해 적절히 값을 지정할 수 없다. 바로 이러한
문제를 해결하기 위해서 ‘union’이 사용된다. ‘union’은 앨리멘트나 속성에 여러
데이터타입을 허용하도록 한다.
62/126
complexType 정의
• 앨리멘트가 자식 앨리멘트를 포함하거나 속성을 가진다면
‘complexType’으로 선언되어야 한다. ‘complex’ 타입 내에서 선언된 전
역 앨리멘트는 하위의 다른 앨리멘트에서 사용할 수 있다. 또한
‘complex’ 타입 내에서는 앨리멘트와 속성에 대하여 그룹을 설정할 수 있
고 참조할 수 있다.
• Complex 타입 선언
• ‘Complex’ 타입을 선언하는 방법은 다음과 같이 세 가지로 구분된다.

이름을 갖는 complex 타입 선언

이름을 갖지 않는 complex 타입 선언

기존 타입을 기반으로 하는 새로운 complex 타입 선언
63/126
이름을 갖는 complex 타입 선언과 정의
• ‘Simple’ 타입과 마찬가지로 이름을 갖는 ‘complex’ 타입은 다른 앨리멘
트들에서 사용할 수 있다. 다음과 같이 ‘complexType’의 속성에 ‘name’
속성을 사용하여 ‘complex’ 타입을 정의한다.
<xsd:complexTypename="타입이름">
․․․
</xsd:complexType>
• 여기서 ‘타입이름’은 ‘complex’ 타입의 이름을 나타낸다. 그리고 ‘complexType’ 내에는 앨리멘트들의
선언과 이들에 대한 순서 지시자, 발생 지시자, 그룹 지시자를 지정하고, 속성 선언 및 ‘complex’ 타입에
대한 제약조건들이 나타날 수 있다.
64/126
이름을 갖지 않는 complex 타입 선언과 정의
• ‘complex’ 타입이 오직 하나의 앨리멘트에서만 사용되어지면 타입 이름을 부여하
지 않고 직접 앨리멘트 내에 ‘complex’ 타입을 선언한다. 즉, 앨리멘트 선언 내에
다음과 같은 형식으로 ‘complex’ 타입을 정의한다.
<xsd:elementname="앨리멘트_이름">
<xsd:complexType>
․․․․․
</xsd:complexType>
</xsd:element>
• 이 선언 형식을 통해 알 수 있듯이, ‘xsd:element’에는 ‘type’ 속성을 사용하지 않으며
‘xsd:complexType’에도 ‘name’ 속성을 사용하지 않는다.
• 기존 타입을 기반으로 하는 새로운 ‘complex’ 타입 선언과 정의
• 기존의 정의된 ‘complex’ 타입을 확장하거나 제한하여 새로운 ‘complex’ 타입을
정의할 수 있다. 이것은 객체지향 언어의 클래스와 유사하다. 즉, 기본 클래스로부
터 상속 받아 속성 또는 메소드를 추가하거나 일부 기능을 오버라이드(override)
시켜 새로운 클래스를 정의하는 것과 같이 XML Schema에서도 이와 유사한 기능
을 제공하고 있다. 그렇다고 객체지향 언어의 특성과 완전히 동일한 것은 아니다.
XML Schema에서는 ‘complex’ 타입을 확장하거나 또는 제한할 수 있지만 동시
에 두 가지를 지정할 수는 없다.
65/126
Complex 앨리멘트의 내용 정의
1) 내용이 없는 빈 앨리멘트의 지정
내용이 없는 빈 앨리멘트를 선언할 수 있다. 이는 DTD에서 ‘EMPTY’ 앨리멘트를 선언하는
것과 같다. 앞 절에서 ‘simple’ 타입의 앨리멘트 선언 시 ‘nill’ 속성을 사용하여 빈 앨리멘트
를 만들 수 있음을 설명하였다. 그러나 ‘simple’ 타입의 빈 앨리멘트는 속성을 포함하지 못한
다.
2) 텍스트 데이터만 있는 앨리멘트의 지정
앞 절의 ‘simpl’e 타입 선언에서 텍스트만을 포함하는 기본 앨리멘트를 정의하는 방법에 대
해서 살펴보았다. 하지만 속성을 포함하는 텍스트만을 가지는 앨리멘트를 선언하기 위해서
는 ‘complex’ 타입으로 앨리멘트를 정의해야 한다.
3) 자식 앨리멘트를 내용으로 가지는 앨리멘트의 지정
자식 앨리멘트를 가지는 앨리멘트는 ‘complex’ 타입으로 선언된다. 또한 앨리멘트가 속성을
가지는 경우에도 ‘complex’ 타입으로 선언된다.
4) 혼합된 컨텐트
앨리멘트가 텍스트와 자식 앨리멘트를 포함 한다면 혼합 컨텐트(mixed content) 형식으로
앨리멘트를 선언하여야 한다. 이를 위해 ‘complex’ 타입 선언에 ‘mixed’ 라는 속성을 사용한
다. 이 속성 값이 ‘true’이면 앨리멘트가 혼합 컨텐트를 가질 수 있음을 나타낸다.
66/126
앨리멘트 구조화
• XML 스키마에서는 앨리멘트를 구조화시키기 위해 네 가지 유형의 지시
자를 사용한다. 아래 표는 XML 스키마의 앨리멘트 지시자들을 나타낸다.
종류
지시자
설명
Sequence
앨리멘트가 선언된 순서로 나타난다.
앨리멘트가 임의의 순서로 나타날 수
순서 지시자
Any
있다.
All
선택 지시자
Choice
minOccurs
발생 지시자
maxOccurs
그룹 지시자
있고, 0번 또는 1번 이상 나타날 수
group name
group ref
앨리멘트가 임의의 순서로 나타날 수
있고, 0번 또는 1번 나타날 수 있다.
자식 앨리멘트 또는 그룹 중의 하나만
선택된다.
앨리멘트가 나타나는 최소 회수를
설정한다.
앨리멘트가 나타나는 최대 회수를
설정한다.
이름을 갖는 앨리멘트 또는 속성
그룹을 정의한다.
이름을 갖는 그룹을 참조한다.
67/126
스타일시트로 XML 문서 표현하기
XML A에서 Z까지
CSS의 정의
• XML 문서를 다양하게 출력하고자 할 때는 CSS와 XSL을 사용한다.
CSS란 Cascading Stylesheet를 말한다. CSS는 주로 HTML을 구조적
으로 출력하고, 외관을 장식하기 위한 역할을 하며, XML 문서를 간단한
방법으로 출력하는 방법으로 많이 사용되고 있다.
• 스타일을 정의해 놓고 여러 개의 문서에서 이용할 수 있어서 일관된 외양
을 요구하는 여러 개의 문서를 만들 때 매우 편리하다. HTML 4.0과 CSS,
Javascript 등을 함께 일컬어 Dynamic HTML이라고 부르기도 한다.
69/126
CSS의 특징
(1) CSS는 대소문자를 구분하지 않는다.
<BOOK>와 <book>를 같은 앨리멘트로 취급한다.
(2) 프로퍼티 설정값은 자식앨리멘트에 상속된다.
• 단 상속되지 않는 예외 프로퍼티는 display, background계열, vertical-align, box프로퍼티다.
(3) 다중 앨리멘트와 다중 규칙이 적용된다.
• book, title {display:block}와 같이 사용 가능하다.
(4) XML문서에서 스타일 속성을 사용할 수 있다.
• <title STYLE="font-style:normal;font-size:14"> Title </title>
(5) CSS에서 다른 CSS파일을 불러 올 수 있다.
• <형식>@import url(CSS-file URL);
(6) PI 처리 형태로 기술해야 한다.
<?xml-stylesheet type="text/css" href="Inventory01.css"?>
(7) CSS의 위치를 상대경로 및 절대 경로를 사용할 수 있다.
(8) 경로에 절대 URL을 사용할 수 있다.
•
<?xml-stylesheet type="text/css"
href="http://www.mydosu.com/cris/Inventory01.css"?>
(9) 하나의 XML문서에 두개 이상의 CSS를 포함시킬 수 있다.
•
<?xml version="1.0"?>
•
<?xml-stylesheet type="text/css" href="Inventory01.css"?>
•
<?xml-stylesheet type="text/css" href="Inventory02.css"?>
•
:
•
:
•
이때 충돌하는 프로퍼티가 있다면 나중에 링크된 CSS가 우선권을 가지게 된다.
70/126
CSS의 기본 구조
가. 선언부
선언부는 속성(property)과 값(value)로 되어 있다. 예를 들면 font-style : serif; 와
같이 폰트 스타일을 serif 폰트로 지정하여 나타난 값이다.
나. 선택자(Selector)
선택자는 스타일을 적용할 앨리멘트를 나타낸다. 선택자의 종류와 그 기능은 다음
과 같다.
(1) 형태 선택자
스타일을 적용할 앨리멘트의 이름을 나타낸다. H1 앨리멘트의 이름은 모두 파란색으로 스타일을 지정하여 나타낸다.
(2) 하위 선택자
하위 앨리멘트와 자신의 앨리멘트를 함께 나타낸다.
(3) 자식 선택자
부모 노드 “>”를 이용한 선택자로 부모 노드를 갖는 하위앨리멘트에 스타일이 지정된다.
(4) 근접 선택자
부모 노드를 이용한 선택자로 “+”를 이용하여 표시한다.
(5) 다중 선택자
여러 앨리멘트에 같은 스타일을 적용할 때 사용하는 방법이다.
(6) Type 선택자
Type 선택자는 HTML element를 선택자로 사용하는 것이다. HTML 및 XML에서는 선택자를 쓸 때 대소문자를 구분하지 않
는다.
(7) 선택자 묶어서 사용하기
여러 개의 선택자가 같은 속성을 사용할 때는 하나로 묶어서 쓸 수 있다. 아래의 두 예는 같은 뜻이다.
71/126
CSS의 속성 정의
가. Font 정의
1) Font Family
font-family:{글꼴 지정}|{지정한 글꼴이 사용자의 환경에 없을 때에 지정하는 예비 글꼴}
2) Font Style
font-style:value=normal|italic|oblique
3) Font Variant
font-variant:value=normal| small-cap
(4) Font Weight
font-weight:value=normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900
5) Font Size
font-size: absolute-size=xx-small |x-small |small |medium |large|x-large|xx-large|relative-size=larger |smalle
r|length='px'|percentage='%'
72/126
CSS의 속성 정의
6) Font
font:font-style|font-variant|font-weight|font-size|line-height|font-family
7) display
display:block|inline|none
73/126
CSS의 속성 정의
나. BOX 영역
모든 element를 여러 겹의 상자로 둘러싸여 있다고 가정할 때 CSS2의
box model이다. 워드프로세서에서 문서를 편집할 때 간격의 종류와 마찬
가지로 여러 가지 간격을 CSS에서 나타낼 수 있다. Margin은 투명하다.
따라서 배경색이나 무늬가 비쳐져서 나타나게 된다.
• Margin, Border, Padding 속성을 이용해 각각의 폭이나 색을 조정할 수 있
으며, 세로로 마진이 만날 때는 겹쳐져서 나타난다.
1) 윗, 오른쪽, 밑, 왼쪽 여백
margin-top(-right,-bottom,-left):value=length|percentage|auto
2) 여백
margin:value=length|percentage|auto|{1,4}
3) 윗, 오른쪽, 왼쪽, 밑 공백
padding-top(-bottom,-right,-left):value=length|percentage
4) 공백
padding:value=length|percentage|{1,4}
74/126
CSS의 속성 정의
5) 윗, 오른쪽, 밑, 왼쪽 테두리의 굵기
border-top(right,bottom,left)-width:value=thin|medium|thick|length
6) 테두리의 굵기
border-width:value=thin|medium|thick|length|{1,4}
7) 테두리의 색상
border-color:value=color{1,4}
8) 테두리의 형태
border-style: value=none|dotted|dashed|solid |double|groove |ridge|inset |ou
tset{1,4}
9) 윗, 오른쪽, 밑, 왼쪽 테두리
border-top(right,botom,left):value=border-top-width|border-style|color
10) 테두리
border:value=border-width|border-style|color
75/126
CSS의 속성 정의
11) 폭
width:value=length|percentage|auto
12) 높이
height:value=length|auto
13) 놓기
float:value=left|right|none
14) Clear
clear:value=none|left|right|both
다. 색상 속성
1) Color
color:color
라. 문장 속성
1) Word Spacing
word-spacing:value=normal| length
76/126
XSL
XML A에서 Z까지
XSL의 정의
• XML이 인터넷상의 데이터 전송을 위해 설계되었다면, XSL(eXtensible
Style- sheet Language)은 이러한 XML 문서를 처리하기 위해 설계되었
다. XSL은 XML의 장점인 플랫폼 독립적이고, 언어 독립적이라는 점을
그대로 계승한 XML 어플리케이션이다. 이러한 XSL로 생성한 문서는
XSL 스타일시트(StyleSheet)라고 불리며, DTD 그리고 XML 문서와 함
께 데이터로써의 가치를 지니게 된다.
78/126
XSL의 기본 구조
(1) XSLT(XSL Transformation)
XML 문서의 구조를 다른 구조로 변환시키는 마크업 언어
 XML -> HTML, XML -> WML
(2) XPath(XML Path Language)
XML 문서 내에서 특정 파트(element, attribute)를 찾아가기 위해 사용되는 경로 표기 언어로
서 XSLT와 XPointer를 사용하기 위해 설계된다.
(3) XSL-FO(XSL Formatting Objects)
변환기를 통해서 XML 문서를 비XML 문서로 변환되며, 변환될 XML 문서는 XSL-FO 마크업
언어로 작성되어야 한다.
79/126
XSL의 처리 과정
80/126
XSL의 개요
• XSL(Extensible Stylesheet Language)은 W3C에서 표준으로 제정한
XML의 표준 스타일시트 언어이다. 즉, XSL은 XML 문서를 다른 구조의
문서로 변환(transformatin) 하거나 XML 문서를 포맷팅(formatting)하
여 웹 브라우저나 휴대장치 또는 프린터와 같은 출력매체에 출력할 수 있
도록 한다.
• XSL 표준은 다음과 같은 세 가지 언어로 구성되어 있다.
 XSLT(XSL transformation): XML 문서를 다른 문서로 변환하기 위한 언어이다. XML
문서 변환을 위해 XSLT는 XPath 언어를 사용한다. XSLT는 XSL의 한 부분으로 포
맷팅을 위한 문서 변환을 목적으로 사용되지만, 이와는 별도로 XML 문서를 다른
구조의 문서로 변환하기 위해 독립적으로 사용되어질 수 있다.
 XPath(XML Path Language): XML 문서의 특정 부분에 대한 참조나 접근을 지정하
기 위한 표현 언어(expression language)이다.
 XSL 포맷팅 객체(XSL-FO): XML 문서를 포맷팅 하기 위한 언어이다.
81/126
XSLT 언어와 스타일시트
• XSLT는 XML 문서를 다른 구조의 문서로 변환하기 위한 언어이다. 즉, 입
력 문서의 원본 트리를 결과 트리로 변환한다. 예를 들면, 어떤 하나의
XML 문서는 XSL 변환을 통해 HTML, XML과 같은 다른 구조의 문서로
변환될 수 있다.
book
title
author
html
chapter
chapter
head
body
XSLT
title
summary paragraph paragraph
text
h1
figure
graphic
<html>
<head>...</head>
<body>
<h1></h1>
<h3></h3>
...
</body>
</html>
h3
h2
title
div
blockquote
text
div
p
p
img
연속화
(serialization)
82/126
XSLT 스타일시트의 처리
XSLT 스타일시트의 일반적인 처리과정은 다음과 같다. 아래 그림은 변환 처리과정에 대한
예를 나타낸다.
1. XSLT 프로세서는 XML 문서와 XSLT 스타일시트를 읽어 원본 트리와 스타일시트 트리로 파
싱(parsing)한다.
2. 그런 다음 XML 프로세서는 XSLT 스타일시트에 선언된 변환 정보 즉, 템플릿 규칙(template
rule)들을 적용하여 XML 문서를 다른 구조의 문서로 변환한다. 그 결과로 XSLT 프로세서는
변환된 문서의 트리를 만든다.
3. XLST 프로세서는 결과 트리의 각 노드들을 차례대로 탐색하여 문자 스트림 형태로 출력한다
. 보통의 경우 문자 스트림은 HTML, XML 파일, 또는 다른 텍스트 포맷 형식의 파일로 저장
된다.
•
웹 브라우저
HTML
화일
HTML
스트림
XML 문서
데이터
베이스
XSLT
프로세서
XML 스트림
또는
텍스트 스트림
XSL 스타일시트
XML
화일
XML 응용
뷰어
83/126
XSLT 변환 및 응용
•
•
일반적으로 XSLT는 XML 문서를 웹 브라우저와 같은 화면에 출력하기 위해서 사용된다. 또
한 XSLT는 XML 문서를 완전히 다른 구조의 문서로 변환하기 위해서 사용된다. 여기서 다른
구조의 문서란 특정 사용자나 매체, 클라이언트를 위해 특별히 설계된 문서를 말한다.
이 밖에도 XSLT를 이용하여 문서 변환을 필요로 하는 다른 분야에 폭 넓게 응용할 수 있다.
다음은 XSLT를 적용할 수 있는 분야의 몇 가지 예를 나타내고 있다.

XSLT를 이용하면 다른 시스템과의 데이터 교환이 용이해진다. 예를 들어, 책을 공급하
는 도매상과 책을 구매하는 소매상이 있고 이들은 각자 다른 형식의 주문서를 사용하고
있다고 해보자. 만약 책을 주문하는 소매상이 도매상에게 주문서를 보내려 한다면, 자
신이 사용하고 있는 형식이 아닌 도매상이 이해할 수 있는 형식의 주문서로 보내야 한
다
.
이를 위해 소매상이 이미 자신의 고객으로부터 받은 주문 내용을 도매상의 주문서 형태
로 새로 입력할 수 있겠지만, 실제로 이것은 엄청 큰 부담을 주며 또한 효율성도 떨어진다.
XSLT를 이용하면 이 문제를 쉽게 해결할 수 있다. 즉, 자신이 이미 가지고 있는 주문서의
내용을 도매상의 주문서 형식으로 변환하면 되기 때문이다.

XML 문서를 여러 장치특성에 맞는 HTML 문서로 변환하기 위해 XSLT를 사용할 수 있
다. 예를 들면, PC, PDA, 이동전화(mobile phone), TV 셋-탑 박스 등과 같이 디스플
레이 크기 및 사용자 인터페이스가 각기 다른 장치에 XML 문서의 출력을 하기 원한다
면, 장치 특성에 맞는 HTML 문서들이 있어야 할 것이다. 이를 위해 각 장치에 대한
HTML 문서를 별도로 작성하는 것은 비효율적이다. 이러한 상황에서 XSLT를 이용하
면 하나의 XML 문서에 대해 여러 형태의 HTML 문서를 만들어 내는 작업이 좀 더 용이
해질 수 있다.
84/126
XSLT 스타일시트의 구조
• XSLT 스타일시트는 XML 문서이다. 따라서 XSLT 스타일시트도 XML 문
서를 따르며, 다음과 같이 두 개의 주요 부분으로 구성된다. 즉, 프롤로그
와 도큐먼트 앨리멘트로 구성된다.
85/126
프롤로그
• XSLT 스타일시트의 프롤로그에는 XML 선언과 주석과 같은 구성앨리멘
트들이 나온다. XML 선언문은 XSLT 스타일시트가 XML 문서라는 것과
XML의 버전 번호, 문자 인코딩 정보를 나타낸다. XML 선언문이 필수적
으로 사용되어야 하는 것은 아니다. 하지만 XML 표준 규격에서는 사용할
것을 권장하고 있다.
• 만약에 XML 선언문을 XSLT 스타일시트에 포함시킨다면, 반드시 문서의
처음 부분에 위치되어야 한다. 그 앞쪽에는 어떠한 문자(공백 문자 포함)
도 허용되지 않는다.
86/126
도큐먼트 앨리멘트
• XML 선언부 다음에는 XSLT 스타일시트의 도큐먼트 앨리멘트에 대한 정
의가 나와야 한다. XSLT에서 도큐먼트 앨리멘트 즉, 루트 앨리멘트는
xsl:stylesheet 앨리멘트를 사용한다. XSLT 스타일시트의 선언 형식은
다음과 같다.
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
• 이 선언은 XSLT 버전이 1.0이며, XSLT를 위한 이름공간의 표준 접두어는 xsl이며
“http://www.w3.org/1999/XSL/Transform” URI 주소가 지정되어 있음을 나타낸다.
87/126
XSL의 처리 과정
가. 루트 앨리멘트
stylesheet(주로 사용)와 transform이 있으며, 의미상의 차이는 없으며,
접두사는 관례상 xsl를 사용한다.
나. 루트 앨리멘트의 자식 앨리멘트
다. 결과 트리의 문서
라. Template Rule
마. 제어 앨리멘트
88/126
XPath
XML A에서 Z까지
XPath의 정의
• XPath는 XML 문서의 부분을 정의하기 위한 W3C의 표준 문법 규약으로
XML 앨리멘트를 정의하기 위하여 path(경로)를 사용하며, XML문서에
서 특정 앨리멘트나 속성에 접근하기 우회 경로를 지정하는 언어이다.
• XPath는 표준함수의 라이브러리를 제공하며 XSLT의 주요 부분이나
XML로 쓰여지지 않으며, 패턴 또는 경로 (Pattern or Path)의 표현으로
노드(node), 노드집합(node set)으로 나타내며, 문맥노드(context
node)에 상대적으로 표현한다.
temp/xpath/sample.jsp
- XPath는 XML 문서의 part를 정의하기 위한 syntax이다.
- XPath는 XML 문서 내부를 navigate하기 위한 path expression을 사용한다.
- XPath는 표준함수의 라이브러리를 갖고 있다.
- XPath는 XSLT의 주요한 앨리멘트이다.
- XPath는 W3C 표준이다.
90/126
XPath의 경로
1) 표현식
XPath는 의미 있는 기호를 포함하는 텍스트 문자열을 사용한다. 이것을 ‘표현식
(expression)’이라 부른다. 이 표현식은 UNIX와 MS-DOS와 같은 명령어-줄 운영체
제에서 사용된 기법들의 광범위하게 사용된 표현식을 사용한다.
2) 위치 경로
표현식은 계층적 문서 구조에서 그들의 위치에 의해 항목들을 식별한다. ‘경로’는
목표 위치를 위한 일련의 단계들이다. 위치 경로(location path)는 구조를 파악하거
나, 형제들을 건너뛸 수도 있으며, 그 구조를 백업하는 일을 하기도 한다. 그리고 ‘
상대’와 ‘절대’라는 두 가지 타입의 구분된 경로가 있다.
3) 상대 경로
상대 경로(relative path)는 문서 구조에서 기존 위치에서 시작하는 것이다.
4) 와일드 카드
때때로 문맥 앨리멘트와 요구된 하위 앨리멘트 사이에 이름이 알려지지 않는 앨리
멘트가 있을 때 이것이 장애가 되지는 않는다. '*' 기호는 임의의 앨리멘트 이름을
나타내는 ‘와일드카드’로 사용될 수 있다.
91/126
XPath의 경로
5) 부모와 조부모
문맥 앨리멘트의 부모는 '..'을 사용하여 표시한다. 이 개념은 현재 앨리멘트의 형제
앨리멘트를 선택하기 위해서 사용할 수 있다. 다음 예는 문맥 앨리멘트로서 같은
부모를 가지는 Title 앨리멘트를 선택한다.
6) 절대 경로
어떤 경우에는 상대적인 경로가 적합하지 않을 때도 있다. 예를 들어 현재 문맥에
관계없이 책의 제목을 선택할 수도 있다. 문서 전체에 대해 상대적인 위치는 알려
져 있는 반면 현재 위치(현재 위치가 있다면)에서의 가지거리는 모를 수 있다. 이
경우에 절대 경로(absolute path)가 사용된다.
7) 패턴
패턴은 객체를 찾는 것이 아니라 특정 객체가 어떤 주어진 기준에 일치하면 구축
하기 위해 사용되는 표현식의 형태이다. 위치 경로는, 현재 선택된 앨리멘트가 중
요한 문맥 위치인지를 결정하기 위해, 패턴에서 사용될 수 있다. 예를 들어, 문단이
책에서 그들이 나타나는 곳에 따라 다른 방법으로 표현되어지는 경향이 있다.
8) 술어 필터(predicate filter)
위치 경로는 매우 복잡하다. 단지 주어진 문맥에서 선택하기 위해 특정 앨리멘트
타입을 명세할 수 있다. 보통 일치들의 긴 리스트가 만들어 진다.
92/126
Location Paths, XPath의 함수
• 표현식 중 중요한 것 중의 하나가 location path이다. location path는 어
떤 노드에 대해 상대적 혹은 절대적인 위치에 존재하는 노드들을 선택한
다
1) Node Set 기능
번호
명령
기능
결과값
1
last()
Expression에 의해 계산된 결과노드들의 size (개수)를 리턴
number
2
position()
노드의 위치(position)를 리턴
number
3
count(node-set)
Argument로 오는 node-set의 전체 수를 리턴
number
앨리멘트들 중 DTD에서 그들의 attribute의타입이 ID로 선언된 어트리뷰트에 대
4
id(object)
해 조건이 일치하는 앨리멘트들을 리턴
Node-set
예) id(“foo”) :ID값이 “foo”인 앨리멘트를 리턴
5
6
7
local-name
(node-set?)
Namespace-uri
(node-set?)
name(node-set?)
argument로 오는 node-set이 prefix와 local name으로 이루어져 있을 경우, local
name을 리턴, argument로 아무것도 오지 않을 경우, 현재 노드의 local name을
String
리턴
어느 노드의 namespace의 uri를 리턴
string
node의 이름을 리턴
string
93/126
XPath의 함수
2) String Functions
번호
명령
기능
결과값
1
string(object?)
object를 string으로 변환한 값을 리턴
string
2
concat(string, string, string*)
argument들의 concatenation을 리턴
String
3
starts-with(string, string)
4
contains(string, string)
5
Substring-before
(string1, string2)
첫 번째 argument string이 두 번째 argu- ment string으로 시작하면 true를 리턴,
그렇지 않으면 false를 리턴
첫 번째 argument string이 두 번째 argument string을 포함하고 있으면 true를 리턴,
그렇지 않으면 false를 리턴
Boolean
Boolean
String1에 string2가 제일 처음 나타나는 position 이전의 string1의 substring을 리턴
예)substring-before(“1999/04/01”, “/”)는
String
1999를 리턴한다.
String1에 string2가 제일 처음 나타나는 position 이후의 string1의 substring을 리턴
6
Substring-after(string, string)
예) substring-after(“1999/04/01”, “/”)은
String
04/01을 리턴한다.
7
Substring(string1, umber1, number2?)
8
string-length(string?)
9
Normalize-space(string?)
10
Translate(string1, string2, string3)
String1의 position-number1로부터 number 2개의 character를 리턴, number2가
명시되어 있지 않으면 position-number1로부터 모든 character를 리턴
string 값의 character의 수를 리턴
String 의 앞뒤로 오는 whitespace를 제거하거나, multiple space나 tab 등을 하나의
whitespace로 replace
String1에 포함된 string2를 string3로 translate한 결과를 리턴
String
Number
String
String
94/126
XPath의 함수
3) Boolean Functions
번호
명령
기능
결과값
argument를 boolean값으로 conversion
[conversion rule]
1.data type이 “Number”일 때, zero는 false, zero가 아닌 수는 true로 바뀐다.
1
boolean(object)
2.data type이 “String”일 때, 길이가 0인 String은 false, 길이가 0이 아니면 true로 바뀐다.
Boolean
3.data type이 “Boolean”일 때, 바뀌지 않는다.
4.data type이 “Node-set”일 때, node-set이 empty node-set일 때는 false, 노드가 존재할
경우에는 true로 바뀐다.
2
not(boolean)
3
4
argument가 true이면 false를 리턴, false이면 true를 리턴, 만약 argument가 boolean이 아
니면 boolean() function의 conversion rule에 의해 계산된 값이 리턴
Boolean
true()
Boolean 값인 true를 리턴, 일정한 boolean값이 요구되는 경우에 사용됨
Boolean
false()
Boolean 값인 false를 리턴, 일정한 boolean값이 요구되는 경우에 사용됨
Boolean
xml:lang 어트리뷰트에 의해 정의된 노드의 language가 argument에 의해 제공되는 language
와 일치하는지 아닌지를 체크한다. 일치하면 true를 리턴하고, 그렇지 않으면 false를 리
5
lang(string)
턴한다. 만약 체크하고자하는 노드가 xml: lang 어트리뷰트를 가지고 있지 않을 경우에
Boolean
는 그 노드의 가장 가까이에 있는 ancestor에 정의된 xml:lang 어트리뷰트의 값을 따른
다. 만약 어디에도 xml:lang 어트리뷰트가 정의되어 있지 않을 경우는 false가 리턴된다.
95/126
XPath의 함수
4) Number 기능
번호
기본형
기능
결과값
argument로 제공되는 object를 number로 변환. 만약 argument가 제공되지 않을 경우에는 노드
의 string값이 변환된다.
[conversion rule]
1
number(object?)
1.data type이 boolean일 경우:false는 0, true는 1로 변환하여 리턴
Number
2.data type이 number일 경우:값을 그대로 리턴
3.data type이 string일 경우:string이 number의 형식이면 number로 conversion, 만약 string이
number가 아닌 형태로 표현되고 있으면 NaN를 리턴
2
sum(node-set)
Node-set에 포함된 number값의 총합을 리턴. Data type이 number가 아닐 경우 number로 변환하
여 계산
Number
argument로 제공되는 값보다 작거나 같은 integer를 리턴. 만약 argument의 type이 number가 아
3
floor(number)
닐 경우에는 number() function의 rule을 적용시켜 number로 conversion하여 계산
Number
예) floor(11.8) : 11을 리턴
Argument로 제공되는 값보다 크거나 같은 integer를 리턴. 만약 argument의 type이 number가 아
4
ceiling(number)
닐 경우에는 number() function의 rule을 적용시켜 number로 conversion하여 계산
Number
예) ceiling(11.8) : 12를 리턴
Argument로 제공되는 값에 가장 가까운 integer를 리턴
5
round(number)
만약 argument의 type이 number가 아닐 경우에는 number() function의 rule을 적용시켜 number로
conversion하여 계산
Number
예) round(11.4) : 11을 리턴
6
mod(node-set)
Node-set에 포함된 number값의 나머지를 리턴. Data type이 number가 아닐 경우 number로 변환
하여 계산
Number
96/126
XML DOM 프로그래밍
XML A에서 Z까지
W3C의 DOM 표준
• DOM은 XML 문서를 다루기 위한 표준적인 응용 프로그래밍 인터페이스
(Application Programming Interface: API)이다. 즉, DOM은 프로그램
을 통해 XML 문서에 저장되어 있는 각종 정보에 접근하고 조작할 수 있
도록 하는 객체와 인터페이스를 정의하고 있다. 그리고 DOM은 플랫폼과
언어에 중립적인 특성을 가지고 있다.
DOM 트리
XML 문서
파싱
XML 파서
트리
생성
루트 엘리먼트
쓰기
자식 엘리먼트
텍스트
읽기
응용 프로그램
또는
스크립트
자식 엘리먼트
텍스트
98/126
닷넷 DOM 클래스
XmlNode
XmlAttribute
XmlDocument
XmlDataDocument
XmlDcoumentFragment
XmlEntity
XmlLinkedNode
XmlCharacterData
XmlCDataSection
XmlComment
XmlSignificantWhitespace
XmlText
XmlWhiteSpace
XmlDeclaration
XmlDocumentType
XmlElement
XmlEntityReference
XmlProcessingInstruction
XmlNotation
XmlImplementation
XmlNamedNodeMap
XmlAttributeCollection
XmlNodeList
99/126
닷넷 DOM 프로그램의 개발 환경
1) XML 파서
2) 비주얼 스튜디오 .NET 프로젝트 설정
100/126
DOM 트리와 객체
• DOM에서는 XML 문서 전체를 읽고 메모리 내에 XML 문서를 트리 형태
로 표현한다. 이를 DOM 트리라 한다. 따라서 DOM 트리는 개념적인 것이
다. 그러므로 프로그래머가 메모리 내의 각 XML 정보에 접근하기 위해서
는 별도의 수단이 필요하다.
Document
xml
order_info
customer
order_list
Item_no
price
discount
81659258
72000
quantity
name
tel_no
1
Kim
450-7520
20%
101/126
DOM 트리의 노드에 대한 객체 사용
• DOM 트리의 노드는 XML 문서를 메모리로 읽어 들일 때 만들어진다. 이
때 각 노드에 대한 형식이 지정된다. 노드의 형식은 W3C의 DOM 노드 형
식을 따른다.
문서 내용
노드 형식 및 클래스
<order_info> </order_info>
Element(XmlElement)
81659258
Text(XmlText)
<item_no> </item_no>
Element(XmlElement)
72000
Text(XmlText)
<price> </price>
Element(XmlElement)
discount="20%"
Attr(XmlAttibute)
quantity
Element(XmlElement)
1
Text(XmlText)
<customer> </customer>
Element(XmlElement)
<name> </name>
Element(XmlElement)
Kim
Text(XmlText)
<tel_no> </tel_no>
Element(XmlElement)
450-7520
Text(XmlText)
102/126
XmlDocument 클래스
• XmlDocument는 DOM 트리로 구성된 XML 문서 구조를 다루기 위한 매
우 중요한 클래스이다. 이 클래스를 이용하여 XML 문서를 메모리에 로드
하거나 파일로 저장하는 것과 같은 문서 전체에 수행되는 작업을 할 수 있
다. 또한 특정 노드에 접근하여 새로운 노드를 추가하거나 제거 및 수정하
는 작업을 할 수 있다.
• XmlDocument 클래스는 XmlNode 클래스로부터 파생되었고, 이 클래스
로부터 상속되는 많은 메소드와 속성을 가진다. 또한 자체의 고유한 메소
드와 속성들을 가지고 있다.
• Document 객체의 생성
DOM에서 XML 문서를 다룰 수 있도록 하기 위해서 먼저 해야 할 일은
Document 객체를 생성하는 것이다. 즉, XML 문서를 메모리 내부의 DOM
트리 형식으로 구성할 객체를 생성하는 일이다.
XmlDocumentdoc= newXmlDocument();
103/126
XML 문서 로드하기
• XML 문서를 로드하여 DOM 형식으로 구성할 수 있다. XmlDocument 클
래스는 다음의 두 가지 메소드를 제공하고 있다.

Load

LoadXml
• Load 메소드는 지정된 XML 문서 파일로부터 XML 데이터를 로드하고, Load Xml은 지정된 문자열에서
XML 데이터를 로드한다.
104/126
XML 문서의 저장
• DOM 형식의 문서를 XML 문서 파일로 저장할 수 있다. XmlDocument
클래스의 Save 메소드는 파싱된 DOM 트리 형식의 문서를 지정된 파일
에 저장하는 역할을 한다. Save 메소드의 형식은 다음과 같다.
void Save(StreamoutStream);
• 노드 접근 및 정보 얻기
XmlDocument 클래스는 DOM 트리에 접근할 수 있고, 노드의 정보를 얻도
록 하는 몇 가지 속성들을 제공하고 있다. 예를 들면, 노드에서 첫 번째 자
식 또는 마지막 자식의 노드에 접근할 수 있고, 현재 노드의 모든 자식 목
록을 얻을 수도 있으며, 노드의 타입 및 이름, 노드의 내용 등의 정보를 얻
을 수도 있다.
105/126
XmlDocument 클래스의 속성과 메소드
• 아래 표들은 XmlDocument 클래스의 고유 속성과 메소드를 나타낸다.
XmlDocument 클래스는 XmlNode 클래스로부터 속성과 메소드를 상속
받는다. 즉, XmlNode 클래스에 있는 대부분의 속성과 메소드를
XmlDocument 클래스에서도 사용할 수 있다는 의미이다.
속성
DocumentElement
설명
문서의 루트 앨리멘트를 가져온다.
DocumentType
DOCTYPE 선언이 포함된 노드를 가져온다.
Implementation
현재 문서에 대한 XmlImplementation 객체를 가져온다.
NameTable
PreserveWhitespace
XmlResolver
구현과 관련된 XmlNameTable을 가져온다.
공백을 유지할지 여부를 나타내는 값을 가져오거나 설정한다.
외부 리소스 확인을 위해 사용할 XmlResolver를 설정한다.
106/126
XmlNode 클래스-노드에 관한 정보 얻기
1) HasChildNodes 속성
HasChildNodes 속성은 현재 노드가 자식 노드를 가지고 있는지를 알려준
다.
2) LocalName과 Name 속성
LocalName 속성은 현재 노드의 지역 이름 즉, ‘접두사:앨리멘트_이름’과
같이 접두사를 포함하는 노드의 이름을 가져온다
3) NamespaceURI와 Prefix 속성
NamespaceURI와 Prefix 속성은 이름공간에 대한 정보를 얻을 수 있도록
하는 속성이다.
4) NodeType 속성
NodeType 속성은 현재 노드의 형식(type)을 알려준다.
5) OuterXml 속성
OuterXml 속성은 현재 노드를 포함한 자식 노드를 태그 형태로 가져온다.
107/126
노드의 데이터 값 제어
• XmlNode 클래스는 노드의 값을 제어할 수 있는 속성들을 제공하고 있다.
이들 속성에 대해서 알아보자.
1) Value
Value 속성은 노드의 값을 가져오거나 설정하기 위해 사용된다. 즉, 이 속
성은 속성, 주석, 프로세싱 명령문, XML 선언문, CDATA 섹션과 같은 DOM
트리의 노드 값을 직접적으로 제어하기 위해 사용된다.
2) InnerText
InnerText 속성은 현재 노드와 현재 노드에 속한 모든 자식 노드의 값을 가
져오거나 설정하기 위해 사용된다.
3) InnerXml
InnerXml 속성은 현재 노드의 자식 노드를 태그 형태로 가져오거나 설정
하기 위해 사용된다.
108/126
노드 트리의 순회
• DOM은 노드들의 트리로 구성된다. 따라서 노드의 각종 정보를 다루기 위
해서는 노드 트리를 순회할 수 있는 여러 가지 방법이 필요하게 된다.
DOM은 이와 관련된 여러 속성들을 제공하고 있다.
Books
ParentNode
Book
Book
FirstChild
Author
NextSibling
LastChild
Title
Price
Publish_Date
PreviousSibling
109/126
자식 노드 다루기
1) 자식 노드의 삽입
새로운 노드를 삽입할 수 있도록 하는 두 가지 메소드가 있다.
InsertBefore 메소드는 지정된 노드의 바로 앞쪽에 자식 노드를 삽입한다.
InsertAfter 메소드는 지정된 노드의 바로 뒤쪽에 자식 노드를 삽입한다.
2) 자식 노드의 추가
새로운 노드를 지정된 부모 노드의 자식 노드 목록의 처음 또는 끝에 추가
할 수 있도록 하는 두 가지 메소드가 있다. PrependChild 메소드는 부모 노
드의 자식 노드 목록의 처음에 노드를 추가하기 위해 사용된다.
AppendChild 메소드 부모 노드의 자식 노드 목록의 끝에 노드를 추가하기
위해 사용된다.
3) 자식 노드의 대체
ReplaceChild 메소드는 지정된 노드를 새로운 노드로 대체하기 위해 사용
된다.
4) 자식 노드의 삭제
지정된 자식 노드를 삭제할 수 있도록 하는 두 가지 메소드가 있다.
Remove Child 메소드는 지정된 노드의 자식 노드를 삭제한다. RemoveAll
메소드는 지정된 노드와 자식의 모든 노드를 삭제한다.
110/126
XmlNode 클래스의 속성과 메소드
속성
설명
Attributes
현재 노드의 속성 집합을 XmlAttributeCollection 객체로 반환한다.
BaseURI
현재 노드의 기본 URI를 가져온다.
ChildNodes
현재 노드의 모든 자식을 가져온다.
FirstChild
HasChildNodes
노드의 첫 번째 자식을 가져온다.
현재 노드에 자식 노드가 있는지 여부를 나타낸다.
InnerText
노드와 모든 자식 노드의 연결된 값을 가져오거나 설정한다.
InnerXml
현재 노드의 자식을 나타내는 태그를 가져오거나 설정한다.
IsReadOnly
Item
LastChild
LocalName
Name
NamespaceURI
노드가 읽기 전용인지 여부를 나타낸다.
지정된 자식 노드를 가져온다. C#에서 이 속성은 XmlNode 클래 스에 대한 인덱서(Indexer)이다.
노드의 마지막 자식을 가져온다.
노드의 지역 이름을 가져온다.
노드의 정규화된 이름을 가져온다.
현재 노드의 이름공간 URI를 가져온다.
NextSibling
현재 노드 바로 다음에 나오는 노드를 가져온다.
NodeType
현재 노드의 형식을 가져온다.
OuterXml
현재 노드와 그 하위의 모든 자식 노드를 나타내는 태그를 가져 온다.
OwnerDocument
ParentNode
Prefix
PreviousSibling
현재 노드가 속한 XmlDocument 클래스 객체를 가져온다.
현재 노드의 부모 노드를 가져온다.
현재 노드의 이름공간 접두사를 가져오거나 설정한다.
현재 노드 바로 앞에 있는 노드를 가져온다.
111/126
XmlNodeList 클래스
• 노드 목록(NodeList)은 정렬된 노드의 집합을 나타낸다. XmlNodeList
클래스는 ChildNodes 속성, SelectNodes, GetElementsByTagName
메소드에 의해서 만들어지는 노드 목록을 다루기 위해서 사용된다.
• XmlNodeList 객체의 노드들은 foreach문과 같은 반복문을 통해 접근할
수 있으며, 또한 인덱스를 통해 특정 노드목록에 접근할 수 있다. 또한
XmlNodList 객체는 “라이브(live)”한 특성을 갖고 있다. 즉, 노드 객체의
자식에 변경이 생기면 이미 만들어진 노드 목록에 동적으로 반영된다.
1) ChildNodes 속성
이 속성은 현재 노드의 자식 노드들의 목록을 NodeList 객체로 반환한다. 이
NodeList 객체에는 자식 앨리멘트들의 정렬된 목록이 들어 있다.
예를 들어, 다음은 도큐먼트 앨리멘트의 모든 자식 앨리멘트들의 목록을 얻어서
그들의 이름을 출력하는 C# 코드의 예를 나타낸다.
XmlNodeListnode_list=doc.DocumentElement.ChildNodes;
foreach(XmlNodecNodeinnode_list)
{
Console.WriteLine("{0}",cNode.Name);
}
112/126
XmlElement 클래스
• XmlElement 클래스는 특별히 앨리멘트와 속성을 다루기 위해 사용된다.
앨리멘트의 속성들에 접근하여 특정 속성을 삭제하거나 새로운 속성과
속성 값을 설정할 수 있는 여러 가지 메소드들을 제공하고 있다.
• XmlElement는 XmlNode 클래스와 많은 기능들이 유사하지만,
XmlElement 클래스에서만 다룰 수 있는 속성과 메소드들도 가지고 있다
.
메소드
설명
Attributes
IsEmpty
현재 노드의 속성 목록이 포함된 XmlAttributeCollection 객체를
가져온다.
앨리멘트의 태그 형식을 가져오거나 설정한다.
113/126
XmlAttribute 클래스
• XmlAttribute 클래스는 속성을 다루기 위해서 사용된다. 속성은 앨리멘
트와 연관되어 있으므로 보통의 경우에는 앨리멘트 노드를 통해 속성에
접근한다.
• XmlElement 클래스는 속성 노드에 접근할 수 있는 하는 여러 메소드들
을 가지고 있다. 즉, GetAttribute, SetAttribute, RemoveAttribute 등의
메소드이다. 또한 XmlElement 클래스의 Attributes 속성은 이름 또는 인
덱스를 사용하여 특정 속성에 접근할 수 있도록 하는
XmlAttributeCollection을 반환한다.
메소드
Specified
설명
속성 값이 명시적으로 설정되었는지 여부를 나타내는 값을 가져온다.
114/126
Xml 파서
가. XML 문서의 개체 생성
(1) 자바 스크립트에서의 XML 문서 개체를 생성
(2) VB 스크립트에서의 XML 문서 개체를 생성
(3) ASP에서의 XML 문서 개체를 생성
나. XML 문서를 파서로 읽기
(1) 기존 XML 문서를 파서로 읽기
(2) 텍스트 문자열을 파서로 읽기
(3) parseError 개체
115/126
노드 인터페이스
가. 노드의 속성
특성
타입
nodeName
DOMstring
노드의 이름을 나타낸다.
nodeValue
DOMstring
노드안에 포함된 데이터를 나타낸다
nodeType
unsigned short
childNodes
nodeList
attributes
설명
노드타입을 나타내는 정수를 알려준다
노드의 모든 자식노드를 보유한 nodeList
콜렉션이다
namedNodeMap노 노드의 모든 자식노드를 보유한
드
namedNodeMap 콜렉션이다
parentNode
node
노드의 부모노드를 지시하는 포인터이다.
firstChild
node
노드의 첫번째 자식노드를 나타낸다
lastChild
node
노드의 마지막 자식노드를 나타낸다
previousSiblin
g
node
한 노드가 부모노드를 가지고 있고 그 부모의
자식이 현재노드 왼쪽에 있는 노드를 나타낸다
한 노드가 부모노드를 가지고 있고 그 부모의
nextSibling
node
자식이 현재노드 오른쪽에 있는 노드를
나타낸다
ownerDocum
ent
node
현재 노드가 자리잡고 있는 DOM 트리의
Document 노드를 나타낸다.
116/126
노드 인터페이스
나. 노드의 메소드
노드의 자식들을 관리하고 조작하기 위한 메소드들이다. 노드가 모두 다
른 타입의 노드이기 때문에 비록 상속받은 메소드가 의미가 없더라도 따
라오는 메소드는 상속을 받게 된다. 하지만 자식을 가질 수 없는 노드에게
자식에 영향을 미치는 메소드를 사용하면 에러가 발생하니 유의해야 한다
.
메소드
InsertBefor
e
replaceChi
ld
인자
newChild와
refChild는
Node이다.
newChild와
oldChild는
Node이다
설명
기존의 자식노드인 refChild앞에
newChild노드를 삽입한다
oldChild가 제거되고 newChild노드를
삽입한다.
removeChi oldChild는
oldChild가 제거되며, 만약 oldChild가
ld
없으면 에러가 난다.
Node이다
appendChi newChild는
ld
hasChildN
ode
cloneNode
Node이다
none
newChild를 맨마지막에 삽입한다
자식노드가 있다면 true, 없으면
false값을 리턴한다.
deep는
deep이 true이면 child를 가지고
논리값이다.
복사한다
117/126
Document 인터페이스
가. Document의 속성
속성
타입
documentElement
Element node
docType
documentType Node
implementation
DOMimplementation Node
설명
문서 내의 가장 높은 레벨의 앨리멘트를 나타낸다.
문서안의 DocumentType노드를 나타내며, DTD내용의 일부를
포함하고 있다
문서안의 DOMimplementation 노드를 나타내며, 버전확인을 위한
매커니즘을 제공해 준다
나. Document의 메소드
메소드
인수
설명
tagName에 맞추어진 nodeName 프로퍼티를 가진 앨리멘트
createElement(tagName)
tagName은 string이다
createDocumentFragment()
none
새로운 DocumentFragment 노드를 생성한다.
createTextNode(data)
data는 string 값이다
string data를 포함하는 새로운 textNode를 생성한다.
createComment(data)
data는 string 값이다.
string data를 포함하는 새로운 Comment Node를 생성한다.
createCDATASection(data)
data는 string 값이다
string data를 포함하는 새로운 CDATASection를 생성한다.
노드를 생성하고 리턴한다.
새로운 ProcessingInstruction를 생성하고 반환하며, 주어진
createProcessingInstruction(target,data)
target과 data는 string 값이다 파라미터 target과 data에 PI 프로퍼티인 target과 data를
설정한다.
createAttriute(name)
name은 string이다.
createEntityReference(name)
name은 string이다
getElementsByTagName(tagName)
tagName은 string이다
새로운 Attribute 노드를 생성하고 리턴한 다음 name에
nodeName프로퍼티를 설정한다.
새로운 EntityReference 노드를 생성하고 리턴한 다음 name에
nodeName프로퍼티를 설정한다.
파라미터 이름인 name에 부합되는 프로퍼티 tagName(또는
nodeName)을 가지는 Element 노드 리스트를 리턴한다.
118/126
DataBinding
XML A에서 Z까지
DataBinding의 정의
• DataBinding은 XML 문서를 일반 HTML 페이지에서 출력하는 기능이다
. HTML 페이지 내에서 XML문서를 출력한다면 크게 두 가지 장점을 가
질 수 있다. 첫 번째는 정보를 구조화 하여 XML로 저장할 수 있다는 것이
고 두 번째는 HTML을 이용하여 풍부한 포멧팅과 동적인 프로그래밍이
가능하다는 것이다.
• 데이터 바인딩은 XML문서를 HTML페이지로 링크한 다음 table과 span
태그를 개별적인 XML 앨리멘트에 바인딩을 한다. 그러면 브라우저는 바
인딩 되어 있는 XML 문서의 데이터를 자동으로 출력해 준다.
• 바인딩 기법은 XML문서의 컨텐트가 대칭적인 구조를 가지고 있어야 한
다는 것이다. 다시 말하면 XML문서의 앨리멘트가 데이터베이스의 레코
드와 필드구조를 가지고 있어야 한다.
120/126
바인딩 순서
1) XML 문서를 HTML 문서에 링크
HTML 페이지 내에 <xml>이라는 태그로 링크한다.
2) HTML 앨리멘트를 XML 앨리멘트로 바인딩
HTML 앨리멘트를 XML 앨리멘트로 바인딩할때 HTML문서는 자동으로
XML http://lgtelecom/문서의 컨텐트를 자동으로 출력해 준다.
• HTML 페이지로 XML 문서를 링크
HTML 페이지에 XML 데이터를 출력하려면 일단 링크부터 해야 하며,
<XML>태그에 XML문서를 링크한다. 이 때 링크하는 <XML>태그를 데이
터 아일랜드(Data Island) 또는 데이터 섬이라고 한다.
1) HTML 문서 안에 XML앨리멘트를 직접 기술하기
2) XML 과 HTML 파일의 분리된 상태의 링크
3) XML 데이터가 저장되는 순서
4) HTML에 링크된 XML 문서의 에러처리
121/126
XML 앨리멘트에 HTML 태그 바인딩 하기
• HTML 태그에 바인딩한다고 해서 모든 태그에 적용되는 것은 아니다. 단
두개의 태그를 이용해 바인딩 할 수 있는데 그 태그가 바로 <table>과
<span>이다
• - 테이블 데이터 바인딩(Table Data Binding) : 이는 <Table>을 XML 데이터로 바인딩해서 테이블이
XML문서에 속한 전체 레코드 셋을 다룰 수 있도록 한다.
• - 단일 레코드 데이터 바인딩(Single-record Data Binding) : 이는 테이블이 아닌 <span>을 XML 앨리멘
트로 바인딩해서 한 번에 하나의 레코드만을 다룰 수 있다.
122/126
테이블 데이터 바인딩
• 여러 레코드의 연속으로 구성된 XML 문서를 출력하기에 가장 쉬운 방법
은 XML 데이터로 <table>을 바인딩시켜 테이블이 자동적으로 모든 레코
드를 한 번에 출력하도록 하는 것이다. 모든 것이 자동으로 처리되기 때문
에 따로 앨리멘트 처리를 할 필요가 없다.
1) 단일 HTML 테이블을 사용해서 레코드셋 출력하기
2) 페이징 사용하기
123/126
단일 레코드 바인딩 사용
• 단일 레코드 바인딩 사용은 테이블이 아니라 sapn, button, lable같은
HTML 태그로 XML 앨리멘트에 바인딩되는 것을 말한다. 단, 하나의 레코
드 필드값을 한번에 하나씩밖에 출력하지 못한다. 그리고 단일 레코드 바
인딩을 사용하기 위해서는 XML 문서는 단순 레코드 셋으로 구성되어야
한다.
124/126
다른 데이터 바인딩 테크닉
• Table, Span 태그 외에 다른 태그를 이용하여 XML문서의 앨리멘트에 바
인딩 할 수 있다.
• 다음 표는 HTML 앨리멘트를 바인딩 할 때 나타낼 수 있는 태그 명령이다.
요소
하이퍼 링크
<A>
Input
설명
TEXT
한라인의 텍스트
Password
텍스트를 *로 표현
Checkbox
체크박스
Radio
옵션 버튼
Hidden
도구를 나타내지 않음
<SELECT>
리스트 박스
<TEXTAREA>
여러 라인
<IMG>
이미지
BUTTON
버튼
125/126
이미지 처리 데이터 바인딩 테크닉
• 이미지 파일을 XML 문서와 연결하여 HTML 태그를 이용해서 바인딩할
수 있다.
• <img> 태그를 이용하여 다음과 같이 나타낼 수 있다.
<IMGDATAFLD="XML의이미지태그앨리멘트“>
126/126
XML A에서 Z까지

similar documents