반응형

속성에 지정할 수 있는 기본 값의 종류를 살펴보면서, DTD에서 속성을 선언하는 방법을 알아보겠습니다.


◆ 직접적인 값

<!ATTLIST> 구성요소의 속성 선언에서 인용부호에 값을 직접 지정하여 속성의 기본 값을 지정할 수 있습니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [     
.
.
.

<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    OWES CDATA "0"
    LAYAWAY CDATA "0"
    DEFAULTS CDATA "0"
>
]>
<DOCUMENT>
    <CUSTOMER OWES="$12.13" LAYAWAY="$0" DEFAULTS="0">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
.
.
.

</DOCUMENT>


◆ #REQUIRED

기본값을 직정 지정하지 않지만 DTD를 사용하는 사람이 직접 값을 지정해야만 합니다.
문서에서 구성요소에 대한 추가 정보를 필요로 하는 경우에 유용하게 사용할 수 있습니다.
(이름, 이메일 주소, URI 등등)
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
.
.
.

<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
    OWES CDATA #REQUIRED>

]>
<DOCUMENT>
    <CUSTOMER OWES="$0">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
.
.
.

</DOCUMENT>


◆ #IMPLIED

속성의 기본 값으로 지정할 만한 것이 없으며, 문저의 작성자들도 이 속성을 사용할 필요가 없는 경우에 사용합니다.
XML 처리기에서 이 속성이 사용되지 않더라도 문제가 발생하지 않기 때문에 문서 작성자가 이 속성을 포함시킬 수는 있지만 반드시 포함시킬 필요는 없습니다.
속성들을 #IMPLIED로 선언하는 것이 일반적이며 그 이유는 작성자에 따라 그 속성들이 구성요소에 필요할 수도 있고 그렇지 않을 수도 있기 때문입니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
.
.
.

<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
OWES CDATA #IMPLIED>
]>
<DOCUMENT>
<CUSTOMER OWES="$23.99">
<NAME>
.
.
.

</ORDERS>
</CUSTOMER>
<CUSTOMER>
<NAME>
.
.
.

</ORDERS>
</CUSTOMER>
</DOCUMENT>


◆ #FIXED

#FIXED 키워드를 사용하면 속성들이 항상 고정된 값을 갖도록 구성할 수 있습니다. 속성에 대해 고정된 값을 설정해야 하므로 그 값을 지정해 주어야합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
.
.
.

<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
LANGUAGE CDATA #FIXED "EN">
]>
<DOCUMENT>
<CUSTOMER>
.
.
.


</CUSTOMER>


</DOCUMENT>

위 문서에서는 <CUSTOMER>구성요소에 LANGUAGE 속성을 사용하지 않고 있음을 알 수 있는데 속성이 #FIXED로 선언되어 있기 때문에 XML 처리기에서는 상관하지 않고 그 속성과 값을 내부 응용프로그램에 전달하게 됩니다.
만약 지정해 놓은 기본값을 다지 지정하려고 하면 XML 처리기는 오류를 발생합니다.
반응형

+ Recent posts