유효한 XML 문서
XML 문법을 성공적으로 확인한 유효한 문서를 "유효한(Valid) 문서"라고 합니다.
특히, 문서가 DTD(Document Type Definition) 또는 XML 스키마를 갖고 있다면, DTD 또는 스키마와 일치해야만 그 문서가 유효하다고 할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE THESIS [
<!ELEMENT THESIS (P*)>
<!ELEMENT P (#PCDATA)>
]>
<THESIS>
<P>
This is my book
</P>
<P>
Pretty good!!
</P>
<P>
So, give me!!
</P>
</THESIS>
기본 문법은 <!DOCTYPE 루트-이름[DTD]>이고 여기서 DTD는 사용하고자 하는 문서의 형식 정의를 의미합니다.
<!ELEMETN>를 통해 각 구성요소에 대한 문법을 지정하고 있습니다.
<THESIS>요소의 내부에 <p>요소만이 존재하고 있다. P옆에 붙어있는 *는 <P>요소는 아예 없거나 여러개를 포함할 수도 있게 하려고 할 때 쓴다.
#PCDATA는 문자 데이터로 순수한 텍스트만 입력할 수 있음을 의미합니다.
문서 형식 선언 만들기
<!DOCTYPE 루트-이름[DTD]> 말고도
<!DOCTYPE 루트-이름 SYSTEM URL>
<!DOCTYPE 루트-이름 SYSTEM URL [DTD]>
<!DOCTYPE 루트-이름 PUBLIC identifier URL>
<!DOCTYPE 루트-이름 PUBLIC identifier URL [DTD]>
등의 형식이 있습니다.
구성요소 선언
DTD에서 구성요소에 대한 문법을 선언하려면 <!ELEMENT>를 <!ELEMENT 이름 내용-모델>의 형식으로 사용합니다.
여기서 "이름"은 선언하고자 하는 구성요소의 이름이며, "내용-모델"은 EMPTY,ANY 등을 저장할 수 있도록 지정합니다.
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT ANY>
]>
<DOCUMETN>
</DOCUMETN>
여기서는 구성요소를 ANY라는 내용 모델로 선언이 되어있네요.
ANY는 선언한 구성요소가 모든 종류의 내용을 저장할 수 있게 할 때 선언해 줍니다.
ANY로 지정하게 되면 XML 검증기는 그 내용을 확인하지 않으므로 좋은 방법이 아니라고 할 수 있습니다.
자식 구성요소 목록
내용모델에 ANY대신, 내부에 포함되는 다른 구성요소의 이름을 괄호에 지정하여 선언할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
]>
<DOCUMENT>
.
.
.
</DOCUMENT>
앞에서 말했듯이 괄호 옆에 *를 붙이면 <DOCUMENT> 구성요소는 아무것도 적지 않거나 여러개의 <CUSTOMER> 구성요소를 포함할 수 있게 됩니다. 그러므로
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
]>
<DOCUMENT>
<CUSTOMER>
.
.
.
</CUSTOMER>
</DOCUMENT>
<DOCUMENT>구성요소는 임의의 <CUSTOMER>구성요소를 포함할 수 있으므로 위 처럼 <CUSTOMER>요소를 추가할 수 있습니다. 그러나 아직 <CUSTOMER>구성요소를 선언하지 않았으므로 이 문서는 유효한 문서가 아닙니다.
'XML' 카테고리의 다른 글
XML - JavaScript 이해하기 (0) | 2012.01.17 |
---|---|
XML - 3# 유효한 문서 DTD 만들기 (0) | 2012.01.17 |
XML - 4# 유효한 문서 DTD 만들기 (0) | 2012.01.17 |
XML - 2# 유효한 문서 DTD 만들기 (0) | 2012.01.17 |
XML - XML의 기본 (0) | 2012.01.17 |