반응형
◆ ID
XML에서는 내부 응용 프로그램에서 구성요소들을 구분하기 위해 ID를 사용합니다.
ID 값은 특별한 의미를 가지므로 XML 처리기는 문서에서 ID형식의 속성값이 같은 두 개의 구성요소가 존재할 수 없다는 것을 알고 있습니다.
속성의 형식을 ID 형식으로 지정하기만 하면 속성의 이름에 관계 없이 ID속성이 됩니다.
그리고 #FIXED 속성은 같은 값을 갖기 때문에 ID 형식에서는 #FIXED를 사용할 수 없고 #REQUIRED를 사용합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
CUSTOMER_ID ID #REQUIRED>
]>
<DOCUMENT>
<CUSTOMER CUSTOMER_ID = "C1232231">
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
CUSTOMER_ID ID #REQUIRED>
]>
<DOCUMENT>
<CUSTOMER CUSTOMER_ID = "C1232231">
.
.
.
</CUSTOMER>
<CUSTOMER CUSTOMER_ID = "C1232232">
.
</DOCUMENT>
<CUSTOMER CUSTOMER_ID = "C1232232">
.
.
.
</CUSTOMER></DOCUMENT>
◆ IDREF
IDREF 형식은 문서의 구조에 대한 내용을 지정하기 위한 속성을 사용하고자 할 때 지정합니다. 특히 구성요소들 사이의 관계에 대한 내용을 지정하기 위해 사용하며 IDREF 속성은 문서의 다른 구성요소에 대한 ID값을 저장합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
CUSTOMER_ID ID #REQUIRED
EMPLOYER_ID IDREF #IMPLIED>
]>
<DOCUMENT>
<CUSTOMER CUSTOMER_ID = "C1232231">
위와 같이 문서의 일반적인 중첩 구조에 반영되어 있지 않은 부모-자식 관계를 설정하고자 하는 경우 구성요소의 IDREF 속성에 부모에 해당하는 구성요소의 ID를 지정합니다.<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
CUSTOMER_ID ID #REQUIRED
EMPLOYER_ID IDREF #IMPLIED>
]>
<DOCUMENT>
<CUSTOMER CUSTOMER_ID = "C1232231">
.
.
.
</CUSTOMER>
<CUSTOMER CUSTOMER_ID = "C1232232" EMPLOYER_ID="C1232231">
<CUSTOMER CUSTOMER_ID = "C1232232" EMPLOYER_ID="C1232231">
.
.
.
</CUSTOMER>
</DOCUMENT>
</DOCUMENT>
XML 처리기는 문서의 ID와 IDREF 구조를 내부 응용 프로그램으로 전달해주고, 응용 프로그램에서는 그 정보를 사용하여 문서의 구성요소 간의 관계를 재구성하루 수 있습니다.
반응형
'컴퓨터&IT > XML' 카테고리의 다른 글
XML - [11] 속성 형식 (Attribute type) (4) ENTITY, ENTITIES (0) | 2011.08.24 |
---|---|
XML - [9] 속성 형식 (Attribute type) (2) NMTOKEN, NMTOKENS (0) | 2011.08.24 |
XML - [8] 속성 형식 (Attribute type) (1) CDATA, 나열형, NOTATION (0) | 2011.08.24 |
XML - [7] 속성에 대한 기본값 지정하기 (0) | 2011.08.24 |
XML - [6] DTD:속성(Attribute) (0) | 2011.08.24 |