반응형

XML 기본문법

Tech: /XML·XSL 2008. 6. 26. 10:31

XML Note #2 XML 기본 문법


1. DTD 선언

1) XML 문서에 포함된 DTD

- 예제:

<!DOCTYPE MAIL [

<!ELEMENT HEADER (...)>

<!ELEMENT RECEIVED (...)>

<!ELEMENT SENDED (...)>

<!ELEMENT TITLE (...)>

<!ELEMENT BODY (...)>

]>


2) 외부 독립 파일로 분리된 DTD

- 예제:

<!DOCTYPE MAIL SYSTEM "mail.dtd">


2. ELEMENT (요소 유형) 선언

elementdecl ::=  '<!ELEMENT' S Name S contentspec S? '>'

contentspec ::=  'EMPTY' | 'ANY' | Mixed | children


- 예제:

<!ELEMENT BR EMPTY>


<!ELEMENT tutorial (#PCDATA)>


<!ELEMENT XXX (AAA, BBB)> 

<!ELEMENT AAA (#PCDATA)> 

<!ELEMENT BBB (#PCDATA)>


-------------------------------------------------------------------------------------------------------

기호...기호 타입...설명.......................예제.......예제 설명 

-------------------------------------------------------------------------------------------------------

|......세로 막대...or 조건....................A|B........A와 B중 하나만 반드시 나타남 

,......쉼표........명시된 순서대로............A,B........A가 나타난 다음에 뒤에 B가 나타남 

?......물음표......한번 나타날 수 있음........A?.........A가 나타나지 않거나 나타날 수 있음 

.......기호 없음...반드시 한번 나타남.........A..........A가 반드시 나타남 

*......별표........여러 번 나타날 수도 있음...A*.........A가 없을 수도 있고 여러번 나타날 수도 있음 

+......덧셈........최소 1번 이상 나타남.......A+.........A가 반드시 있어야 하고 여러번 나타날 수 있음 

( )....괄호........그룹 요소..................(A|B), C...A나 B 중 하나가 반드시 나타나야하고 그 뒤에 C가                                                          나온다 

--------------------------------------------------------------------------------------------------------

- 주의사항:

(1) ELEMENT의 name과 데이터 유형 사이에는 반드시 공백이 있어야 한다. (예: <!ELEMENT AAA (#PCDATA)> )

(2) 데이터 유형 뒤에 붙을 수 있는 ?, *, + 기호는 반드시 붙여서 써야 한다. (예: <!ELEMENT XXX (AAA+)> )

- 참조1:

<![CDATA[ '텍스트 문자열' ]]> : 파싱하지 않고 그대로 표시한다. (< 및 > 그리고 & 문자도 그대로 표시한다.)

#PCDATA : 파싱하여 표시한다. (< 및 > 그리고 & 문자들은 표시할 수 없다.)

- 참조2:

PCDATA에서 &#[code];를 표시하려면 & => &, # => #, [ => [ 이므로 &#[code[ 로 써야 함.


3. ATTLIST(속성 유형) 선언

AttType ::=  StringType | TokenizedType | EnumeratedType 

StringType ::=  'CDATA' 

TokenizedType ::=  'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'

EnumeratedType ::=  NotationType | Enumeration 

NotationType ::=  'NOTATION' S ' (' S? Name (S? '|' S? Name)* S? ')'

Enumeration ::=  ' (' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'


1) ATTLIST의 기본값

DefaultDecl ::=  '#REQUIRED' |?#IMPLIED' | ( ('#FIXED' S)? AttValue)


- 예제:

<!ATTLIST termdef

id      ID      #REQUIRED

name    CDATA   #IMPLIED>


4. ENTITY (개체) 선언

EntityDecl ::=  GEDecl | PEDecl 

GEDecl ::=  '<!ENTITY' S Name S EntityDef S? '>' 

EntityDef ::=  EntityValue | (ExternalID NDataDecl?) 


- 외부 개체 선언

ExternalID ::=  'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral 

NDataDecl ::=  S 'NDATA' S Name


- 파라미터 개체 선언

PEDecl ::=  '<!ENTITY' S '%' S Name S PEDef S? '>' 

PEDef ::=  EntityValue | ExternalID


- 예제:

+ 문자 선언:

<!ENTITY lt     "<">

<!ENTITY gt     ">">

<!ENTITY amp    "&">

<!ENTITY apos   "'">

<!ENTITY quot   """>


+ 내부 개체 선언:

<!ENTITY author "Lee Keum-mo">


+ 외부 개체 선언:

<!ENTITY ex SYSTEM "ex1.jpg" NDATA jpg>

<!ENTITY tutorial1 SYSTEM "tutorial1.xml">

<!ENTITY HTML.Version PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 


+ 파라미터 개체 선언:

<!ENTITY % content "#PCDATA|body">

<!ENTITY % basic SYSTEM "basic.dtd">



5. 개체 참조

Reference ::=  EntityRef | CharRef

EntityRef ::=  '&' Name ';'

CharRef ::=  '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'

PEReference ::=  '%' Name ';'


1) 사용 

- 예제:

<div> 저자: &author; ... </div>


2) 파라미터 개체 참조

참조: %content; %basic; 처럼 %를 붙여서 사용한다.


- 예제:

<!ELEMENT distribution (reply-to, from, to, cc subject, date, organization)>

를 파라미터 개체를 이용하여 다시 쓰면,

<!ENTITY % addr "reply-to, from, to, cc">

<!ENTITY % auth "subject, date, organization">

<!ELEMENT distribution (%addrl;, %auth;)>



'Tech: > XML·XSL' 카테고리의 다른 글

XMLHTTP 사용시 주의사항  (0) 2008.06.26
DOM(2)  (0) 2008.06.26
DOM(1)  (0) 2008.06.26
XSL 기본문법(1)  (0) 2008.06.26
XML 기본개념  (0) 2008.06.26


Posted by 떼르미
,
반응형


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]