Download presentation
Presentation is loading. Please wait.
1
XML(Extensible Markup Language)
xml programming
2
Agenda Markup 이란? XML 일반 XML 기본 사항 XML vs HTML 관련된 기술들 xml programming
3
What is Markup? 원래의 내용에 추가적인 정보를 표현 몇가지 마크업 언어들 양식적 마크업 구조적 마크업
의미적 마크업 몇가지 마크업 언어들 SGML (Standard Generalized Markup Language) HTML (HyperText Markup Language) XML (eXtensible Markup Language) xml programming
4
Mark Up이란? 마크업이 모야? mark up(사전적 의미)
① …에 비싼 값을 매기다, 값을 올리다. ② [술집의 계산서 따위에] …을 덧붙여 써 넣다 마크업은 그 화일이 프린터로 출력되거나 화면에서 어떻게 보여야할 것인지를 나타내기 위해, 또는 그 문서의 논리적인 구조를 묘사하기 위해서, 텍스트나 워드프로세싱 파일의 특정위치에 삽입되는 일련의 문자들이나 기호들을 말한다 xml programming
5
… 이름, 성, 전자메일주소 길동, 홍, hong@daum.net Comma를 이용한 MarkUp으로 자료를 분리 문제점 :
자료사이의 관계나 자료자체에 대한 의미가 존재하지 않는다. 컴퓨터는 정보의 추리가 어렵다. xml programming
6
… 컴퓨터가 처리할 수 있는 MarkUp은? HTML과 XML 살짝 비교!!! 신문기사에서
제목 작성자 작성자의 메일주소 작성날짜 내용 을 WebRobot Agent가 분리하게 하려면… xml programming
7
MarkUp의 종류 구두점(Punctuational) MarkUp 표현(Presentational) MarkUp
절차(Procedual) MarkUp 서술(Descriptive) MarkUp 참조(Referential) MarkUp 메타(Meta) MarkUp XML : 서술 MarkUp, 메타 MarkUp xml programming
8
구두점 마크업 구두점 마크업은 구문 정보를 제공하기 위해 약속된 일련의 문자집합. Ex) , or . or 공백 문제점
자료사이의 관계나 자료자체에 대한 의미가 존재하지 않는다. (모호성) 컴퓨터는 정보의 추리가 어렵다 xml programming
9
표현 마크업 표현 마크업은 표현 마크업은 수직, 수평 공백주기, 페이지 분리, 리스트등을 포함하고 있다.
구두점을 사용한 가장 기본적인 마크업에 다양한 방법으로 표현을 명확하게 만드는 보다 수준 높은 구성 요소를 제공한다. 표현 마크업은 수직, 수평 공백주기, 페이지 분리, 리스트등을 포함하고 있다. xml programming
10
절차 마크업 절차 마크업은 문제점 표현 마크업이 갖는 모호성을 제거하여 텍스트 처리 프로그램에서 사용 가능하도록
포맷을 지정할 수 있는 명령어를 포함하고 있다. 문제점 물리적 페이지 표현은 가능하지만 논리적 구조나 의미는 나타낼 수 없다. xml programming
11
서술 마크업 서술 마크업은 절차 마크업에서 처리가 불가능했던 문서에 대한 논리적인 구조를 다룰 수 있는 태그 집합을 제공한다.
텍스트 엘리먼트가 어떻게 표현되는지를 지정하는 대신, 텍스트 엘리먼트가 무엇인지를 지정한다. xml programming
12
참조 마크업 참조 마크업은 Ex) 문서 외부에 존재하는 엔티티를 참조하여 프로세싱 도중에 치환하는 기능을 제공한다.
  : 공백을 의미 © : 저작권 표시 xml programming
