Elements and attributes 조윤상 ( 과편협기획운영위원 ) 1
Table of Contents 1. Elements( 요소 )? 2. Attributes( 속성 ), PCDATA, CDATA? 3. Elements 선언방법 4. Attributes 속성 2 15 th KCSE Editor s Workshop, Seoul 2015
Elements 구성요소 Elements? XML 문서나 HTML 문서모두에있어핵심구성요소 DTD 구성요소 Elements - 요소 Attributes - 속성 Entities -개체 PCDATA CDATA 3 15 th KCSE Editor s Workshop, Seoul 2015 3
Elements( 요소 )? Elements 는 XML 문서나 HTML 문서모두에있어핵심구성요소이다. - Elements 를쉽게이해하려면 HTML 문서의요소를살펴보면된다. - HTML 문서에서 "body", "table" 태그가요소의한예이다. HTML example <body>some text</body> - XML 문서에서 article", title" 등도요소이다. 요소는 text 또는또다른요소를포함할수있다. XML example <article> <title>preanalytical Phase - an updated review of the current evidence</title> </article> Tags 는 Elements 를구성하기위해사용된다. - <element name>elements 의시작 tag 와닫힘 tag</element name> Tags example <title>preanalytical Phase - an updated review of the current evidence</title> 4 15 th KCSE Editor s Workshop, Seoul 2015 4
Attributes( 속성 ), PCDATA, CDDATA? Attributes 는 element 에대한부가적인정보를제공 Attributes 는 element 의시작태그안에위치한다. Attributes 는 name/value 쌍으로나타난다. HTML example <ArticleId IdType="doi">10.4143/crt.2014.299</ArticleId> Element: ArticleId Name: IdType Value: 10.4143/crt.2014.29 PCDATA- Parsed character data 를의미 character data 는 XML element 의시작태그와마침태그사이에위치한텍스트 PCDATA 는 Parser( 해석기 ) 에의해해석이될텍스트이다. 즉, <, > 같은태그를 XML 파서가해석함 CDATA - character data 를의미 CDATA 는 Parser( 해석기 ) 에의해해석이되지않을텍스트이다. XML 문서에있는모든텍스트들은 XML 파서에의해해석과정을거치게되지만 CDATA 만큼은해석되지않고있는모습그대로출력된다. 즉, <, > 같은문자와엔터티자체가그대로출력됨 5 15 th KCSE Editor s Workshop, Seoul 2015 5
Elements 선언방법 선언방법 비고 A sequence of elements (Element1, Element2,...) element 들이순서대로 A choice of element (Element1 Element2,...) element 중하나만선택 Any value ANY 어떤유형의데이터가능함 No value EMPTY 요소나 text 를포함하지않음 Plain Text (#PCDATA) text 만포함 Mixed Content MIXED text 와요소결합된형태 Element 는 XML 문서의기본이되는논리적단위로 XML 문서의모든내용물은반드시 Element 안에포함되어야한다. 6 15 th KCSE Editor s Workshop, Seoul 2015 6
Elements 선언방법 1/5 1. Elements 선언하는방법 DTD 에서 Elements 를선언하는방법 <!ELEMENT element-name (element-content)> 2. Empty elements 선언하는방법 Empty elements 를선언하려면아래과같이키워드 EMPTY 를괄호로표기 <!ELEMENT element-name (EMPTY)> Ex) <!ELEMENT title (EMPTY)> 3. 데이터를가지는요소선언하는방법 데이터를가지는요소를선언하려면아래와같이데이터타입을괄호로감싸주면된다 <!ELEMENT element-name (#CDATA)> OR <!ELEMENT element-name (#PCDATA)> OR <!ELEMENT element-name (ANY)> Ex) <!ELEMENT article (#PCDATA)> #CDATA 는 elements 가포함할데이터가 parser 에의해해석이될필요가없는문자열데이터임을의미 #PCDATA 는 elements 가포함할데이터가 parser 에의해해석이될필요가있는문자열데이터임을의미키워드 ANY 는어떠한데이터도가능한요소를선언할때사용한다 7 7 15 th KCSE Editor s Workshop, Seoul 2015
Elements 선언방법 2/5 4. children( 자식 ) 이있는 elements 선언하는방법 하나또는그이상의 children 이있는 elements 는괄호안에자식 element 의이름을적어줌 <!ELEMENT element-name (child-element-name)> 또는 <!ELEMENT element-name (child-element-name,child-element-name,.)> Ex) <!ELEMENT article (title,corresp,pub_year,volume,issue,fpage)> 최상의 element 를선언후, 각각의 children elements 도선언을해줘야한다. 이때최상위요소에서자식요소들을적어준순서대로자식요소들을선언해야한다. * 물론각각의자식요소들은또다시자식요소들을가질수있다. 최상의 element 를선언후, 각각의 children elements 도선언 Ex) <!ELEMENT article (title,corresp,pub_year,volume,issue,fpage)> <!ELEMENT title (#PCDATA)> <!ELEMENT corresp (#PCDATA)> <!ELEMENT pub_year (#PCDATA)> <!ELEMENT volume (#PCDATA)> <!ELEMENT issue (#PCDATA)> <!ELEMENT fpage (#PCDATA)> 8 15 th KCSE Editor s Workshop, Seoul 2015 8
Elements 선언방법 3/5 5. DOCTYPE 으로 DTD 내용감싸는방법 DTD 가 XML 문서내부에포함될경우아래와같이 DOCTYPE 정의로감싸줘야한다 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE article [ <!ELEMENT article (title,corresp,pub_year,volume,issue,fpage)> <!ELEMENT title (#PCDATA)> <!ELEMENT corresp (#PCDATA)> <!ELEMENT pub_year (#PCDATA)> <!ELEMENT volume (#PCDATA)> <!ELEMENT issue (#PCDATA)> <!ELEMENT fpage (#PCDATA)> ]> <article> </article> <title>preanalytical Phase - an updated review of the current evidence</title> <corresp>ana-maria Simundic</corresp> <pub_year>2014</pub_year> <volume>24</volume> <issue>1</issue> <fpage>6</fpage> 9 15 th KCSE Editor s Workshop, Seoul 2015 9
Elements 선언방법 4/5 6. 한번만나타날 elements 선언하는방법 Children element {title} 이 {article} element 내에서한번만나타날것임을선언 <!ELEMENT element-name (child-name)> Ex) <!ELEMENT article (title)> 7. 최소한한번이상나타날요소선언하는방법 (+) children element {title} 이 {article} element 내에서최소한한번이상나타날것임을선언 <!ELEMENT element-name (child-name+)> Ex) <!ELEMENT article (title+)> 8. 나타나지않거나여러번나타날요소선언하는방법 (?) children element {title} 이이 {article} element 내에서전혀나타나지않거나, 나타난다면여러번나타날것임을선언 <!ELEMENT element-name (child-name*)> ex) <!ELEMENT article (title*)> 10 15 th KCSE Editor s Workshop, Seoul 2015 10
Elements 선언방법 5/5 9. 나타나지않거나한번만나타날요소선언하는방법 (?) children element {title} 이 {article} element 내에서전혀나타나지않거나, 나타난다면오직한번만나타날것임을선언 <!ELEMENT element-name (child-name?)> ex) <!ELEMENT article (title?)> 10. Elements 중하나만선택하여나타날요소선언하는방법 ( ) children element {pub_year} or {volume} 중하나만선택하여나타낸다 <!ELEMENT element-name (child-name child-name)> ex) <!ELEMENT article (pub_year volume)> 11. 나타나지않거나한번만나타날요소선언하는방법 Artile element 가최소한한번이상나타날 children element {title} 한번만나타날 children element {corresp},{pub_year},{volume},i{ssue} 나타나지않거나나타난다면여러번나타날 children element {fpage} 및 #PCDATA 를포함할것임을선언 <!ELEMENT article (title+, corresp,pub_year,volume,issue,fpage*,#pcdata)> 11 15 th KCSE Editor s Workshop, Seoul 2015 11
Attributes 선언방법 DTD 에서 XML elements 에대한 attributes 는 ATTLIST 로선언한다. ATTLIST 선언은속성을가질수있는요소이름, 속성이름, 속성타입, 디폴트속성값을정의 <!ATTLIST element-name attribute-name attribute-type default-value> attribute-type Value CDATA (en1 en2..) ID IDREF IDREFS NMTOKEN NMTOKENS ENTITY ENTITIES NOTATION Description 문자형데이터열거형값 (enumerated value) Unique한 ID값다른 element의 ID 다른 IDs 의리스트유효한 XML name 유효한 XML names의리스트 Entity값 Entities 리스트 Notation에서선언한값 xml: 미리정의된값 12 15 th KCSE Editor s Workshop, Seoul 2015 12
attribute-value 및선언방법 1/3 attribute-value Value value #REQUIRED #IMPLIED #FIXED value Explanation The default value of the attribute 반드시값을가져야함옵션. 값이발견되지않으면무시고정된값 1. Default 속성 DTD 에서 default 속성값을정의하면 XML 문서에서속성값이빠져있을경우디폴트값을가질수있다 Syntax: <!ATTLIST element-name attribute-name CDATA "default-value"> DTD) <!ATTLIST payment type CDATA "check"> XML) <payment type="check"> 13 15 th KCSE Editor s Workshop, Seoul 2015 13
attribute 속성 2/3 2. Implied 속성 속성값을가져도되고안가져도될경우, 또한디폴트값은필요없을경우 implied 속성을사용 Syntax: <!ATTLIST element-name attribute-name attribute-type #IMPLIED> DTD) <!ATTLIST contact fax CDATA #IMPLIED> XML) <contact fax="02-555-667788"> 3. Required 속성 디폴트값은알수없지만반드시속성값을적어줘야할경우 - 필수로입력받아야할경우 Syntax: <!ATTLIST element-name attribute_name attribute-type #REQUIRED> DTD) <!ATTLIST person number CDATA #REQUIRED> XML) <person number="5677"> 14 15 th KCSE Editor s Workshop, Seoul 2015 14
attribute 속성 3/3 4. Fixed 속성 속성값이고정되어그값을변경하지못하게할경우 fixed 속성을사용 Syntax: <!ATTLIST element-name attribute-name attribute-type #FIXED "value"> DTD) <!ATTLIST sender company CDATA #FIXED KCSE"> XML) <sender company= KCSE > 5. Enumerated attribute 속성 사용할수있는값을몇가지로열거하여그값들안에있는것만사용하게하고싶을경우사용 Syntax: <!ATTLIST element-name attribute-name (eval eval..) default-value> DTD) <!ATTLIST payment type (check cash) "cash"> XML) <payment type="check"> OR <payment type="cash">> 15 15 th KCSE Editor s Workshop, Seoul 2015 15
Thank you. younsang@m2comm.co.kr Reference 1. XML Tutorial. W3school website [cited by 2015.2.23]. Available from: http://www.w3schools.com/dtd/ 16 15 th KCSE Editor s Workshop, Seoul 2015