XML (eXtensible Markup Language) -...
Transcript of XML (eXtensible Markup Language) -...
Contents
SGML & HTML & XML
XML DTD & Schema
XLL
XSL
2 / 100
Slides’ title here
SGML & HTML & XML
마크업(Markup)의 기원
출판업계에서원고교정및식자작업을위해주석을첨가함
Markup Languages: RTF, LaTex, SGML, XML, ….
원고작성 서식작성 출판
서식지정을위해마크업사용
원고교정을위해마크업사용
4 / 100
절차적(Procedural) 마크업
워드프로세서에서텍스트의외형과위치를지정하기위해사용(예: MS Word의 RTF)
텍스트와같이특정코드로저장
문제점 문서의구조정보를기록하지않음(문서외형을위해 사용)
유연성이 부족(이식성결여)
처리가 늦고, 오류 발생이잦다.
절차적마크업
공통코딩일반화마크업
5 / 100
공통코딩
외부포맷팅프로시듀어호출로제어하는매크로기능추가
장점 문서의 이식성, 유연성
(외형 변화를 위해매크로만 수정)
마크업은 구조를기술하는데 친숙
LaTex의예
\documentclass[12pt]{article}
\title{\LaTeX}
\date{}
\begin{document} \maketitle \LaTeX{} is a document preparation system for the \TeX{} typesetting program. It offers programmable desktop publishing features and extensive facilities for automating most aspects of
6 / 100
일반화(Generalized) 마크업
문서의외형이아닌구조를기술
마크업은데이터베이스스키마와유사한모델
예: SGML, XML
<!DOCTYPE memo SYSTEM "memo.dtd">
<memo>
<header>
<from>John Doe
<to>Jack Smith
<subject>XML at WhizBang
<body>
<para>Have you heard of this new technology, XML? It looks promising.It is similar to HTML but it is extensible. All the big names (Microsoft, IBM,Oracle) are
7 / 100
SGML 정의
정의
Standard Generalized Markup Language, ISO 8879, 1989
문서에서 논리구조와내용 구조를 기술하기위한 메타언어(meta language)
SGML은다음을제공
기술적 문서마크업생성 기법
문서의 내용모델이나구조를 정의하기위한 언어
다양한 응용들사이 구조화된 데이터교환을 위한 도구
8 / 100
SGML 특징
SGML 단점 S/W를개발하기 어렵다(SGML의복잡성)
Web에서 S/W 제한과 Instance의 이식성 결여
산업계의지원
논리구조 작성의어려움(DTD 작성 어려움)
SGML 장점 유연성
개방 표준
시스템이나 플랫폼에독립적
재사용성
9 / 100
HTML 개요
HyperText Markup Language
W3C의명세
웹상에서 Hypertext 문서를생성할수있는간단한마크업언어
SGML의한응용
ASCII Text 양식의문서
HTML = SGML + a DTD
HTML
HEAD BODY
10 / 100
HTML 특징
HTML 단점 고정된 태그집합
다양한 페이지포맷
임의구조화능력부족
효과적인 검색및 재사용 어렵다
HTML 장점 이식성과 사용이편리
HTML Instance를 Web에서 손쉽게 다운로드 가능
11 / 100
XML 역사
1960년대,IBM의 GML(Generalized Markup Language)
1986년, ISO 8879, SGML(Standard Generalized Markup Language)
1990년대초, HTML(HyperText Markup Language)
1996년, W3C WG에서 XML 공개
1998년 2월, W3C, Rec. XML 1.0 발표
2006년 8월, W3C, Rec. XML 1.1 발표
12 / 100
XML 표준
eXtensible Markup Language Meta Language
W3C working group에서 1996년도에작성
Web상에서구조화된전자문서를전송가능토록설계된표준화된텍스트형식
SGML/HTML과 Interoperability
일반 Web 응용 S/W에의해처리되고사용자정의문서를다양하게배치가능
새로운웹혁명을예고
새로운웹응용창출
13 / 100
XML의 특징
간단성(SGML보다선택특성이적다)
지금까지경험에기본(SGML, HTML)
확장성(태그에제한없음)
링크의자동생성이가능
차세대하이퍼텍스트기능을제공
문서의재사용용이
웹사이트들의간단한시스템관리제공
표준화된스타일시트제어
Primary character set으로 8-bit ASCII와 Unicode 사용
플랫폼, 프로그래밍언어, Vendor에독립적: 모두 Text 이니까
14 / 100
XML vs. SGML
생략태그, SGML 선언
논리적결합(&)
inclusion(+), exclusion(-)
NAME, NAMES
NUMBER, NUMBERS
NUTOKEN, NUTOKENS
CURRENT, etc
문서형선언
element 선언
문자 entity
외부 entity
SGML로부터제거된기능
- Style sheet
- XLINK, XPointer
- Query Language
- DOM, RDF
- Namespace, etc
XML에추가된기능
SGML에서계승된기능
확장성, 구조, 검증
Internet 지향XML SGML
15 / 100
다른 표준들 간의 관계
ISO/IEC W3C
HyTime
DSSSL
SGML
SDIF
XML논리구조
XSL물리구조
XLL링크구조
MIME교환구조
16 / 100
XML & HTML 차이점
다중하이퍼링크의사용
인터넷이나인트라넷에서임의정보유형을 정의가능
문서의외형을정의하는것이아니라문서의구조를정의: 검색도가능
HTML XML
<dl>
<dt><b> XML 문서 관리 시스템
(XML 시리즈)</b></dt>
<dd>이 규 철 / 1998
<br>가격 : 10, 000원/ISBN=#
0-07-9137098-5</dd>
</dl>
<book>
<title> XML 문서 관리 시스템</title>
<series>XML 시리즈</series>
<author>이 규 철</author>
<pub-date>1998</pub-date>
<price type=“Won”>10,000</price>
<isbn>ISBN=#0-07-9134098-5</isbn>
</book>
17 / 100
18
Possible Advantages of Using XML
Truly Portable Data
Easily readable by human users
Very expressive (semantics near data)
Very flexible and customizable (no finite tag set)
Easy to use from programs (libs available)
Easy to convert into other representations
(XML transformation languages)
Many additional standards and tools
Widely used and supported
18 / 100
19
App. Scenario 1: Data Exchange
Legacy System
(e.g., SAP R/2)
Legacy System (e.g.,
Cobol)
XML Adapter
XML Adapter
XML
(ebXML, RosettaNet, BizTalk, …)
SupplierBuyer
Order
20
App. Scenario 2: Content Mgt.
Database with XML documents
Clients
ConvertersXML2HTML XML2WML XML2PDF
21
App. Scenario 3: XML for Metadata<rdf:RDF
<rdf:Description rdf:about="http://www-dbs/Sch03.pdf">
<dc:title>A Framework for…</dc:title>
<dc:creator>Ralf Schenkel</dc:creator>
<dc:description>While there are...</dc:description>
<dc:publisher>Saarland University</dc:publisher>
<dc:subject>XML Indexing</dc:subject>
<dc:rights>Copyright ...</dc:rights>
<dc:type>Electronic Document</dc:type>
<dc:format>text/pdf</dc:format>
<dc:language>en</dc:language>
</rdf:Description>
</rdf:RDF>
22
App. Scenario 4: Document Markup<article>
<section id=“1“ title=“Intro“>
This article is about <index>XML</index>.
</section>
<section id=“2“ title=“Main Results“>
<name>Weikum</name> <cite idref=“Weik01“/> shows the
following theorem (see Section <ref idref=“1“/>)
<theorem id=“theo:1“ source=“Weik01“>
For any XML document x, ...
</theorem>
</section>
<literature>
<cite id=“Weik01“><author>Weikum</author></cite>
</literature>
</article>
23
App. Scenario 4: Document Markup Document Markup adds structural and semantic
information to documents, e.g.
Sections, Subsections, Theorems, …
Cross References
Literature Citations
Index Entries
Named Entities
This allows queries like
Which articles cite Weikum‘s XML paper from 2001?
Which articles talk about (the named entity) “Weikum“?
Slides’ title here
XML DTD & Schema
XML 문서
Well-formed Documents
- 문서가 XML 구문규칙에의해작성
- 논리구조는 validate 되지않음
- 하나의가장바깥엘리먼트
(root, document element) 요구
Valid Documents
DTD를가지며, DTD에따라작성된문서
25 / 100
Well Formed
문서실례는 XML 문서에대한문법을따름
하나의최상위엘리먼트(루트, 문서엘리먼트)를가진다
엘리먼트가중첩되지않음
모든태그는 EMPTY 엘리먼트를제외하고시작태그와종료태그가균형을
이루어야함
EMPTY 엘리먼트는 <tag/> 형식으로 표현
모든속성은 quotes으로표현
모든엔티티들은선언되어야함
문자데이터내에마크업문자를포함하지않음
26 / 100
Well_Formed 문서 예
<?xml version="1.0" encoding="euc-kr"?><학교>
<대학>공과대학</대학><학부>정보통신공학부</학부><전공>컴퓨터공학전공</전공><학생>
<이름>홍길동</이름><학번>11111</학번><전화>042-555-6666</전화><팩스>042-666-5555</팩스><주소>대전광역시 서구 도마2동 439-6번지</주소><hp>011-222-3333</hp>
</학생> </학교>
XML 처리 명령(PI)
브라우징
사용자가 정의한엘리먼트
한글 2바이트 완성형
27 / 100
스타일 적용 예
<?xml version="1.0" encoding="euc-kr"?>
<?xml:stylesheet type=“text/css” href=“test1.css”?>
<school><univ>공과대학</univ> <div>정보통신공학부</div>
<depart>컴퓨터공학전공</depart>
<student><name>홍길동</name><no>11111</no><tel>042-555-6666</tel><fax>042-666-5555</fax><address>대전광역시서구
도마2동 439-6번지
</address><hp>011-222-3333</hp>
</student></school> test1.xml
univ, div, depart {display: block;font-size: 20pt; font-weight: bold;
}student name {
dispaly: block;font-size: 18;font-weight: bold;color: blue;
}student no, tel, fax, address, hp {
display: block;font-size: 10pt; font-style: italic;color: red;
} test1.css
브라우징
28 / 100
Valid XML 문서
XML valid 문서는 DTD를포함
XML DTD는다음구성요소들을포함하는태그에대한문법규칙들의집합제공 Processing Instructions
Elements
Attribute
Entities
Notations
Comments
CDATA Section
29 / 100
Processing Instructions
응용프로그램들에정보를제공하기위해사용
형식 : <?name pidata?>
name : PI target(응용에 PI를 정의)
pidata : 선택사항
XML 표준에서 PI name은 XML로 시작
XML PI 선택사항 version
standalone
yes - 내부 선언으로 처리
no – 외부 선언으로 처리
encoding
UTF-8, UTF-16, ISO-10646, EUC-*
예 : <?XML version=“1.0” encoding=“euc-kr”?>
30 / 100
엘리먼트
Element content
엘리먼트 이름과내용 특성을 정의
시작태그(<element>)로 시작, 종료태그(</element>)로 종료
Parsed Character data(#PCDATA)
character data(text)로 첫번째 선언
다른 엘리먼트를 포함하지 않는다
Other elements : subelement, children
Specific Keyword
EMPTY : 내용을포함하지 않는 엘리먼트
(<tag-name/>)
ANY : 임의 유형의 자식엘리먼트를 갖는다
<!ELEMENT 제목 (#PCDATA) >
<제목>인터넷에서의마크업기술</제목>
31 / 100
문자데이터와 엘리먼트 내용의 혼합
발생지시자 의 미
+ 한번이상발생
? 발생할수도안할수도있음
* 0번이상발생
연결자 의미 예
, A 다음에 B (A,B)
| A 또는 B (A|B)
<!ELEMENT 명부 (#PCDATA | (name, birthdate?, phone))* >
32 / 100
엘리먼트
사진 ?이력
생년월일
이름
대학
전공
연락처
관심분야
애인이름*
EMPTY
#PCDATA
#PCDATA
집전화
사무실전화
#PCDATA|
,
33 / 100
엘리먼트
<?xml version="1.0" encoding="euc-kr" ?><!ELEMENT 이력 (사진?, 생년월일, 이름, 대학, 전공, 연락처, 관심분야, 애인이름*)><!ELEMENT 사진 EMPTY><!ELEMENT 생년월일 (#PCDATA)><!ELEMENT 이름 (#PCDATA)><!ELEMENT 대학 (#PCDATA)><!ELEMENT 전공 (#PCDATA)><!ELEMENT 연락처 (집전화|사무실전화|EMAIL)+><!ELEMENT 집전화 (#PCDATA)><!ELEMENT 사무실전화 (#PCDATA)><!ELEMENT EMAIL (#PCDATA)><!ELEMENT 관심분야 (#PCDATA)><!ELEMENT 애인이름 (#PCDATA)>
<?xml version="1.0" encoding="euc-kr" standalone="no"?>
<!DOCTYPE 이력 SYSTEM "test.dtd"><이력>
<사진/><생년월일>111111-1009313</생년월일><이름>홍길동</이름><대학>공과대학</대학><전공>컴퓨터공학전공</전공><연락처>
<집전화>042-111-2222</집전화><사무실전화>042-1111-3333
</사무실전화><EMAIL>[email protected]
</EMAIL></연락처><관심분야>XML</관심분야><애인이름>여자1</애인이름><애인이름>여자2</애인이름>
</이력>test.dtd test2.xml
34 / 100
속성
엘리먼트에대한추가적인정보를제공
DTD나시작태그내에지정
모든속성값들은 quote(‘ ’, “ ”)
3 부분으로구성 : 이름, 유형, 디폴트값
속성선언 <!ATTLIST 관련-엘리먼트명 attribute-list >
35 / 100
속성유형
String attribute : CDATA, 임의텍스트 <!ATTLIST ELEMENTNAME
ATTRIBUTENAME CDATA #IMPLIED/#REQUIRED/#FIXED>
<item href=“http://dblab.cnu.ac.kr”>데이터베이스시스템연구실
</item>
Tokenized attributes
ID, IDREF, IDREFS, ENTITY, ENEITIES, NMTOKEN, NMTOKENS
<!ATTLIST ELEMENTNAME ATTRIBUTENAME TOKENTYPE
#IMPLIED/#REQUIRED /#FIXED>
<!ATTLIST chapter id ID #REQUIRED>
<chapter id=“ch01”>…. </chapter>
36 / 100
속성 유형
Enumerated attributes
<!ATTLIST ELEMENT ATTRIBUTENAME (A|B|C|..) “DEFAULT”
#REQUIRED/#FIXED>
<!ATTLIST chapter align (left|center|right) “left” >
<chapter align=“left”>….. </chapter>
37 / 100
속성유형
ID
ID의 값은 name
문서내에서 각엘리먼트 ID 값은고유
IDREF / IDREFS
IDREF : 지정된 ID로 엘리먼트를 가리킨다
IDREFS : white space로 구분되는 IDREF 값들
ENTITY / ENTITIES
ENTITY : external entity
ENTITIES : white space로 구분되는 ENTITY 값들
NMTOKEN / NMTOKENS
NMTOKEN : 단일워드로 구성
38 / 100
Attribute Default Value
#REQUIRED
엘리먼트선언시 반드시 값이지정
#IMPLIED
속성값이요구되지 않고 디폴트값을 제공하지 않는다
값이지정되지 않으면 XML 처리기는값 없이 처리
“value”
디폴트로임의 적절한 값이지정
#FIXED “value”
고정된값을갖는다
속성이요구되지 않지만, 발생시 지정된 값을갖는다
39 / 100
Attribute 사용 예
<?xml version="1.0" encoding="euc-kr" ?><!DOCTYPE 이력 [<!ENTITY % d.types "(1 | 2 | 3 | 4 | 5 | 6)"><!-- 1 : 2000, 2=mm-dd-yy, 3=mm/dd/yy, 4=dd-mm-yy, 5=month day year --><!ELEMENT 이력 (사진?, 생년월일, 이름, 대학, 전공, 연락처, 관심분야, 애인이름*)><!ELEMENT 사진 EMPTY><!ELEMENT 생년월일 (#PCDATA)><!ELEMENT 이름 (#PCDATA)><!ELEMENT 대학 (#PCDATA)><!ELEMENT 전공 (#PCDATA)><!ELEMENT 연락처 (집전화|사무실전화|EMAIL)+><!ELEMENT 집전화 (#PCDATA)><!ELEMENT 사무실전화 (#PCDATA)><!ELEMENT EMAIL (#PCDATA)><!ELEMENT 관심분야 (#PCDATA)><!ELEMENT 애인이름 (#PCDATA)><!ATTLIST 이력 status (draft|final) “draft”
id ID #REQUIRED ><!ATTLIST 생년월일 type %d.types; #IMPLIED><!ATTLIST 전공 h.align (left | center | right) #IMPLIED><!ATTLIST 애인이름 rid IDREF #IMPLIED>]>
40 / 100
Attribute 사용 예
<?xml version="1.0" encoding="euc-kr"?><!DOCTYPE 이력 SYSTEM “test.dtd”><이력 status=“final” id=“his01”>
<사진/><생년월일 type=“2”>01-20-99</생년월일>
<이름>홍길동</이름><대학>공과대학</대학><전공 h.align=“center”>컴퓨터공학전공</전공>
<연락처><집전화>042-111-2222</집전화><사무실전화>042-1111-3333</사무실전화><EMAIL>[email protected]</EMAIL>
</연락처><관심분야>XML</관심분야><애인이름 rid=“his01”>애인1</애인이름><애인이름 rid=“his01”>애인2</애인이름>
</이력>
41 / 100
엔티티
반복, 교체되는텍스트나문서구조를참조하는데사용
특수문자들(XML 예약문자들)을표현하는데사용
유일한이름을가진다
EntitiesMostly in DTDs
Entity 사용시장점 : consistency, changeability, efficiency
general
42 / 100
엔티티
Character reference
특수기호, 예약기호 등을 표현
& (&), < (<), <(<), >(>), &(&), '(’), quot;(”)
General entities
“&” 사용
블럭이나 텍스트를참조 시 사용
예
Parameter entities
“%”사용
자주 사용되는내용 모델이나 속성을참조 시 사용
예
- DTD에서 : <!ENTITY univ “Paichai”>
- 실제문서에서 : &univ; university
<!ENTITY % m.addr (집전화|사무실전화|EMAIL)>
<!ELEMENT 연락처 (% m.addr;)+ >
43 / 100
엔티티
<?xml version="1.0" encoding="euc-kr" standalone="yes"?>
<!DOCTYPE 이력 [<!ENTITY univ “배재대학교”><!ELEMENT 이력 (이름, 대학, 전공, 특징)><!ELEMENT 이름 (#PCDATA)><!ELEMENT 대학 (#PCDATA)><!ELEMENT 전공 (#PCDATA)><!ELEMENT 특징 (#PCDATA)>]><이력><이름>홍길동</이름><대학>&univ;</대학><전공>컴퓨터공학</전공><특징>본 &univ;는 정보화를 선도하는
대학으로서…. &, <, <, >,
&, ', " </특징></이력>
General Entity
Character Entity
44 / 100
엔티티
<?xml version="1.0" encoding="euc-kr" standalone="yes"?><!DOCTYPE 논문 [<!ENTITY % m.name "이름, 대체이름?, 역활?, 회원구분?, 이력?"><!ENTITY % m.org "소속기관, 소속부서?, 소속기관주소?, 직책?"><!ENTITY % a.id "id ID #IMPLIED"><!ENTITY % a.sizes "SIZEX CDATA #IMPLIED
SIZEY CDATA #IMPLIED UNIT CDATA #IMPLIED">
…..<!ELEMENT 저자 (%m.name;) ><!ELEMENT 소속 (%m.org;) ><!ATTLIST 사진 %a.id;
%a.sizes;ho.align %h.align; #IMPLIEDve.align %v.align; #IMPLIED
NAME ENTITY #IMPLIEDSCALE CDATA #IMPLIED >
]><논문> ….</논문>
Parameter Entity
45 / 100
주석
의미를가지지않으며 ‘<!--’로시작, ‘-->’로종료
선언이나태그내에올수없다.
문자열 “--”를제외한임의데이터를포함
XML 처리기는이를처리하지않는다.
예<?xml version="1.0" encoding="euc-kr" standalone="no"?><!-- 이부분은 주석 부분입니다 --><!-- 본문서는 XML 문서로서엘리먼트에 대한예 입니다 --><이력>
<이름>홍길동</이름><대학>공과대학</대학><전공>컴퓨터공학전공</전공><연락처>042-111-2222</연락처><관심분야>놀기</관심분야><애인이름>애인</애인이름>
</이력>
46 / 100
표기법
멀티미디어, 워드프로세서정보등의비XML 데이터(NDATA)의데이터내용표기를정의
(적절한 S/W가데이터를처리)
응용처리기에정보를전달
External entities를이용
예
<!NOTATION a-w PUBLIC “-//addison --wesley //NOTATION maths //EN//XML”>
<!NOTATION tex PUBLIC “-//Local //NOTATION Tex Fomula //EN//XML”>
<!NOTATION hwp SYSTEM “hwp.exe”>
<!NOTATION tiff SYSTEM “C:\PROGRAM FILES\PaintShop Pro 5\psp.exe”>
<!ATTLIST eqn type NOTATION (a-w | tex | hwp | tiff) “a-w” >
<eqn type=“hwp”>%test.hwp;</eqn>
47 / 100
CDATA 섹션
파서에마크업문자를무시하도록지시
문자데이터의모든곳에위치가능
모든문자데이터는응용에직접전달
중첩되지않는다
CDATA 부분내주석은인식되지않음
주로프로그램소스등을표현시에사용
예
<![CDATA[
*p=&q;
b=(i <= 3);
]]>
48 / 100
CDATA 섹션
<?xml version="1.0" encoding="euc-
kr" standalone="yes"?>
<cdatatest>
<![CDATA[
<!DOCTYPE 이력 [
<!ENTITY univ “배재대학교”>
<!ELEMENT 이력 (이름, 대학, 전공)>
<!ELEMENT 이름 (#PCDATA)>
<!ELEMENT 대학 (#PCDATA)>
<!ELEMENT 전공 (#PCDATA)>
<!ELEMENT 특징 (#PCDATA)>
]]>
</cdatatest>
49 / 100
XML 스키마
XML 문서의구조와컨텐츠를정의
데이터타입이나 Namespace 등을표현하기어려운 DTD 문제점을보안
DTD 보다유연한구조정의를갖는다
다양한데이터타입
integer, float, date, time, boolean, …
사용자정의타입
확장정의가능한데이터타입
Grouping
Namespace 지원
50 / 100
XML 스키마 vs. DTD
구분 DTD XML Schema
문법 EBNF + 의사(pseudo) XML XML 1.0을 만족
툴(Tool)풍부함 (기존의 SGML툴을사용할 수 있음)
XML툴을 거의 모두 사용할 수있음
DOM 지원 못함DOM을통해 조작되거나디스플레이 될 수 있음
컨텐츠모델
약함 – 간단한 순차 리스트 및선택 리스트만 제공.
요소들이나타날 수 있는회수를 정확히 말할 수 없음
강함 – 좀더 상세한 컨텐츠모델은 ‘혼합된 컨텐츠’에서도상호 배타적이지 않음.
나타나는 횟수를 정확히 지정할수 있음
51 / 100
데이터타입정의
약함 – 문자열,이름토큰,ID와그 밖의 몇몇 데이터 타입
강함 – 문자열,숫자,날짜/시간및 널리 쓰이는 데이터 타입포함
상속 불가능 가능
확장성제한됨 – 확장을 위해서는XML 1.0 권고안을 바꿔야 함
제한 없음 – XML의 확장성을기반으로 함
기존의제약조건들
있음 – SGML과의호환성을유지하려 하기 위함
없음 – DTD의 것을 유지,
대부분은 최신의 프로그래밍언어와 기술에 근거하고 있음
복수어휘집지원
불가능 – 다큐먼트마다하나의 DTD
가능 – 필요한 만큼 사용할 수있고, XML 네임스페이스를기반으로 함
52 / 100
XML 스키마 – End of DTD?
DTD
광범위하게 사용되고지원됨.
많은 기존응용프로그램과 문서가 있다.
많은 시간과비용이투자됨.
경험이 풍부한프로그래머와 전문가가 있다.
NO!
53 / 100
XML 스키마 – 구성요소(1)
Declarations
엘리먼트와 속성
인스턴스에서 사용됨
Types
엘리먼트와 속성에서사용
각각의 선언은고유한 타입을 갖음
Type Definitions
내용모델 정의
54 / 100
XML 스키마 – 구성요소(2)
Declarations Types Type Definitions
a
b
c
aType
integer
string
aType=‘(b,c)’
<element name=“a” type=“aType”/>
<element name=“b” type=“integer”/>
<element name=“c” type=“string”/>
<complexType name=“aType”>
<element ref=“b” minOccurs=“1”/>
<element ref=“c” minOccurs=“1”/>
</complexType>
55 / 100
XML 스키마 – Complex Types
Complex Types
자식 엘리먼트허용
속성을 가질수 있다.
<xsd:comlpexType name=“KRAddress”>
<xsd:sequence>
<xsd:element name=“name” type=“xsd:string”/>
<xsd:element name=“street” type=“xsd:string”/>
<xsd:element name=“city” type=“xsd:string”/>
<xsd:element name=“zip” type=“xsd:decimal”/>
</xsd:sequence>
<xsd:attribute name=“country” type=“xsd:NMTOKEN” fixed=“KR”/>
</xsd:complexType>
56 / 100
XML 스키마 – Simple Types
Simple Types
자식 엘리먼트를가질 수 없다
속성을 가질수 없다
XML Schema의 Simple Types 구성
string
normalizedString
token
byte
unsignedByte
hexBinary
integer
positiveinteger
Negativeinteger
int
unsignedInt
long
unsignedLong
short
decimal
float
double
Boolean
time
dateTime
duraion
date
Name
QName
anyURI
……
57 / 100
XML 스키마 – Datatypes 생성
기존의데이터타입에서새로운데이터타입을생성할수있다.
“base” 사용
새로운데이터타입에대해하나이상의값을지정할수있다.
58 / 100
Datatypes 생성 형식
<simpleType name=“name” base=“source”>
<facet value=“value”/>
<facet value=“value”/>
</simpleType>
minInclusive maxInclusive minExclusive maxExclusive length minlength maxlength pattern enumeration
string boolean float double decimal timeDuration recurringDuration uriReference
59 / 100
Datatypes 생성 예
“전화번호”라는새로운데이터타입생성
엘리먼트는 문자열 값을 갖는다.
문자열의 길이는 8개
문자열의 형태 : ddd-dddd
‘d’ 는 10진수를 의미
문자열길이는여유있게표현한다.
<simpleType name=“전화번호” base=“string”>
<length value=“8”/>
<pattern value=“\d{3}-\d{4}”/>
</simpleType>
60 / 100
XML 스키마 예제
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="name"/>
<xsd:element ref="age" minOccurs='0' maxOccurs='1'/>
<xsd:element ref="hobby" minOccurs='1' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="name" type="string"/>
<xsd:element name="age" type="integer"/>
<xsd:element name="hobby" type="string"/>
</xsd:schema>
<!ELEMENT person (name, age?, hobby+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT hobby (#PCDATA)>
61 / 100
Multi namespace declarations
Can declare compound namespace in element
Child element applies necessary namespace selectively
<?xml version=“1.0”?>
<bk:books xmlns:bk =“urn:books”
xmlns:isbn=“urn:ISBN:0-007-23-5”>
<bk:title> XML and Webservice</bk:title>
<isbn:no> 156739495 </isbn:no>
</bk:book>
62 / 100
Slides’ title here
XLL & XSL
XLL(XML Linking Language)
TEI(Text Encoding Initiative)와 HyTime(Hypermedia/Time-based
Structuring Language) 표준에기본
양방향, 다중방향링크기능제공
XLL은두부분(XLink, XPointer)으로표현
XML-LINK Type(선언가능한값)
SIMPLE, EXTENDED, LOCATOR, GROUP, DOCUMENT
64 / 100
XLL의 특징
어떤엘리먼트로도링크표현가능
링크를어떻게처리하는가에대한정보를지정가능
XML 문서에포함되지않은리소스를포함가능
한개의링크가 3개이상의리소스를갖는것이가능
리소스와링크를분리가능
쌍방향링크를기술가능
65 / 100
HTML vs. XML Link
HTML
URL은 하나의 문서만을 가르킬수 있다.
문서간의연관성, 기록을보관하는 개념 없음
XML
다방향링크 가능
모든 element를 linking element화 가능
링크하는문서와 동일한파일에저장불필요
HTML의 <A>태그수용
66 / 100
Simple Links
두리소스사이연결(HTML link와유사)
예
<TEST XML-LINK=“SIMPLE”
HREF=“http://dblab.cnu.ac.kr”>Link Text</TEST>
- Locator : other resource - a URL, a query, an XPointer
DTD <!ELEMENT TEST ANY ><!ATTLIST TEST
XML-LINK CDATA #FIXED “SIMPLE”ROLE CDATA #IMPLIEDHREF CDATA #REQUIREDTITLE CDATA #IMPLIEDCONTENT-ROLL CDATA #IMPLIEDCONTENT-TITLE CDATA #IMPLIEDSHOW (EMBED | REPLACE | NEW) “REPLACE”ACTUATE (AUTO | USER) “USER”BEHAVIOR CDATA #IMPLIED
>
67 / 100
Simple Link 예
<!ELEMENT search-engine-list (search-
engine)+>
<!ELEMENT search-engine (#PCDATA)>
<!ATTLIST search-engine
XML-LINK CDATA #FIXED "SIMPLE"
ROLE CDATA #IMPLIED
HREF CDATA #REQUIRED
TITLE CDATA #IMPLIED
INLINE (TRUE|FALSE) "TRUE"
CONTENT-ROLE CDATA #IMPLIED
CONTENT-TITLE CDATA #IMPLIED
SHOW
EMBED|REPLACE|NEW) "REPLACE“
ACTUATE (AUTO|USER) "USER"
BEHAVIOR CDATA #IMPLIED
>
<?xml version="1.0" encoding="EUC-KR"?>
<?xml:stylesheet type="text/xsl"
href="simple.xsl"?>
<!DOCTYPE search-engine-list SYSTEM
"slink.dtd">
<search-engine-list>
<search-engine
HREF="http://www.simmani.com"
TITLE="심마니홈페이지"> 심마니</search-engine>
<search-engine
HREF="http://www.yahoo.co.kr"
TITLE="야후! 코리아홈페이지">
야후! 코리아</search-engine>
</search-engine-list>
slink.dtd
slink.xml
68 / 100
Extended links
Extended links DTD 예
<!ELEMENT EXTENDED ANY
<!ATTLIST EXTENDED
XML-LINK CDATA #FIXED “EXTENDED“
ROLE CDATA #IMPLIED
TITLE CDATA #IMPLIED
INLINE (TRUE | FALSE) "TRUE"
CONTENT-ROLE CDATA #IMPLIED
CONTENT-TITLE CDATA #IMPLIED
SHOW (EMBED | REPLACE | NEW) "REPLACE"
ACTUATE (AUTO | USER) "USER"
BEHAVIOR CDATA #IMPLIED
>
69 / 100
Extended links
Extended Links : 두개이상의 리소스사이관계표현
<예제>
<단락>내가 즐겨 찾는 곳은<확장링크 xml:link="extended">여기
<확장할곳주소명="배재대학교“HREF="http://www.paichai.ac.kr"/>
<확장할곳주소명="컴퓨터공학과“HREF="http://cs.paichai.ac.kr"/>
<확장할곳주소명="멀미연구실“HREF="http://mie.paichai.ac.kr"/>
</확장링크>를 누르세요</단락>
</예제>
70 / 100
XLL(Extended links 예)
71 / 100
XPointer
문서의계층적인엘리먼트트리구조에서위치와관계를정의하는문법을제공
XPointer 구조 번지지정의기본 단위
인수 : (Instance, NodeType, (Attr, Val)* )
child(2,CHAP).(4,SEC).(3, Par)
child(1,CHAP,LANG,EN)
72 / 100
XPointer(Location Terms)
Absolute Location Terms
ROOT()
문서의 최상위 엘리먼트를 지정, 즉 문서 전체를 지정
HERE()
링크하는 엘리먼트 자체를 지정
ID(NAME)
문서 내에서 ID 값을 갖는 엘리먼트
DITTO()
한 쌍의 XPointer 중 두 번째 XPointer의시작에만 사용가능하고, 단순히 첫번째 항의 표기를 복제한다
HTML(NAMEVALUE)
HTML A 요소의 NAME 속성과 일치하는 값을 취하여, HTML의 구역 식별자와 같은서비스를 제공
73 / 100
XPointer(Location Terms)
Relative Location Terms
child()
위치 소스의 자식(직접 아래) 엘리먼트들을 선택
descendant()
위치 소스에 포함된 모든 엘리먼트(1단계이상)
ancestor ()
위치 소스의 부모 엘리먼트들을 선택
preceding ()
위치 소스 이전에 나오는 엘리먼트들을 선택
following()
위치 소스 다음에 나오는 엘리먼트들을 선택
psibling()
위치 소스 이전에 나오는 형제 엘리먼트들을 선택
fsibling()
위치 소스 다음에 나오는 형제 엘리먼트들을 선택
74 / 100
XPointer(Location Terms 예)
Spanning Location Term
id(a23).span(child(1), child(3))
String Location Term
id(a27).string(1, worms, 4) --- ‘s’
id(a27).string(5, ’!’, 1, 1)
75 / 100
XLL(XPointer 사용 예)
<SPEECH ID="a27"><SPEAKER>Polonius</SPEAKER> (LF)
<DIRECTION>crossing downstage</DIRECTION>Fare you well,
my lord. <DIRECTION>To Ros. </DIRECTION>
You go to seek Lord Hamlet? There he is. </SPEECH>
• ID(a27).CHILD(2,DIRECTION) : "To Ros."
• ID(a27).CHILD(2,.) : "crossing downstage".
– . : candidate elements of any type are matched
• ID(a27).CHILD(2,*CDATA) : "Fare you well, my lord."
– *CDATA : selects only untagged(pseudo-element) sub-portions of an element
• ID(a27).CHILD(2,*)
– * : selects among child elements and pseudo-elements
– selects the second element or pseudo-element among the children, the line-break between the "SPEAKER" and "DIRECTION" elements.
76 / 100
XPath
Define
As XML Path Language (XPath), with XML separate language spec.
Question notation that do XML documents' elements and text to do filtering
with addressing .
Declarative expression to be not procedural notation
77 / 100
XPath's action principle
<booklist>
<book>
<title>XPath</title>
<writer>HK Jubg</writer>
<publish>MIE</ publish>
</book>
</booklist>
Document Root
booklist
book
title
writer
publish
XPath
HK Jung
MIE
<xsl:template match = “/booklist/book/title”>
78 / 100
Location Expression
/ : Child Operator of present node return.
// : In Document to Recursive Descent Operator all relevant node returns.
. :current context
* :Regardless of element name by Wildcard all node conversions
@ : Attribute's attribute node return.
@* : Wildcard that replace all attribute nodes of node.
: : As Namespace Operator, Namespace's Prefix return.
() : Group Operator
[] : filters
79 / 100
Finding Node
General method to get node that want at node
expression : “/”
Appoint position using relative pass from present node using "/"
that is child operator mainly.
Form : <xsl:template match=“00/00/00”>
Finding writer node
<xsl:template match =“booklist”>
<xsl:value-of select =“./book/writer”/>
</xsl:template>
80 / 100
Finding Attribute
Expression that find Attribute at node
Expression : “@”
Form : <xsl:template match=“/@attribute_name”>
Finding books attribute
<xsl:template match =“book”><xsl:value-of select =“./@catalogue”/>
</xsl:template>
81 / 100
Recursive Descent Operator
In element name regardless of Context Node's position path
appointment
expression : “//”
"//" Operator replaces node that escape relative route and have
name of appropriate element been in what position of present
document.
<xsl:template match =“booklist”><xsl:value-of select =“//title”/>
</xsl:template>
82 / 100
스타일시트
CSS(Cascading Style Sheet)
XSL(eXtensible Style sheet Language)
XML 데이터 및문서와 함께 사용하도록설계된 스타일시트언어
XSLT, XSL-FO
CSS/XSL 처리
HTML,
RTF,
raw text,
etcCSS/
XSL
HTML/
XMLformatting
Processor
83 / 100
Using CSS with XML
Why use CSS with XML?
Easy to learn and implement
Already at work in the Web community
Works with HTML
CSS does have a downside
Can’t generate text
Can’t grab an item from one place and use it again in another place
Isn’t programming language
Use a simple box-oriented formatting model
84 / 100
Example
TITLE URL {
font-family: verdana;
font-size: 70%;
font-weight: bold;
list-style-type: square;
cursor: default;
}
TITLE {
margin: 10% 10% 10% 10%
}
TITLE {
margin: 10% 10%
}
85 / 100
What is XSL?
eXtensible Style sheet Language
XML provide information about the structure of a document
XSL create style sheets for XML document
Formatting information
How to format the element, contents for viewing by user (ex, web browser)
The following design
Over the internet, XML syntax, subset of DSSSL
Mapping of CSS into XSL, ease to create
DSSSL의서브셋으로구성 XML 문서를 다른 XML 또는 비 XML 문서로변환
(Transformation) : XSLT
XML 문서의 구조를변경 (Formatting Object)
86 / 100
Why Stylesheet?
Reuse
the same content can look different in different contexts
Multiple output formats
different media (paper, online), different sizes (manuals, reports), different
classes of output devices (workstations, hand-held devices)
Styles tailored to the reader's preference
print size, color, simplified layout for audio readers
Standardized styles
corporate stylesheets can be applied to the content at any time
Freedom from style issues for content authors
technical writers needn't be concerned with layout issues because the
correct style can be applied later
87 / 100
XSL
특정엘리먼트가어떻게디스플레이가능한출력으로변환되는지기술
서식규칙구성 패턴(Pattern) : XML 문서의 엘리먼트 위치, 유형을 정의
표현정보(Action) : 서식규칙내의 패턴과 정합되는엘리먼트가 어떻게 표현되는지 기술
rule
pattern
action
XML XSL HTML/XML/RTF/…
88 / 100
A construction rule
Patterns
Choose which elements to apply which style rules to
Have a target-element (matched in document)
Supply a type attribute (matched in element)
Actions
Objects to create in the output tree
Directly create flow objects, add literal text
89 / 100
XSLT example
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="14-5.xsl"?>
<PERIODIC_TABLE>
<ATOM STATE="GAS">
<NAME>Hydrogen</NAME>
<SYMBOL>H</SYMBOL>
<ATOMIC_NUMBER>1</ATOMIC_NUMBER>
<ATOMIC_WEIGHT>1.00794</ATOMIC_WEIGHT>
<BOILING_POINT UNITS="Kelvin">20.28</BOILING_POINT>
<MELTING_POINT UNITS="Kelvin">13.81</MELTING_POINT>
<DENSITY UNITS="grams/cubic centimeter">
0.0899
</DENSITY>
</ATOM>
<ATOM STATE="GAS">
<NAME>Helium</NAME>
<SYMBOL>He</SYMBOL>
<ATOMIC_NUMBER>2</ATOMIC_NUMBER>
<ATOMIC_WEIGHT>4.0026</ATOMIC_WEIGHT>
<BOILING_POINT UNITS="Kelvin">4.216</BOILING_POINT>
<MELTING_POINT UNITS="Kelvin">0.95</MELTING_POINT>
<DENSITY UNITS="grams/cubic centimeter”>
0.1785
</DENSITY>
</ATOM>
</PERIODIC_TABLE>
PI
root
Child node
attribute
element
90 / 100
XSL templates
Template rule is important part of XSL style sheet
xsl:template element
Have the “match” attribute : node identification
xsl:apply-templates element : Use to handle child node
<xsl:template match=“atom”>
<xsl:apply-templates select=“name”/>
</xsl:template>
Template ruleattribute
91 / 100
XSL Example
report.xslreport.xml
92 / 100
XSL Example
93 / 100
XSL Example
XSL Example
94 / 100
XML 문서 예
<?xml version="1.0" encoding="EUC-KR"?>
<?xml:stylesheet type="text/xsl" href="ex1.xsl"?>
<memo>
<body>
<p> 오늘의 차세대 인터넷 언어(XML)에 대한 수업은 아마도흥미있고, 보람된 수업이 될 것입니다. 많은 학생들의 참여를바랍니다.</p>
<p> 수업시간은 월요일 7,8 교시이고요, 장소는 매체원원격강의실입니다. 감사합니다 !</p>
</body>
</memo>
95 / 100
XSL 문서예
<?xml version="1.0" encoding="EUC-KR"?><xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:template match="/"><xsl:apply-templates />
</xsl:template><xsl:template match="memo"><HTML>
<HEAD><TITLE> 메모 </TITLE>
</HEAD><BODY><DIV><xsl:apply-templates /></DIV>
</BODY></HTML>
</xsl:template>
<xsl:template match="body">
<DIV>
<xsl:apply-templates />
</DIV>
</xsl:template>
<xsl:template match="p">
<DIV>
<xsl:value-of />
</DIV>
</xsl:template>
</xsl:stylesheet>
XML + XSL
96 / 100
XSLT 문서예
<xsl:template match="memo">
<HTML><HEAD>
<TITLE> 메모 </TITLE></HEAD><BODY><DIV><xsl:apply-templates /></DIV></BODY>
</HTML></xsl:template>
<HTML><HEAD>
<TITLE> 메모 </TITLE></HEAD><BODY><DIV>
memo 엘리먼트의하위 엘리먼트
</DIV></BODY>
</HTML>
97 / 100
XSLT 문서예
<xsl:template match="body">
<DIV>
<xsl:apply-templates />
</DIV>
</xsl:template>
<xsl:template match="p">
<DIV>
<xsl:value-of />
</DIV>
</xsl:template>
<p>는엘리먼트를만나면 <xsl:value-of/>
태그를실행하는데, 이는 <p> 태그내의문자열을가져와서 <DIV> 태그사이에
삽입한다.
Body 엘리먼트를만나면 <DIV>
태그를출력하고하위엘리먼트처리실행
98 / 100
XSLT 문서예
<HTML>
<HEAD>
<TITLE> 메모 </TITLE>
</HEAD>
<BODY>
<DIV>
<DIV>
<DIV> 오늘의 차세대 인터넷 언어(XML)에대한 수업은 아마도 흥미있고, 보람된 수업이 될 것입니다. 많은 학생들의참여를 바랍니다.</DIV>
<DIV> 수업시간은 월요일 7,8 교시이고요, 장소는 매체원원격강의실입니다. 감사합니다 ! </DIV>
</DIV>
</DIV>
</BODY>
</HTML>
변환된문서
99 / 100
XSL:formatting object
XML 내용을사용자에게어떻게표현할지를나타내기위해사용하는어플리케이션
HTML+CSS 보다더복잡한레이아웃모델제시
더일반적인이용을위해설계
100 / 100
XSL:formatting object
XSL 포맷팅모델은사각형영역에기본
4개의다른종류의사각형영역으로구분 Area container
(머리글, 본문, 바닥글, 왼쪽/오른쪽여백)
Block area(단락, 리스트)
Line area(블록 내텍스트의 한 행)
Inline area(문자, 각주, 수학식과같은행의일부)
101 / 100
XSL:FO 처리
result tree Flow Object Tree
XSL
Processor
Display
Processor
Parser
XSLT
Processor
XML
DocumentXSL
StyleSheet
XSL Formatting Object
Flow Object Semantics
Engine
Output
XSLT, XPath
Specification
Formatted
result
Transform
102 / 100
XML 도구
XML 문서
Editor
Convert
DTDEditor
DataBase
Formatter
Viewer
Browser
Server
Parser+응용
(Java, JavaScript)
103 / 100
XML 문서처리 모델
포맷팅처리 표시처리
스타일 설계처리 폰트
리소스
XSL
포맷지정
물리적구조정보
CSS 테이프
CD-ROM
책Style Editor
Browser/
Viewer
XML문서
편집처리
DTD 설계처리
DTD
DTD Editor
논리적구조정보
XML Editor
기존문서Converter/
Filter
문서정보검색
검색엔진
문서가공
EDI, CALS, 전자출판,
Workflow S/W
XML 문서
문서저장및 관리
104 / 100
W3C’s long term goals
Web for Everyone
regardless of language, user capabilities, geographical location, device used for access,…
Web on Everything
not only PC, but Phones, PDA, Television,…
Knowledge Base, Advanced data searching and sharing
information for both human and machine processing
Trust and Confidence
technologies for collaborative environment
a Web with accountability, security, confidence, and confidentiality
105 / 100
Slides’ title here
Thank you for your attention!!