XML 의이해 김현한국학중앙연구원인문정보학교실 hyeon@aks.ac.kr 이저작물 (PPT) 의인용표시방법 : 김현, XML 의이해, 전자문서와하이퍼텍스트 수업자료 (2018)
1. XML 발전의역사 2. XML 의특징 3. Namespace 의활용
1. XML 발전의역사 ARTANET XML이란? XML 이란? XML: extensible Markup Language 전자문서기술언어의세계적인표준 (W3C-recommended general-purpose markup language.) W3C Recommendation: XML 문서의구조와 XML 프로세서의요건을정의 General-Purpose 특정분야, 특정목적의전자문서생산에적용할수있는보편적표준을제공 Interoperable 시스템의상이함에구애되지않는데이터공유 Open, Free Standard 누구나사용할수있는개방된표준
1. XML 발전의역사 ARTANET XML 탄생배경 XML 탄생배경 1945 MEMEX 1965 하이퍼텍스트 1969 GML 인터넷탄생 ARPANET 1980 SGML 1986 하이퍼텍스트상용화 SGML 국제표준화 인터넷확산 NSFNET 1991 WWW & HTML 1998 XML
1. XML 발전의역사 ARTANET SGML SGML (Standard Generalized Markup Language) 문서에담긴정보요소와그요소들간의관계를컴퓨터가이해할수있도록만든마크업언어 1969년미국의 IBM 사의찰스골드파브 (Charles Goldfarb) 와그동료들에의해 GML(Generalized Markup Language) 이라는이름으로처음개발 그후지속적으로발전하여 1986년국제표준기구에의해구조적데이터표현의표준안 (ISO 8876) 으로인증 Fathers of GML Charles Goldfarb Ed Mosher Ray Lorie
1. XML 발전의역사 ARTANET HTML HTML (Hypertext Markup Language) HTML도기본적으로는 SGML을기반으로만들어진것. 그러나 HTML은문서를 내용, 구조, 모양 으로구분하여그각각의독립성과유연성을추구한 SGML의기본사상에충실하지않았다. 대신누구나쉽게 하이퍼텍스트 문서를만들수있도록하였고, 그것에의해월드와이드웹이탄생. SGML을차용하되, SGML에얽매이지않는것이 HTML의성공요인
1. XML 발전의역사 ARTANET XML XML (extensible Markup Language) HTML이약화시켰던 SGML의중요한목적을다시회복 HTML이표현하지못했던문서의구조와내용요소의성격을명확하게표현 XML 문서의대표적특성 : 문서를 문서의구조, 문서의내용, 문서의모양 3 가지로분리한다는것. 문서의내용과모양을구분함으로써, 내용을그대로두고모양만을바꾼다거나, 모양에손대지않은채내용을확장하고수정할수있는유연성보장 XML은인터넷과하이퍼텍스트가결합한곳에서텍스트의구조와정보요소까지드러내고자하는취지에서개발된것.
1. XML 발전의역사 2. XML 의특징 3. Namespace 의활용
1. 2. XML의특징 ARTANET HTML HTML: 구조, 내용, 모양의통합 HTML: 문서의내용과모양을한꺼번에취급 <html> <head> <title> 편지 </title> </head> <body> <p style="color:red text-align:left"> 영이에게 </p> <p style="color:green text-align:center"> 생일축하해 </p> <p style="color:blue text-align:right"> 철수 </p> </body> </html>
1. 2. XML의특징 XSD: 문서의구조 <?xml version="1.0" encoding="utf-8"?> <xs:schema targetnamespace="letter.xsd" xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name=" 편지 > <xs:complextype> <xs:sequence> <xs:element ref=" 수신 /> <xs:element ref=" 본문 /> <xs:element ref=" 발신 /> </xs:sequence> </xs:complextype> </xs:element> <xs:element name=" 수신 type="xs:string"/> <xs:element name=" 본문 type="xs:string"/> <xs:element name=" 발신 type="xs:string"/> </xs:schema> XML: 문서의내용 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="letter.xsl"?> < 편지 xmlns="letter.xsd"> < 수신 > 영이에게 </ 수신 > < 본문 > 생일축하해 </ 본문 > < 발신 > 철수 </ 발신 > </ 편지 > ARTANET XML + XSD + XSL XML: 구조, 내용, 모양의분리 XSL: 문서의모양 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl= http://www.w3.org/1999/xsl/transfor m xmlns:ltt="letter.xsd"> <xsl:template match="/"> <html> <head> <title> 편지 </title> </head> <body> <xsl:apply-templates/> </body> </html> <xsl:template match="ltt: 편지 "> <xsl:apply-templates/> <xsl:template match="ltt: 수신 "> <p style="color:red; text-align:left"> <xsl:value-of select="."/></p> <xsl:template match="ltt: 본문 "> <p style="color:green; text-align:center"> <xsl:value-of select="."/></p> <xsl:template match="ltt: 발신 "> <p style="color:blue; text-align:right"> <xsl:value-of select="."/></p> </xsl:stylesheet>
1. 2. XML의특징 ARTANET XML의구성요소 XML 의구성요소 < 인명유형 = 성씨 > 한산이씨 ( 韓山李氏 )</ 인명 > ELEMENT( 요소 ) 시작태그 요소값 종료태그 ATTRIBUTE( 속성 ) 속성값
1. 2. XML의특징 ARTANET XML 문서구조 XML 문서구조 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href=" 수내동가옥.xsl"?> < 항목 ID="10001332"> < 항목명 > </ 항목명 > < 메타데이터 > </ 메타데이터 > < 본문 > 수내동가옥 < 분야 > 생활 민속 </ 분야 > < 유형 > 건물 </ 유형 > < 지명 > 분당 </ 지명 > 신도시개발전이곳에세거하였던 < 인명유형 =" 성씨 "> 한산이씨 ( 韓山李氏 )</ 인명 > 의살림집중한채로 < 인명 > 이택구 </ 인명 > 씨가거주하였던집이다. </ 항목 > </ 본문 > 최상위요소 문중요소 구조요소
1. 2. XML의특징 ARTANET XML 문서의구조정의 : XSD XSD (XML Schema Definition) 예시 <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name=" 항목 > <xs:complextype> <xs:sequence> <xs:element ref=" 항목명 /> <xs:element ref=" 메타데이터 /> <xs:element ref=" 본문 /> </xs:sequence> <xs:attributegroup ref="attlist. 항목 /> </xs:complextype> </xs:element> <xs:attributegroup name="attlist. 항목 > <xs:attribute name="id" use="required"/> </xs:attributegroup> <xs:element name=" 항목명 type="xs:string"/> <xs:element name=" 메타데이터 > <xs:complextype> <xs:sequence> <xs:element ref=" 분야 /> <xs:element ref=" 유형 /> </xs:sequence> </xs:complextype> </xs:element> 요소선언 속성선언 <xs:element name=" 분야 type="xs:string"/> <xs:element name=" 유형 type="xs:string"/> <xs:element name=" 본문 > <xs:complextype mixed="true"> <xs:choice minoccurs="0" maxoccurs="unbounded"> <xs:element ref=" 인명 /> <xs:element ref=" 지명 /> </xs:choice> </xs:complextype> </xs:element> <xs:element name=" 인명 " type="xs:string"/> <xs:attributegroup name="attlist. 인명 "> <xs:attribute name=" 유형 "/> </xs:attributegroup> <xs:element name=" 지명 " type="xs:string"/> <xs:attributegroup name="attlist. 지명 "> <xs:attribute name=" 유형 "/> </xs:attributegroup> </xs:schema> 요소선언 속성선언
1. 2. XML의특징 ARTANET XML 문서의구조정의 : DTD DTD (Document Type Definition) 예시 <?xml version="1.0" encoding="utf-8"?> <!ENTITY % 고유명사 " 인명 지명 "> <!ELEMENT 항목 ( 항목명, 메타데이터, 본문 )> <!ATTLIST 항목 ID CDATA #REQUIRED> <!ELEMENT 항목명 (#PCDATA)> <!ELEMENT 메타데이터 ( 분야, 유형 )> <!ELEMENT 분야 (#PCDATA)> <!ELEMENT 유형 (#PCDATA)> <!ELEMENT 본문 (#PCDATA % 고유명사 ;)*> <!ELEMENT 인명 (#PCDATA)> <!ATTLIST 인명유형 CDATA #IMPLIED> <!ELEMENT 지명 (#PCDATA)> <!ATTLIST 지명유형 CDATA #IMPLIED> 개체 (ENTITIY) 정의 요소선언 속성선언
1. 2. XML의특징 ARTANET XML 문서의표현 : XSL XSL (Extensible Stylesheet Language) 예시 (1) <?xml version="1.0" encoding="utf-8"?> <!-- XSL for 항목 _Display 1.0 written by Hyeon Kim 2014. 5. 8. --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:html="http://www.w3.org/1999/xhtml"> XSL 문서최상위요소 <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>site Scene</title> <style> body {font-family: 함초롬바탕 } img {border:0} a {text-decoration:none} </style> </head> <body> <xsl:apply-templates/> </body> </html> Namespace for XSL Elements Namespace for HTML Elements XPATH
1. 2. XML의특징 ARTANET XML 문서의표현 : XSL XSL (Extensible Stylesheet Language) 예시 (2) <xsl:template match=" 항목 "> <xsl:apply-templates /> <xsl:template match=" 항목명 "> <html:font style="color:red;font-weight:bold;font-size:18pt"> <xsl:value-of select="."/> </html:font> <html:br><br/></html:br><html:br><br/></html:br> <xsl:template match=" 메타데이터 "> <xsl:apply-templates/> <html:br><br/></html:br> <xsl:template match=" 분야 "> <html:font style="color:grey;font-weight:bold"> o 분야 : </html:font> <xsl:value-of select="."/> <html:br><br/></html:br> <xsl:template match=" 본문 "> <xsl:apply-templates/> <html:br><br/></html:br> <xsl:template match=" 지명 "> <html:font style="color:blue;font-weight:bold"> <xsl:value-of select="."/> </html:font> <xsl:template match=" 인명 "> <html:font style="color:green;font-weight:bold"> <xsl:value-of select="."/> </html:font> <xsl:template match="text()"> <xsl:value-of select="."/> </xsl:stylesheet> <xsl:template match=" 유형 "> <html:font style="color:grey;font-weight:bold"> o 유형 : </html:font> <xsl:value-of select="."/> <html:br><br/></html:br>
1. 2. XML의특징 ARTANET XML 관련기술 XML 관련기술 XSLT(Extensible Stylesheet Language Transformation): XML 문서의내용을컴퓨터상에서시각적으로표현하기위한기술. XML 구조를 HTML이나다른언어의구조로변환하는기능을지원. XPath(XML Path Language): XML 문서내의특정부분을찾아가기위해사용되는경로표기언어. DOM(Document Object Model): XML 문서를컴퓨터가구조적인정보로취급할수있게하는기술. XML RDF (Resource Description Framework): RDF는월드와이드웹의자원을컴퓨터가인식할수있도록하는기술적체계. XML RDF는이것을 XML 문서형태로기술하는방법을제공
1. XML 발전의역사 2. XML 의특징 3. Namespace 의활용
1. 3. Namespaces의활용 Namespace 의정의 Namespace 의정의 Namespace 란? XML 문서내에서일련의요소와속성이름을명확하게인식할수있게하는식별자 하나의그룹을이루는요소또는속성이름의집합 A unique identifier used to group a set of XML names (elements or attributes). Namespaces provide a way to qualify element and attribute names so that names in schemas do not conflict. Namespace 의필요성 XML 문서상에서는성격이다른 2 개이상의요소가동일한이름을갖는경우도발생할수있음. 각각의요소가각기다른영역에속하는것임을표시해주는장치 가필요하다. 19
1. 3. Namespace의활용 Namespace 가필요한경우 Namespace 가필요한경우 요소이름의중복또는내용및구조의불일치 < 고문헌해제 > < 해제번호 = 101"> < 제목 > 유서 ( 諭書 )</ 제목 > < 서지사항 > < 작성연도 >...</ 작성연도 > < 크기 >...</ 크기 > </ 서지사항 > < 내용 > < 정의 > 肅宗이林泳에게臘劑와柴炭을하사하면서내린諭書. </ 정의 > < 주제 > 본문서는御札諭書帖에있는諭書중한가지인데,...</ 주제 > < 인물 > 林泳 (1649-1696) 은본관이羅州,...</ 인물 > </ 내용 > < 참고문헌 > 大典會通. 古文書集成 32 - 慶州慶州孫氏篇 -, 韓國精神文化硏究院, 2002.</ 참고문헌 > < 이미지 > 유서.bmp</ 이미지 > </ 해제 > < 해제번호 = 201"> < 제목 > 신식유서필지 ( 新式儒胥必知 )</ 제목 > < 저자 > 황필수 ( 黃泌秀 )</ 저자 > < 간행연대 > 광무 5 년 (1901)</ 간행연대 > < 권수 >1 권 1 책 43 장 </ 권수 > < 크기 >..</ 크기 > < 내용 > 종래의 유서필지 를저본으로하여갑오개혁이후의변화한사항등을개정하여새롭게간행 </ 고도서 : 내용 > < 이미지 > 신식유서필지.jpg</ 이미지 > </ 해제 > </ 고문헌해제 > 20
1. 3. Namespace의활용 Namespace 의선언 Namespace 의선언 기본 Namespace 의선언 <element_name xmlns= URI_Reference > 접두사를사용한 Namespace 의선언 <prefix:element_name xmlns:prefix= URI_Reference > 21
1. 3. Namespace의활용 Namespace 의활용예시 Namespace 의활용예시 < 고문헌해제 xmlns: 고문서 = http://digerati.aks.ac.kr/terms/ 문헌 / 고문서해제 xmlns: 고도서 = http://digerati.aks.ac.kr/terms/ 문헌 / 고서해제 > < 고문서 : 해제번호 = 101 > < 고문서 : 제목 > 유서 ( 諭書 )</ 고문서 : 제목 > < 고문서 : 서지사항 > < 고문서 : 작성연도 >...</ 고문서 : 작성연도 > < 고문서 : 크기 >...</ 고문서 : 크기 > </ 고뮨서 : 서지사항 > < 고문서 : 내용 > < 고문서 : 정의 > 肅宗이林泳에게臘劑와柴炭을하사하면서내린諭書. </ 고문서 ; 정의 > < 고문서 : 주제 > 본문서는御札諭書帖에있는諭書중한가지인데,...</ 고문서 : 주제 > < 고문서 : 인물 > 林泳 (1649-1696) 은본관이羅州,...</ 고문서 : 인물 > </ 고문서 : 내용 > < 고문서 : 참고문헌 > 大典會通. 古文書集成 32 - 慶州慶州孫氏篇 -, 韓國精神文化硏究院, 2002.</ 고문서 : 참고문헌 > < 고문서 : 이미지 > 유서.bmp</ 고문서 : 이미지 > </ 고문서 : 해제 > < 고도서 : 해제번호 = 201 > < 고도서 : 제목 > 신식유서필지 ( 新式儒胥必知 )</ 고도서 : 제목 > < 고도서 : 저자 > 황필수 ( 黃泌秀 )</ 고도서 : 저자 > < 고도서 : 간행연대 > 광무 5 년 (1901)</ 고도서 : 간행연대 > < 고도서 : 권수 >1 권 1 책 43 장 </ 고도서 : 권수 > < 고도서 : 크기 >..</ 고도서 : 크기 > < 고도서 : 내용 > 종래의 유서필지 를저본으로하여갑오개혁이후의변화한사항등을개정하여새롭게간행 </ 고도서 : 내용 > < 고도서 : 이미지 > 신식유서필지.jpg</ 고도서 : 이미지 > </ 고도서 : 해제 > </ 고문헌해제 >