13
메타 마크업 메타 마크업은 SGML or XML = 메타 마크업 언어 마크업 해석을 변경하거나
서술 마크업 언어의 태그등을 새로 만드는(확장) 경우에 사용된다. SGML or XML = 메타 마크업 언어 DTD를 사용하여 마크업에 필요한 태그를 유연하게 변경할 수 있다. xml programming
14
XML은? XML은 서술 MarkUp, 메타 MarkUp 이다!!! xml programming
15
XML이란? XML이란 무엇인가? Why Should I Use It? How Do I Use It?
xml programming
16
XML의 탄생 SGML HTML XML (Hypertext Markup Language; W3C:1992)
(Standard Generalized Markup Language; ISO 8879:1986) HTML (Hypertext Markup Language; W3C:1992) XML (Extensible Markup Language; W3C: ) xml programming
17
SGML SGML이란 SGML문서의 구성 문서에서 논리구조와 내용 구조를 기술하기 위한 메타언어(meta language)
SGML Declaration Document Type Definition(DTD) Document Instance(DI) xml programming
18
SGML특징 SGML의 제한 SGML의 장점 S/W를 프로그래밍하기 어렵다.(SGML의 복잡성)
Web에서 S/W제한과 Instance의 이식성 결여 논리구조 작성의 어려움(DTD작성 어려움) 산업계의 지원 문제 SGML의 장점 유연성 개방표준 시스템이나 플랫폼에 독립적 재사용성 xml programming
19
HTML Hyper Text Markup Language W3C
SGML의 한 응용 HTML = SGML선언 + 하나의 DTD xml programming
20
HTML 특징 HTML의 한계 HTML의 장점 고정된 태그 집합 구조화 능력부족 효과적인 검색, 재사용, 검증이 불편
100여개의 태그가 존재하지만… 구조화 능력부족 효과적인 검색, 재사용, 검증이 불편 HTML의 장점 이식성과 사용이 편리 쉬운 사용방법 xml programming
21
XML Extensible Markup Language XML의 특징 (W3C 에서 1996년 초안발표) 간단성
지금까지 경험에 기본(SGML, HTML) 확장성(태그에 제한 없음) 링크의 자동 생성이 가능 차세대 하이퍼텍스트 기능을 제공 문서의 재사용 용이 플랫홈, 응용 App에 독립적 Primary character set으로 8-bit ASCII와 Unicode를 사용 xml programming
22
XML의 특징 XML과 SGML의 차이점 XML과 SGML의 유사점 XML과 HTML의 차이점
다양한 응용에 사용 XML이 SGML과 호환성을 갖는다 문서 내용을 포맷하기 위해 스타일 시트를 사용 XML과 HTML의 차이점 구조를 표현할 수 있다. 태그의 확장성 xml programming
23
SGML & XML & HTML SGML XML HTML XHTML, WML… SGML의 SUBSET SGML의 응용
xml programming
24
Sample : HTML <HTML> <BODY> <H1> XML 연구실
<li> 홍길동 <li> 이몽룡 <li> 석사2학기 <li> 성춘향 <li> 석사1학기 <li> 변학도 </BODY> </HTML> xml programming
25
Sample : XML <?xml version="1.0" encoding="euc-kr"?>
<연구실 이름 = “XMLAB"> <담당교수> <이름>홍길동</이름> </담당교수> <학생> <이름>이몽룡</이름> <과정>석사2학기</과정> </학생> <이름>성춘향</이름> <과정>석사1학기</과정> <이름>변학도</이름> </연구실> xml programming
26
… xml programming
27
DTD 또다른 XML문서 <?xml version="1.0" encoding="euc-kr"?>
<연구실> <연구실이름>XMLLAB</연구실이름> <담당교수>홍길동</담당교수> <학생 과정="석사2학기"> <이름>이몽룡</이름> </학생> <학생 과정 ="석사1학기"> <이름>성춘향</이름> <이름>변학도</이름> </연구실> xml programming
28
… xml programming
29
… XML <?xml version="1.0" encoding="euc-kr"?>
<book-table > <book> <id>001</id> <title>xml programming</title> <author>jaelee</author> <book-type>컴퓨터</book-type> </book> <id>002</id> <title>java 와 xml</title> <author>홍길동</author> </book-table> xml programming
30
… DTD <!ELEMENT book-table (book)+>
<!ELEMENT book (id,title,author+,book-type)> <!ELEMENT id (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT book-type (#PCDATA)> xml programming
31
다시 정리!!! SGML HTML Hypertext Markup Language
Standard Generalized Markup Language 대표적인 메타 마크업 언어 ISO 제정 (1986) 표준을 위한 표준 HTML Hypertext Markup Language SGML의 응용으로 WWW에서 사용하는 표준마크업 언어 메타 마크업 언어를 사용해서 만들어진 서술마크업 언어 xml programming
32
… XML XHTML ??? Extensible Markup Language SGML을 능가하는 간판급 메타 마크업 언어
HTML이 SGML응용이라면 XHTML은 XML의 응용 XHTML과 HTML은 100% 호환되지 않음 ??? HTML과 XML을 비교한다면??? xml programming
33
상식! W3C의 표준안 상태 Note Working Draft Proposed Recommandation
어떤 표준안이 회사나 단체로부터 제출되어 진 경우 Working Draft 본격적인 논의가 들어간 경우 Proposed Recommandation 충분한 논의후에 표준으로 정하기 별 문제 없는 경우 Recommandation 특별한 문제점이 드러나지 않는 경우 xml programming
34
XML관련표준 XLink XPointer XPath XSL(eXtensible Stylesheet Language)
XSLT(XSL Transformation) XML Schema CSS(Cascading Style Sheets) xml programming
35
… XML 관련 표준이 많은 이유는? XML 스펙은 간결하게 XML자체에 대해서만 정의하고 있다.
xml programming
36
어디에 이용할 것인가? XML은 기반기술로 분류되고 있으므로 특별히 XML을 사용하는 분야를 한정 지을 수 없다.
호환성(enable e-commerce transaction) 독립성(Independence) 다양한 포맷으로 변환 가능 (One data source, multiple views) 검색능력의 향상(Improved data searches) 풍부한 XML지원 소프트웨어 편리한 기반기술 xml programming
37
호환성 표준 규약을 따름으로 인해 호환성이 있다. HTML 스트리밍 표준규약이기 때문에 웹브라우져간 호환가능
서로 다른 규약으로 응용프로그램간에 호환성이 없다. xml programming
38
독립성 하드웨어나 운영체제, 프로그래밍 언어에 독립적인 특징이 있다.
XML 파일은 유니코드를 적용한 텍스트 형식으로 표현할 수 있다. xml programming
39
다양한 포맷으로 변환 가능 Present 부분과 Process부분의 분리 XML은 직접 Present 형태를 가지지 않는다.
표현 마크업이나 절차 마크업이 아님 서술 마크업 XSL을 적용하므로써 다양한 포맷을 가질 수 있다. xml programming
40
검색 능력의 향상 XML의 태그가 논리적인 구조나 내용을 표현할 수 있다.
그러므로 단순한 서술 마크업(HTML)의 경우보다 정확한 검색을 할 수 있다. xml programming
41
풍부한 XML지원 소프트웨어 XML지원 소프트웨어 파서 변환도구(XSLT Processor) XML지원 웹브라우져
Etc… xml programming
42
편리한 기반 기술 응용프로그램에 대한 설계와 구현과정에 있어 이미 개발된 응용 프로그램 패턴을 그대로 적용할 수 있다. Ex:
SAX or DOM Parser 응용프로그램 개발자는 어떻게 XML문서를 해석할지 고민하는 대신 해석한 XML내용을 어디에 사용할 지 집중적으로 고민할 수 있다. xml programming
43
XML의 적용 사례 IBM의 사이트 구현 WebServer XML Client Server XSL Processor
HTTP Request WebServer HTTP Request XML 문서 Style Sheets XSL XML, XSL XSL Processor HTML 문서 HTML 문서 xml programming
44
… Data 통합 관리 기존 System Application Application Application 고객자료 A
고객자료 B 고객자료 C xml programming
45
… XML로 통합 XML Application Application Application 고객자료 A 고객자료 B 고객자료 C
xml programming
46
… 다양한 형태의 서비스 제공 XSLT Processor a.XSL XML b.XSL c.XSL xml programming
47
어떻게 이용할 것인가? XML Processor XML프로세서는 XML문서를 읽어 내용과 구조에 접근하는 기능을 갖고 있다.
XML프로세서는 다른 응용프로그램을 위해 존재하며, 이 응용프로그램은 XML프로세서로 부터 XML문서처리에 필요한 정보를 얻는다. XML규약은 XML프로세서 행동 양식을 기술하는데, 구체적으로 XML자료를 읽는 방식과 XML자료를 처리한 결과로 얻어지는 정보를 응용 프로그램에 제공하는 방식을 정의한다. xml programming
48
… XML Processor의 Parsing
XML은 텍스트이기 때문에 프로그램이 XML을 읽기 위해서는 반드시 파싱과정을 거쳐야 한다. XML문서는 파싱과정을 통해 각각의 필요한 데이터로 구분된다. 응용프로그램은 구분된 데이터를 처리, 가공해 원하는 결과물을 만들어 내게 된다. xml programming
49
XML Processor Parsing.. DATA DATA XML 문서 결과 DATA DATA xml programming
Application DATA DATA xml programming
50
… XML Processor의 API XML Processor = XML Parser ???
XML Processor는 Parsing된 각각의 DATA를 응용프로그램이 사용할 수 있도록 API를 제공한다. XML Processor = XML Parser ??? 일반적으로 XML Processor를 XML Parser라고 한다. xml programming
51
XML Parser의 종류 SAX (The Simple API for XML)
DOM (Document Object Model) xml programming
52
XML 기본문법 이 길 재 xml programming
53
.. xml programming
54
Table of Contents 1. Introduction 2. Documents : well-formed XML 조건
3. Logical Structures : Element 와 Attribute 선언 방법 4. Physical Structures : Entity 와 Notation 선언 방법 5. Conformance : Valid 와 Non-Valid Processor 차이 6. Notation : 표기법 xml programming
55
1. Introduction xml programming
56
1.1 발단과 목적 xml programming
57
… 1.1 목표 XML은 인터넷상에서 수월하게 사용될 수 있어야 한다. XML은 다양한 적용(응용)이 가능해야 한다.
XML은 SGML과 호환될 수 있다. XML문서를 처리하는 프로그램 작성이 쉬워야 한다. XML에서 추가적인 또는 생략 가능한 기능은 최소화해야 하며, 생략 가능한 기능은 아예 없는 것이 이상적이다. xml programming
58
… XML문서는 사람이 읽고 명확하게 이해할 수 있어야 한다. XML의 설계를 빠르게 하는 것이 가능해야 한다. XML의 설계는 정규적이며, 간결해야 한다. XML문서는 쉽게 작성 가능해야 한다. XML 마크업의 간결함은 필요에 따라 무시될 수도 있다. 이 스펙은 XML 버전 1.0을 이해하는 데 필요한, 그리고 XML문서를 처리하는 컴퓨터 프로그램을 만드는데 필요한 모든 정보를 제공한다. xml programming
59
2. 문서(Documents) Well-formed XML 과 Valid XML
Well-formed XML 문서가 특정한 추가적인 제한 조건을 만족한다면 Vaild 문서가 될 수 있다. xml programming
60
Notation 이 스펙의 문법은 EBNF(Entended Backus-Naur Form) 이다.
Symbol ::= expression [a-zA-Z], [#xN-#xN] - 지정된 범위의 모든 문자들 중 하나 [^a-z], [^#xN-#xN] - 지정된 범위 밖의 모든 문자들 중 하나 [^abc], [^#xN#xN#xN] - 주어진 문자 이외의 모든 문자들 중 하나 xml programming
61
… (expression) 표현식은 하나의 단위로 취급, 다음의 방식으로 결합가능 A?
- A가 하나 나오거나 나오지 않을 수 있다.(0 or 1) A+ - A가 하나나 그 이상 나올 수 있다. (1 or more) A* - A가 나오지 않거나 여러 개 나올 수 있다. (0 or more) A B - A 다음에 B가 나와야 한다. A | B - A나 B중 하나만 나올 수 있다. A - B - A에는 일치하지만 B에는 일치하지 않는 문자열에 해당한다. xml programming
62
… 물리적 구조와 논리적 구조 물리적 관점 논리적 관점 하나의 문서는 Entity라는 단위로 구성된다.
Declarations (선언) Elements (요소) Comments (주석) Character references (문자참조) Processing Instruction (처리지시) 로 구성된다. xml programming
63
물리적 관점 : Entity Entity 인사말.XML 편지.XML 원문 <?xml version=“1.0” …?>
<편지 > <본문> <주제>문안인사</주제> <내용>건강하세요</내용> </본문> </편지> <인사말> 안녕하세요!!! </인사말> Entity 인사말.XML 편지.XML <?xml version=“1.0” …?> <편지 > <인사말> 안녕하세요!!! </인사말> <본문> <주제>문안인사</주제> <내용>건강하세요</내용> </본문> </편지> 원문 xml programming
64
시작하기 앞서… 2.3 Common Syntactic Constructs 문법에서 널리 쓰이는 몇 가지 기호를 정의한다.
공백문자 캐리지 리턴 라인피드 탭 [3] S ::= (#x20 | #x9 | #xD | #xA) + xml programming
65
… 이름과 토큰 [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender [5] Name ::= (Letter | ' _ ' | ':') (NameChar)* [6] Names ::= Name (S Name)* [7] Nmtoken ::= (NameChar)+ [8] Nmtokens ::= Nmtoken (S Nmtoken)* xml programming
66
2.1 well-Formed XML 문서 A textual object가 well-formed XML 문서이기 위해서는
문서 전체 객체가 document라는 생성 규칙과 일치해야 한다. 문서의 모든 부분들은 이 스펙에 명시되어 있는 well-formedness 제한조건을 만족해야 한다. 문서 안에서 직, 간접 참조되는 각각의 (파싱되는)Entity도 모두 well-formed이어야 한다. xml programming
67
… [1] document ::= prolog element Misc*
2. Root라고 불리는 element는 단 한 개 이어야 한다. 또 element는 서로 내포 관계가 꼬여서는 안된다. [1] document ::= prolog element Misc* xml programming
68
XML 문서의 구성요소 xml programming Prolog XML Declaration DocType
<root> BODY </root> xml programming
69
2.8 Prolog and Document Type Declaration
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? <?xml version=“1.0” ?> <!DOCTYPE greeting[ <!ELEMENT greeting (#PCDATA)> ]> <greeting> Hello, world! </greeting> XML 선언 (XML Declaration) DocType 선언 (Doc Type Declaration) XML 문서 xml programming
70
… XML선언 선언을 빼도 well-formed이다.
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' [24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ") [25] Eq ::= S? '=' S? [26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+ [27] Misc ::= Comment | PI | S <?xml version=“1.0” ?> xml programming
71
… 4.3.3 Character Encording in Entities
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' [80] EncodingDecl ::= S'encoding' Eq ('"' EncName '"' | "'" EncName "'" ) [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')* <?xml version=“1.0” encoding=‘euc-kr’?> - Unicode / ISO/IEC 10646("UTF-8", "UTF-16", "ISO UCS-2", "ISO UCS-4“) - ISO 8859("ISO ", "ISO “, "ISO “) - 한글 코딩 형식(“EUC-KR”) xml programming
72
… DocType선언(DTD = 외부DTD + 내부DTD)
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl | PEReference | S)*']' S?)? '>' <?xml version=“1.0” ?> <!DOCTYPE greeting SYSTEM “greet.dtd” [ <!ELEMENT greeting (#PCDATA)> ]> <greeting> Hello, world! </greeting> XML 문서 xml programming
73
3. Logical Structures Element
[39] element ::= STag content Etag | EmptyElemTag [40] STag ::= '<' Name (S Attribute)* S? '>' [42] ETag ::= '</' Name S? '>' content <?xml version=“1.0” ?> <greeting> Hello, world! </greeting> XML 문서 xml programming
74
… Content [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)* [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)* <?xml version=“1.0” ?> <greeting> <To> ysjung</To> </greeting> XML 문서 xml programming
75
… Empty Element <?xml version=“1.0” ?> <greeting / >
[39] element ::= STag content ETag | EmptyElemTag [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' <?xml version=“1.0” ?> <greeting / > XML 문서 xml programming
76
… Attribute <?xml version=“1.0” ?>
[41] Attribute ::= Name Eq AttValue [10] AttValue ::= '"' ([^<&"] | Reference)* '"' |? "'" ([^<&'] | Reference)* "'" <?xml version=“1.0” ?> <greeting To = “ysjung” > Hi! </greeting> xml programming
77
… 2.5 Comments <?xml version=“1.0” ?> <!- - 여기는 주석 - ->
[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->' <?xml version=“1.0” ?> <!- - 여기는 주석 - -> <greeting / > XML 문서 xml programming
78
… 2.6 Processing Instruction
보통 시스템에서 알아서 처리하는 데 사용되는 정보를 기술하기 위해 사용한다. [16] PI::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>‘ [17] PITarget::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l')) <?xml version=“1.0” ?> <?xml-stylesheet type=“text/xsl” href=“sss.xsl”?> <greeting / > XML 문서 xml programming
79
Cont. 예제 <?cursor-blinking?>
<?xml-stylesheet type=“text/xsl” href=“aa.xsl”?> <?sql string=“select * from UserTabel”?> xml programming
80
… 2.7 CDATA섹션 CDATA섹션은 마크업으로 인식되지 않아야 할 텍스트를 담는 이스케이프 블록으로 쓰인다.
[18] CDSect::= CDStart CData CDEnd [19] CDStart::= '<![CDATA[‘ [20] CData::= (Char* - (Char* ']]>' Char*)) [21] CDEnd::= ']]>' xml programming
81
… Ex) <?xml version = '1.0' encoding="euc-kr"?> <html>
<!--first example: hi~~--> <body> <![CDATA[ <body> > Hi 예제 ©</body> </html> ]]> </body> ©> XML 문서 xml programming
82
… Entity Reference 4장. Physical Structures에서 자세히 살펴보자.
[67] Reference::= EntityRef | CharRef [68] EntityRef::= '&' Name ';' [69] PEReference::= '%' Name ';' xml programming
83
Well-formed XML 문서 만들기(실습)
팩스 문서에 대한 논리구조 팩스 (요망사항 <-긴급 or 답신요망) 수신 발신 날짜 제목 내용 발신처 인사말 수신처 수신자(직위) 발신자(직위) 본문 연락처 연락처 ? ? 전화번호 전화번호 ? 팩스번호 ? 팩스번호 xml programming
84
xml programming
85
DTD문법과 물리적 구조 이 길 재 xml programming
86
Valid XML Well-formed XML 문서가 특정한 추가적인 제한 조건을 만족한다면 Vaild XML 문서가 될 수 있다. DocumentTypeDeclaration = XML 문서가 따르는 문서 형을 지정 xml programming
87
DTD (Document Type Declaration)
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl | PEReference | S)*']' S?)? '>' <?xml version=“1.0” ?> <!DOCTYPE greeting SYSTEM “greet.dtd” [ <!ELEMENT greeting (#PCDATA)> ]> <greeting> Hello, world! </greeting> XML 문서 xml programming
88
… DTD = 내부DTD + 외부DTD DTD Internal DTD Subset External DTD Subset
xml programming
89
… 내부 DTD 선언 문서 개체(Document Entity = XML문서) 내부에 문서의 정의가 선언된 것을 말한다.
<?xml version=“1.0” ?> <!DOCTYPE greeting SYSTEM “greet.dtd” [ <!ELEMENT greeting (#PCDATA)> ]> <greeting> Hello, world! </greeting> XML 문서 xml programming
90
… 마크업 선언 엘리먼트(Elements) 선언 속성(Attributes) 선언 엔티티(Entities) 선언
표기법(Notations) 선언 처리 명령(Processing Instructions) 선언 주석(Comments) 선언 [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment xml programming
91
… 외부 DTD 선언 The SystemLiteral은 엔터티의 시스템 식별자이다. 시스템 식별자는 하나의 URI이다.
XMLProcessor나 응용프로그램은 그 URI에서 Entity를 가져올 수 있다. [75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral xml programming
92
… Ex) System ID Public ID <?xml version=“1.0” ?>
<!DOCTYPE greeting SYSTEM “greet.dtd” > <greeting> Hello, world! </greeting> <?xml version=“1.0” ?> <!DOCTYPE greeting PUBLIC “-//K4M // DTD Fax. Document:: ” “인사.dtd” > <greeting> Hello, world! </greeting> System ID Public ID xml programming
93
… Element 선언 [45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>' [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children <!ELEMENT br EMPTY > <!ELEMENT container ANY > <!ELEMENT p (#PCDATA|emph)* > <!ELEMENT book (author+, title) > (Ex) xml programming
94
… ANY EMPTY Element Mixed PCDATA
‘ANY’는 키워드이며 엘리먼트의 내용으로 잘 구성된 XML 데이터라면 어떤 것도 포함할 수 있다. EMPTY ‘EMPTY’는 키워드이며 엘리먼트의 내용으로 텍스트나 자식 엘리먼트 모두 올 수 없는 경우로 속성만 허용한다. Element 엘리먼트의 내용으로 자식 엘리먼트만 포함될 수 있다. Mixed 자식 엘리먼트와 텍스트 데이터가 모두 포함될 수 있는 경우이다. PCDATA 엘리먼트의 내용으로 텍스트만 올 수 있는 경우이다. [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children xml programming
95
… ANY EMPTY Element Mixed PCDATA <!ELEMENT 내용 ANY >
<!ELEMENT 그림 EMPTY > <!ATTLIST 그림 파일 ENTITY #REQUIRED > Element <!ELEMENT 팩스 (수신, 발신, 날짜, 제목, 내용)> Mixed <!ELEMENT 본문(#PCDATA|그림)*> PCDATA <!ELEMENT 제목 (#PCDATA)> xml programming
96
… [51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
<!ELEMENT memo (#PCDATA) > <!ELEMENT memo (#PCDATA)* > (위와 동일) <!ELEMENT memo (#PCDATA | p)* > <!ELEMENT p (#PCDATA | p | p1 | p3)* > 틀림 <!ELEMENT memo ( #PCDATA , p) > <!ELEMENT memo ( p | #PCDATA ) > xml programming
97
… 발생지시자 의미 ? 발생할 수 도 안 할 수 도 있음 (0 or 1) + 한번 이상 발생 (1 or more) *
[47] children ::= (choice | seq) ('?' | '*' | '+')? 발생지시자 의미 ? 발생할 수 도 안 할 수 도 있음 (0 or 1) + 한번 이상 발생 (1 or more) * 0번이상 발생 (0 or more) 연결자 예 , A 다음에 B (A,B) | A 또는 B (A|B) xml programming
98
… Attribute 선언 <!ATTLIST elementName attrName attrType attrDefault defaultValue> ※Attribute는 Element의 메타 데이터나 프로퍼티를 기술하는데 사용될 수 있다. [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' [53] AttDef ::= S Name S AttType S DefaultDecl [60] DefaultDecl ::= '#REQUIRED' | ’#IMPLIED‘ | (('#FIXED' S)? AttValue) xml programming
99
ATTLIST 속성의 TYPE CDATA 열거값 ID IDREF, IDREFS NMTOKEN, NMTOKENS
ENTITY, ENTITIS NOTATION xml programming
100
… CDATA <!ATTLIST AnElement its_attr CDATA #REQUIRED > Ex:
<AnElement its_attr=“some text string”>…</AnElement> xml programming
101
… 열거값 <!ATTLIST personName honorific (Mr|Ms|Dr|Rev) #IMPLIED >
Ex : <personName honorific=“Mr” >…</personName> NOTE!!! 모든 열거 값들은 반드시 적합한 XML네임 토큰을 가져야 한다. xml programming
102
… ID <!ATTLIST Person perID ID #REQUIRED> Ex:
<Person perID = “kj”>…<Person> 다음은 적당치 않다… <Person perID = “1번”> … </Person> xml programming
103
… ID 타입을 사용하는 속성들은 주어진 요소 인스턴스를 위해 고유한 식별 이름을 제공한다.
ID속성값은 반드시 XML이름 규칙을 따라야 한다. 이 타입에 속하는 모든 속성들은 반드시 #IMPLIED나 #REQUIRED로 선언 되어야 한다. 각 요소에 대한 고유 식별자로 상수나 기본값을 사용하지 못하게 하기 위해서… xml programming
104
… IDREF IDREFS <!ATTLIST Book author IDREF #REQUIRED> Ex:
<Book author = “jaelee”>…</Book> IDREFS <!ATTLIST Book author IDREFS #REQUIRED> <Book author = “jaelee park_un”>…</Book> xml programming
105
… NMTOKEN, NMTOKENS CDATA속성 타입은 어떤 제한도 없이 모든 문자열이 허용된다.
NMTOKEN 타입 속성은 XML NameChar 문자만 올 수 있다. CDATA와의 차이는 NMTOKEN 속성이 공백과 몇 가지 구두점을 포함하는 것을 금지하는 것이다. CDATA나 열거값을 사용하는 것이 낳다. xml programming
106
… NOTATION <!NOTATION GIF SYSTEM “ACDSEE.exe”>
<!NOTATION JPG SYSTEM “JPG_Viewer.exe”> <!ATTLIST img type NOTATION (GIF|JPG) #IMPLIED> xml programming
107
… ENTITY, ENTITIS photo ENTITY #IMPLIED>
<!ATTLIST Person photo ENTITY #IMPLIED> <!NOTATION GIF SYSTEM “ACDSEE.exe”> <!ENTITY 얼굴 SYSTEM “face.gif” NDATA GIF> <!ENTITY 풍경 SYSTEM NDATA GIF> Ex: <Person photo=“얼굴”>…<Person> NOTE 파싱되지 않는 외부 엔티티에 대한 레퍼런스를 허용한다. xml programming
108
… 속성의 기본값 #REQUIRED #IMPLIED #FIXED default_Value default_Value
속성은 반드시 모든 Element 안에 있어야 한다. #IMPLIED 속성은 선택적이다.(있거나 말거나) #FIXED default_Value 속성이 있는 경우에는 반드시 이 값과 일치해야 한다. 일치하지 않으면 Valid error를 발생, 만약 속성이 없다면 기본값을 속성값으로 여김. default_Value 속성은 도큐먼트안에 있을 수도 있고 없을 수도 있다. 만약 속성이 없다면 attribute에 기본값이 있다고 가정한다. xml programming
109
… #REQUIRED Default value가 필요.. xml programming
110
… #IMPLIED <!ATTLIST AnElement lts_attr CDATA #IMPLIED> Ex:
<AnElement lts_attr=“some text”>…</AnElement> <AnElement >…</AnElement> xml programming
111
… #FIXED default_Value
<!ATTLIST DOCUMEDNT version CDATA #FIXED “1.0”> Ex: <DOCUMENT version=“1.0”>…</DOCUMENT> <DOCUMENT>…</DOCUMENT> NOTE 이 경우 모든 Element는 동일한 값을 고정적으로 가지게 된다. 이렇게 값을 고정시킬 필요가 있다면 응용프로램에서 코드를 관리하는 것이 낳지 않을까? xml programming
112
… default_Value <!ATTLIST DOCUMENT version CDATA “1.0”> Ex:
<DOCUMENT version = “1.0”>…</DOCUMENT> <DOCUMENT>…</DOCUMENT> // 이건 위와 같다… <DOCUMENT version = “7.7”>…</DOCUMENT> // 맨 아랫줄도 유효하다. NOTE <!ATTLIST DOCUMENT version “1.0” #IMPLIED> 이렇게 선언하면 element중에서 attribute가 없는 경우도 유효하다. xml programming
113
… attrType CDATA : 텍스트 Choice list : 부여할 수 있는 속성값을 미리 나열
ID : 문서 인스턴스 내에서 유일한 식별자 값을 부여함 IDREF, IDREFS NMTOKEN, NMTOKENS ENTITY, ENTITIES NOTATION xml programming
114
… Ex) (Ex) <!ELEMENT 발신자 (#PCDATA) > <!ATTLIST 발신자
직위 CDATA #IMPLIED> <발신자 직위=“대리”>홍길동</발신자> <발신자>성춘향</발신자> (Ex) xml programming
115
… Ex) (Ex) <!ELEMENT 팩스 (수신, 발신) > <!ATTLIST 팩스
요망사항 (긴급|검토요망) #REQUIRED> <팩스 요망사항=“긴급”> … </팩스> (Ex) xml programming
116
4. Physical Structures 물리적 구조 하나의 XML문서는 하나 이상의 저장 단위로 구성될 수 있다.
저장 단위가 Entity이다. 하나의 XML문서에는 하나의 문서개체(Document entity)가 존재한다. 문서개체는 XML 처리기에서 문서의 시작을 알리며 문서 전체를 담는 컨테이너 역할을 한다. xml programming
117
… Entity의 종류 일반 엔티티와 파라미터 엔티티 내부 엔티티와 외부 엔티티 Parsed 엔티티와 unparsed 엔티티
& 와 % 내부 엔티티와 외부 엔티티 Parsed 엔티티와 unparsed 엔티티 xml programming
118
… Entity Declaration [70] EntityDecl ::= GEDecl | PEDecl
[71] GEDecl::= '<!ENTITY' S Name S EntityDef S? '>‘ [72] PEDecl::= '<!ENTITY' S '%' S Name S PEDef S? '>‘ [73] EntityDef::= EntityValue | (ExternalID NDataDecl?) [74] PEDef::= EntityValue | ExternalID xml programming
119
… Entity Reference [67] Reference::= EntityRef | CharRef
[68] EntityRef::= '&' Name ';' [69] PEReference::= '%' Name ';' xml programming
120
… Ex) (Ex) <!DOCTYE TEXT [ <!ELEMENT text (#PCDATA)>
<!ENTITY sgml “Standard Generalized Markup Language”> ]> <TEXT>SGML is the acronym of “&sgml;” </TEXT> (Ex) xml programming
121
… Ex) seoul Addr.txt (Ex)
<?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE Man [ <!ELEMENT Man (name, addr)> <!ELEMENT name (#PCDATA)> <!ELEMENT addr (#PCDATA)> <!ENTITY addr SYSTEM "addr.txt"> ]> <Man> <name>young</name> <addr>&addr;</addr> </Man> (Ex) xml programming
122
… Notation과 unparsedEntity (Ex)
<?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE Man [ <!NOTATION GIF SYSTEM “ACDSEE.exe” > <!ENTITY 그림 SYSTEM “pic.gif” NDATA GIF> ]> <Man> <figure file = “그림”/> </Man> (Ex) xml programming
123
5. Conformance(적합) Processor에 대한 행동 양식을 기술한다.
Validating and Non-Validating Processors 두 경우 모두 document Entity (XML본문)와 그 외 읽어 들인 Parsed Entity에서 well-formed 한가를 검사한다. Validating Processor는 DTD의 조건을 위반하는 XML문서의 경우 그 사실을 보고한다. 그러기 위해서는 전체 DTD와 모든 external parsed entities 를 읽고 처리해야 한다. Non-Validating Processor는 단지 내부 DTD SubSet을 포함한 document Entity가 Valid한가 만을 검사한다. Processor가 읽어 들인 내부 DTD Subset과 Parameter Entity의 선언을 처리해야 한다. Processor가 읽지 않은 Parameter Entity의 참조를 만나기 전까지의 얘기이다. 만약 그 후에 만난다면 Entity선언이나 Attr List 선언등을 처리하지 않는다. xml programming
124
… Using XML Processors Non-Validating Processor의 경우는
외부 Entity를 읽어야 알 수 있는 well-formedness를 감지하지 못할 수 있다. Processor가 응용프로그램에게 정보를 넘겨줄 때, 그 정보는parameter Entity와 외부 Entity를 읽었는지 여부에 따라 매우 달라진다. Non-Validating Processor처럼 외부 Entity와 Parameter Entity를 읽지 않은 경우에는 내부 Entity에 치환되어야 하는 부분등이나 하는 작업을 처리하지 않으므로, 정보가 달라 질 것이다. xml programming
125
꼭 알고 넘어가자!!! XML문서는 반드시 한 개 이상의 엘리먼트로 구성된다. 잘못 구성 This is an XML Doc
바른 구성 <text>This is an XML Doc</text> xml programming
126
… 반드시 한 개의 루트 엘리먼트가 존재한다. 잘못된 구성 바른 구성 <item>Item 1</item>
<list> </list> xml programming
127
… 모든 엘리먼트는 시작태그와 마감태그로 둘러싸여야 한다. 단, EMPTY엘리먼트는 예외이다. 또한 태그 이름은 대소문자를 구분한다. 잘못된 구성 <list> <item>Item 1</ITEM> <item>Item 2</item> </list> 바른 구성 <ITEM>Item 1</ITEM> xml programming
128
… 모든 엘리먼트는 시작태그와 마감태그가 서로 겹쳐지는(nested)것을 허용하지 않는다. 잘못된 구성 <text>
<bold> <italic> XML </bold> </italic> </text> xml programming
129
… Empty 엘리먼트는 내용이 없는 엘리먼트로서, 예를 들어 다음의 표현은 서로 동일하다.
<AAA></AAA> <AAA/> xml programming
130
… 엘리먼트는 하나 이상의 어트리뷰트를 가질 수도 있고 갖지 않을 수도 있다. 어트리뷰트의 이름과 값은 ‘=‘로 구분되며,
어트리뷰트의 값은 어포스트로피 또는 큰따움표로 묶여야 한다. 단 따움표의 쌍은 일치해야 한다. 어트리뷰트 이름으로 올 수 있는 문자열의 제한사항은 Element와 같다. xml programming
131
… 바른 이름 <Xsl:cp-of> <A_long> <a.name.se>
<a1234-df> <_12> xml programming
132
… 주석은 마크업 및 선언부 등 어느 곳이나 올 수 있다. 단 예외로 XML선언부 이전에는 올 수 없으며 주석내부에 -- 가 올 수 없다. 잘못된 경우 <!-- this is wnong --> <?xml version=“1.0”?> … xml programming
Similar presentations